Linux文件系统
1.系统目录的基本结构
以Centos为例,系统的基本目录如下:
其中说一下几个比较重要的:
1./:/就是系统的根目录
2.bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令,linux执行命令的时候,会在这个目录里面找。
3.home:用户的目录,每个用户有自己的文件夹
4.root:系统管理员的用户目录
5./usr:usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
6./usr/bin:系统用户的应用程序软件。/bin里面存放着系统的一些常用指令,而/usr/bin里面则存放着用户安装的软件的指令。如果是用户安装的软件命令,需要在/usr/bin目录里创建软连接才可以正常使用命令。
7./sbin和/usr/sbin:同样是用来存放命令的,但是其中的命令只有系统管理员,也就是root用户可以使用
2.cd命令
Linux cd(英文全拼:change directory)命令用于切换当前工作目录。
其中 dirName 表示法可为绝对路径或相对路径。若目录名称省略,则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。
另外,~ 也表示为 home 目录 的意思, . 则是表示目前所在的目录, .. 则表示目前目录位置的上一层目录。
其基本语法为:
cd [dirName]
例如 cd /usr/bin 可以移动到usr/bin目录下
3.ls命令
Linux ls(英文全拼:list files) 用于显示指定目录下的文件和文件夹,其语法及参数为:
ls [-alrtAFR] [name...] 参数 : -a 显示所有文件及目录 (. 开头的隐藏文件也会列出) -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 -r 将文件以相反次序显示(原定依英文字母次序) -t 将文件依建立时间之先后次序列出 -A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录) -F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/" -R 若目录下有文件,则以下之文件亦皆依序列出(递归)
这里主要说一下ls -l(亦可简写为ll)命令,用该命令可以显示文件的详细信息,如:
drwxr-xr-x 7 lighthouse lighthouse 4096 May 20 16:04 data
字段1表示权限,r为可读,w为可写,x为可执行,开头的d表示这是一个目录。权限分为三个,分别为创建者的权限、同组用户的权限、其他用户的权限。上述内容中,他们的权限分别为rwx、rx、x(-表示没有对应的权限)
字段2表示文件的硬链接数量
字段3表示文件的所有者
字段4表示所属用户组
字段5表示大小(单位byte)
字段6表示修改时间
字段7表示文件名
4.文件的权限
更改文件权限
上面说到了可以使用ls -l命令来查看文件的权限,那么如何修改权限和所有者呢?
修改文件权限需要使用chmod命令,例如:
chmod -R 777 data 递归修改data目录下所有文件的权限 chmod 777 t 修改文件t的权限
其中三个八进制数分别表示创建者的权限、同组用户的权限、其他用户的权限。权限顺序为rwx,用二进制的1表示开放该权限,0表示关闭该权限。例如只开放读取权限,则是二进制100,转化为八进制就是4,而三个权限同时开放,即111,转化为八进制就是7,所以7代表开放所有权限。
r=4,w=2,x=1
若要rwx属性则4+2+1=7;
若要rw-属性则4+2=6;
若要r-x属性则4+1=5
更改所有者和用户组
chown 拥有者名字 文件名 更改所有者 chgrp 用户组名字 文件名 更改用户组 同样的可以使用-R参数来对文件夹内所有文件进行递归修改
ch(change) own(owner) grp(group)
5.文件的复制、移动、删除
复制:
cp 源文件或目录 目标目录
使用参数-r,可以将一个文件夹内的文件递归复制到目标目录里
移动:
移动使用mv命令,但是mv命令也可以用来对文件进行重命名,所以稍微复杂一点
mv [options] source dest mv [options] source... directory 参数说明: -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。 -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。 -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。 -n: 不要覆盖任何已存在的文件或目录。 -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
如果两个参数都是文件,表示把源文件改为新的文件名
如果第一个参数是文件,第二个参数是目录,表示把文件移动到新的目录中
如果两个参数都是目录,则:若第二个目录存在,则将源目录中的文件移动到新目录中。如不存在,则对源目录重命名。
删除:
删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如: # rm test.txt rm:是否删除 一般文件 "test.txt"? y # rm homework rm: 无法删除目录"homework": 是一个目录 # rm -r homework rm:是否删除 目录 "homework"? y 删除当前目录下的所有文件及目录,命令行为: rm -r *
6.创建目录
创建目录使用mkdir命令(make directory)
mkdir [-p] dirName 在当前目录下创建一个目录 若给出的是一个路径,则上级目录不存在时会报错。加入参数-p之后可以按照给出的路径依次创建目录
7.硬链接与软链接
Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。一般来说,软链接的应用场景会更广泛,软链接就像快捷方式,可以从这台电脑上的任何位置链接到目标。相较于硬链接,软链接可以跨越文件系统,也可以对目录创建软链接。不论是硬链接或软链接都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。
要创建软链接需要使用ln命令(link file):
ln [参数][源文件或目录][目标文件或目录] 其中 -s 表示创建符号链接(Symbol)即软链接 例如: ln -s /usr/local/python3/bin/python3 /usr/bin/python 可以将安装的python软链接到usr/bin里,这样就可以使用python命令了