Linux: 文件系统
Bash Shell命令
Bash Shell是大多数Linux发行版的默认shell,对于绝大多数命令都可以通过man命令查看详细用法和选项
root用户
区别于Windows系统的Administrator用户和更复杂的权限机制,在Linux中,root(超级管理员用户)具有最高的权限,可以调度系统的所有东西,结构上十分简单,但使用时更需慎重
默认情况下,root用户是锁定的,如果需要暂时使用root的权限:
1 | sudo cat /etc/sudoers # 查看被允许使用sudo命令的用户,只有root权限可查看 |
需要反复强调的是,平常开发几乎用不上root权限,短暂需要使用也应使用后尽快exit;不像Windows系统,Linux系统的软件运行时很少要求root权限,这让用户增加戒心而非像使用Windows一样无脑授权
开发中,应清楚知道自己在干什么,知道为什么一定要用sudo,并尽量少用它
选择包管理工具
有两种选择:apt-get与apt,后者被视为前者的加强版,是apt-cache和apt-get的集合,最好不要尝试其它包管理工具,否则可能扰乱apt的数据库,使一些命令变成危险操作
apt获取软件资源的仓库位于/etc/apt/sources.list中,如果要修改,记得小心、备份
它们都需要管理员权限,常用命令如下:
1 | sudo apt update # 列出可更新软件名单 |
文件系统
区别于Windows系统的盘符分区,Linux采取的是让根目录/作为所有文件或目录的祖宗路径,将所有文件纳入单个虚拟目录结构中,文件路径中没有指示其所在驱动器的信息
但硬盘驱动器不会只有一个,一般装载着系统文件的驱动器为根驱动器,在其它驱动器的文件会通过挂载点与根驱动器联系起来
路径分为绝对路径和相对路径,形如./path和../path路径前带点的路径即相对路径,分别表示相对当前目录下和相对于上级目录下,可以用多个../来跳转到更上级目录
关于文件的常用命令如下:
1 | touch <file> # 若文件不存在,则创建它 |
关于目录的常用命令如下:
1 | cd <dir> # 跳到指定路径下 |
有些命令对文件与目录都有效:
1 | cp <file> <file>/<dir> |
文件权限
输入ls -al,可以看到文件和目录的一长串信息,其中头部内容就是该条文件的权限,它含有10个字符:
第一个字符代表文件类型,常见的有l、d、-三种,分别对应软链接文件、目录、普通文件
其余九个字符每三个为一组,分别对应属主权限(u,user)、属组权限(g,group)、其它用户权限(o,other)
三个字符r、w、x,分别对应可读、可写、可执行
关于权限的常用命令如下:
1 | chmod <paras> <file> # 改变文件模式 |
Linux系统不同组会有不同权限,我们创建的第一个用户属于sudo组,有些发行版会为该用户创建一个独立的组,该用户创建的文件属于这个组,而通过sudo命令创建的文件又属于root组…
这种复杂灵活的机制让Linux在共享资源时保持有序、安全,关于组的常用命令如下:
1 | sudo groupadd # 创建组,和addgroup差不多 |
用户分为系统用户和普通用户,系统用户是某些服务运行时所用的账户,系统一般会预留500或1000个UID给它们(即普通用户UID会从500或1000开始数)
从未改变默认值的默认创建下,新用户将被分配到GID=100的公共组、不会为其设置过期日期
一个用户只能有一个主要组,可以有多个附属组,登录时属于主要组,可通过命令切换到其它所属组
关于用户的常用命令如下:
1 | cat /etc/passwd # 查看所有用户的信息,它们储存在/etc/passwd中 |
无论是在/etc/group还是在/etc/passwd,出于安全因素,里面的密码字段都是'x',真正的密码储存在/etc/shadow内,只有root用户有权限查看与修改,更改密码的命令如下:
1 | passwd <user> # 修改用户密码 |
链接
如果多个项目需要使用相同文件,为了节省空间、或是方便管理与维护,Linux提供了链接功能
链接分为软链接与硬链接:
- 软链接(也称符号链接):类似快捷方式,在软链接文件中存放的是源文件的路径,故占用空间小
- 硬链接:将创建一个虚拟文件,其本质上与源文件是同一个文件,共用同一个
iNode,指向同一份数据块,即占用同一份空间
无论是软链接还是硬链接,通过链接文件都可以修改源文件的内容,区别是:
- 删除掉软链接的源文件,则所有指向该源文件的软链接均失效;但如果创建了另外的、同路径的文件,则这些软链接又会指向这个新文件
- 只有删除掉全部的硬链接,它们的源文件才会从磁盘中释放掉
需要注意的是,硬链接不能对目录使用,也不能在不同文件系统间使用;而由于软链接存储的是路径,所以通常不应使用相对路径,否则容易失效
关于链接的常用命令如下:
1 | ln <file1> <file2> # 给file1,file2创建硬链接;file1为源文件,必须存在 |
如要删除链接目录,需要十分小心,假设我们有源目录/tmp和链接目录/link->/tmp:
1 | rm ~/link/ # 删除/tmp,即源目录的所有文件,链接目录本身会保留 |