文件与目录操作
注:文件管理是操作系统的重要功能。在Linux中所有的软硬件资源都被认为是特殊文件。
1. ls指令:显示目录内容
- 语法:ls [选项] [参数]
- 功能:用来显示目录列表
- 注意:具有较高使用率
- 常用例子:
(1)选项:-a,功能:显示包括隐藏文件(文件名以”.”开头)在内的所有文件。
(2)选项:-C,功能:多列显示输出结果(默认选项)
(3)选项:-i,功能:显示文件的索引节点号(inode),一个索引节点代表一个文件。
(4)选项:-l,功能:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名、文件类型、权限模式、硬链接数、所有者、组、文件大小和文件的最后修改时间等。
(5)选项:-m,功能:以水平方式显示文件(每个文件之间用“,”和一个空格隔开),以达到每行显示尽可能多的文件数。
(6)选项:-R,功能:递归显示目录下的所文件列表和子目录列表。
(7)参数:目录,功能:指定要显示列表的目录,也可以是具体的文件。
2. cd指令:将当前工作目录切换到指定目录
- 语法:cd [选项] [参数]
- 功能:用来切换用户的当前工作目录
- 注意:默认情况下,单独使用cd指令,将切换到用户的宿主目录(由环境变量“HOME”定义)
- 常用例子:
(1)选项:为空,功能:返回用户的宿主目录。
(2)选项:..,功能:返回用户的上一级目录。
(3)选项:/,功能:返回用户的根目录。
(4)选项:-,功能:返回用户上一次的工作目录,即当前工作目录将被切换到环境变量“OLDPWD”所表示的目录。
(5)参数:目录,功能:指定要切换的目标目录。
3. cp指令:复制文件或目录
- 语法:cp [选项] [参数]
- 功能:用来将一个或者多个源文件或者目录复制到指定的目标文件或目录
- 注意:可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下
- 常用例子:
(1)选项:-a,功能:保持源文件的原有结构和属性,与选项“-dpR”的功能相同。
(2)选项:-f,功能:强制覆盖已经存在的目标文件,而不提示用户进行确认。为防止覆盖重要文件,通常不适用此选项。
(3)选项:-i,功能:在覆盖已经存在的目标文件前提示用户进行确认。可以防止覆盖重要文件。
(4)选项:-p,功能:复制文件时保持文件的所有者、权限信息和以及时间属性。
(5)选项:-R/-r,功能:对目录进行复制操作,此选项以递归的操作方式,将指定目录及其子目录中的所有文件复制到指定的目标目录。
(6)选项:-v,功能:详细显示指令执行的操作。
4. mv指令:移动文件或改名
- 语法:mv [选项] [参数]
- 功能:用来移动文件或为文件改名
- 注意:具有较高使用率
- 常用例子:
(1)选项:-b,功能:当目标文件存在时,覆盖前为其创建一个备份。
(2)选项:-f,功能:在覆盖已存在的目标文件前不提示用户进行确认。为防止覆盖重要文件,通常不适用此选项。
(3)选项:-i,功能:在覆盖已存在的目标文件前提示用户进行确认。防止覆盖重要文件。
5. pwd指令: 打印当前工作目录
- 语法:pwd [选项]
- 功能:以绝对路径的方式显示用户当前工作目录
- 注意:具有较高使用率
- 常用例子:
(1)指令:pwd,功能:显示当前工作目录。
6. rm指令: 删除文件或目录
- 语法:rm [选项] [参数]
- 功能:用于删除给定的文件和目录
- 注意:具有较高使用率
- 常用例子:
(1)选项:-f,功能:强制执行删除操作,而不提示用户进行确认,此选项容易造成误操作,要慎用。
(2)选项:-i,功能:在执行删除操作前提示用户进行确认,防止用户的误操作。
(3)选项:-R/-r,功能:对目录进行删除操作,此选项以递归的方式删除目录及目录下的所有内容。
(4)选项:-v,功能:详细显示指令执行的操作。
7. rmdir指令:删除空目录
- 语法:rmdir [选项] [参数]
- 功能:用于删除空目录
- 注意:只能删除空目录,否则报错
- 常用例子:
(1)选项:-p/-parents,功能:用递归的操作方式删除指定的目录路径中的所有父级目录。要求路径中出现的目录中没有普通文件,否则导致出错。
(2)选项:-v,功能:详细显示指令执行的操作。
8. chgrp指令:改变文件所属工作组
- 语法:chgrp [选项] [参数]
- 功能:用于改变文件和目录所属的工作组
- 注意:需要被改变的组名必须要在/etc/group文件内存在才行,修改文件或目录所属工作组时,使用组ID可以达到与使用组名相同的效果。
- 常用例子:
(1)选项:-c,功能:显示文件所属组的改变。
(2)选项:-v,功能:显示指令的详细执行过程。
(3)选项:-R,功能:用递归的方式,修改指定目录及其目录下所有子目录和文件所属工作组。
9. chmod指令:改变文件访问权限
- 语法:chmod [选项] [参数]
- 功能:用于改变指定文件的权限
- 注意:在chmod指令中权限支持字符标记法和数字标记法两种。
(1)数字标记法:表示的权限模式是4个八进制数,每个数由位权为4、2、1的3个八进制数相加得到。
(2)字符标记法:表示权限模式的语法格式为[ugoa][[+-=][rwxSstugo]]。 命令参数位说明表:命令参数位一共有4位具体如下” −(命令参数位1):−−−(命令参数位2):−−−(命令参数位3):−−−(命令参数位4) − ( 命 令 参 数 位 1 ) : − − − ( 命 令 参 数 位 2 ) : − − − ( 命 令 参 数 位 3 ) : − − − ( 命 令 参 数 位 4 ) ”,命令参数位字符枚举如下”{d,l,-,p}:{r,w,x}{r,w,x}{r,w,x}:{r,w,x}{r,w,x}{r,w,x}:{r,w,x}{r,w,x}{r,w,x}”
命令参数位 命令参数位描述 第1位( − − ,filetype) 表示文件类型 d:目录文件、l:链接文件、-:普通文件、p:管道 第2位(,u(user)) 表示文件的拥有者所具有的权限,权限字符枚举r(read)、w(write)、x(execute) ,组合类型共8种: −−− − − − 、 −−x − − x 、 −w− − w − 、 −wx − w x 、 r−− r − − 、 r−x r − x 、 rw− r w − 、 rwx r w x 第3位( −−− − − − ,g(group)) 表示文件的所属群组所具有的权限,权限字符枚举r(read)、w(write)、x(execute) ,组合类型共8种: −−− − − − 、 −−x − − x 、 −w− − w − 、 −wx − w x 、 r−− r − − 、 r−x r − x 、 rw− r w − 、 rwx r w x 第4位( −−− − − − ,o(others)) 表示文件的其他用户所具有的权限,权限字符枚举r(read)、w(write)、x(execute),组合类型共8种: −−− − − − 、 −−x − − x 、 −w− − w − 、 −wx − w x 、 r−− r − − 、 r−x r − x 、 rw− r w − 、 rwx r w x 权限字符及其对应数字的描述说明表
权限字符描述 权限数字描述 −−− − − − 0 −−x − − x 1 −w− − w − 2 −wx − w x 3 r−− r − − 4 r−x r − x 5 rw− r w − 6 权限设置的用户类别描述说明表
用户类别缩写 用户类别说明 u(user) 文件的拥有者 g(group) 文件的所属群组 o(others) 文件的其他用户 a(all) 所有用户,包括了u、g、o 权限的操作符说明表
权限的操作符 权限的操作符说明 + 表示在文件原来权限的基础上添加指定的权限 - 表示在文件原来权限的基础上去除指定的权限 = 表示不考虑文件原来的权限,将文件的权限设置为指定的权限 权限设置的用户类别描述说明表
用户类别缩写 用户类别说明 u(user) 文件的拥有者 g(group) 文件的所属群组 o(others) 文件的其他用户 a(all) 所有用户,包括了u、g、o 常用权限值说明表
权限值 权限值说明 − − −−− − − − −−− − − − (600) 只有属主有读写权限 − − r−− r − − r−− r − − (644) 只有属主有读写权限,而属组用户和其他用户只有读权限 − − rw− r w − rw− r w − (666) 所有用户都有文件读、写权限,这种做法不可取 − − −−− − − − −−− − − − (700) 只有属主有读、写、执行权限 − − −−x − − x −−x − − x (711) 只有属主有读、写、执行权限,而属组用户和其他用户只有执行权限 − − r−x r − x r−x r − x (755) 只有属主有读、写、执行权限,而属组用户和其他用户只有读、执行权限 − − rwx r w x rwx r w x (777) 所有用户都有读、写、执行权限,这种做法更不可取 常用例子:
(1)选项:-c,功能:显示文件权限的变化。
(2)符号:=,功能:使用等号为文件赋予全新的权限。
(3)选项:-R,功能:以递归的操作方式改变指定目录及目录下所有子目录和文件的权限。
10. chown指令:改变文件的所有者和所属工作组
- 语法:chown[选项] [参数]
- 功能:用于改变文件的所有者和所属工作组
- 注意:若参数中只提供用户名,那么文件所属的工作组不发生任何变化
- 常用例子:
(1)选项:-c,功能:显示文件的所有者或所属工作组的变化。
(2)选项:-v,功能:显示指令的详细执行过程。
(3)选项:-R,功能:以递归的操作方式改变指定目录及目录下所有内容的所有者和所属工作组。
11. find指令:查找文件并执行指定的操作
- 语法:find[选项] [参数]
- 功能:用于在指定目录下查找文件,并对查找到的文件执行指定的操作
- 注意:使用find指令时,必须指定一个查找的其实目录
- 常用例子:
(1)选项:无,功能:不带任何选项和参数的find指令可以打印当前目录下的所有内容,包括所有子目录下的文件列表。
(2)选项:-name,功能:按照指定的文件名查找模式查找文件。
(3)选项:-empty,功能:查找文件大小为0的目录或文件。
(4)选项:-exec 指令名称 {} \,功能:用指定的Linux指令操作查找到的文件,”{}”表示将查找到的文件作为Linux指令的参数,”\”是固定字符,放在find指令的最后,提示用户进行确认。
(5)选项:-ls,功能:详细列出查找到的文件。
12. ln指令:为文件创建链接
- 语法:ln[选项] [参数]
- 功能:用于为文件创建链接,链接类型分为硬链接(hard link)和符号链接(symbolic link)两种
注意:ln指令默认创建的链接类型是硬链接,所以不能对目录建立链接,要为目录建立链接必须是通过创建符号链接完成,而创建符号链接则必须使用“-s”选项
硬链接与软链接(即符号链接)的区别
链接类型 链接说明 硬链接 软连接 - 常用例子:
(1)选项:-s,功能:创建符号链接,如果系统不支持符号链接,则导致命令出错。
13. mkdir指令:创建目录
- 语法:mkdir[选项] [参数]
- 功能:用于创建目录
- 注意:指定要创建的目录列表,多个目录之间可以用空格隔开
- 常用例子:
(1)选项:无,功能:创建目录列表,即多个目录。
(2)选项:-p,功能:创建给定路径中缺少的中间目录。
14. whereis指令:显示指令及相关文件的路径
- 语法:whereis[选项] [参数]
- 功能:用于定位指令的二进制程序、源代码文件和man手册页等相关文件的路径
- 注意:其他的普通文件使用locate指令定位,要仅显示指令的绝对路径则使用which指令
- 常用例子:
(1)选项:-b,功能:仅查找二进制程序或命令。
(2)选项:-m,功能:仅查找man手册文件。
(3)选项:-s,功能:仅查找源代码文件。
15. which指令:显示指令的绝对路径
- 语法:which[选项] [参数]
- 功能:用于查找指令的绝对路径,环境变量PATH中保存了查找指令时需要变量的目录
- 注意:因为which是基于环境变量PATH查找路径信息,所以PATH设置务必正确
- 常用例子:
(1)选项:-a,功能:显示查找到的所有文件的路径信息,默认不加此选项,仅显示第一个。
16. file指令:探测文件类型
- 语法:file[选项] [参数]
功能:用于探测文件的类型,可输出的文件类型有3类,具体如下:
文件类型 文件说明 text 文件中只有ASCII玛字符,可以将字符终端显示文件内容 executable 文件是可以运行的 data 其他类型文件,一般是二进制文件或不能在字符终端上直接显示的文件 - 注意:file指令对文件的检查过程分为3步,一是文件系统检查、二是魔幻数检查、三是语言检查
- 常用例子:
(1)选项:-b,功能:输出信息使用精简格式,不输出文件名。
(2)选项:-f,功能:从指定文件中读取需要检查文件类型的所有文件列表。
17. touch指令: 设置文件的时间属性
- 语法:touch[选项] [参数]
- 功能:一是用于更改文件的时间属性,将文件的最后访问时间和最后修改时间设置为系统的当前时间,二是用于创建新的空文件
- 注意:可以同时创建大量的空文件
- 常用例子:
(1)选项:-r,功能:将指定文件的时间属性设置为与指定的模板文件的时间属性相同。
(2)选项:-t,功能:用指定的时间设置给指定文件的时间属性,指定时间的格式为MMDDhhmm[[CC]YY][.ss](月、日、时、分、世纪、年、秒)。
(3)选项:-a,功能:仅将指定文件的最后访问时间设置为当前系统时间。
(4)选项:-m,功能:仅将指定文件的最后修改时间设置为当前系统时间。
(5)选项:*,功能:将当前目录下的所有文件的时间属性设置为当前系统时间。
(6)选项:文件名,功能:创建一个新的空文件。
(7)选项:文件名{后缀_1, 后缀_2,……,后缀_n},功能:批量创建新的空文件。
18. locate/slocate指令:快速定位文件的路径
- 语法:locate/slocate[选项] [参数]
- 功能:利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
- 注意:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库,搜索速度比find指令要快
- 常用例子:
(1)选项:-c,功能:不将文件名称输出到终端上,而只是显示符合条件的文件数目。
(2)选项:-d,功能:指定存放locate数据库的目录。
19. dd指令:复制文件并进行内容转换
- 语法:dd[选项] [参数]
- 功能:用于复制文件并对原文件的内容进行转换和格式化处理
- 注意:可以被用来制作软盘或者光盘的映像文件
常用例子:
(1)选项:if=<输入文件>,功能:从指定文件中读入信息,如果不指定“if”选项,则从标准输入设备读入信息。
(2)选项:of=<输出文件>,功能:指定输出文件,如果不指定“of”选项,则输出到标准输出设备。
(3)选项:conv=<关键字_1,关键字_2,……,关键字_n>,功能:将文件按指定关键字的方式转换。关键字 描述 ascii 将ebcdic码转换成ascii码 ebcdic 将ascii码转换成ebcdic码 ibm 将ascii码转换成alternative ebcdic码 block 每一行输入信息,无论长短,输出都是选项cbs指定的字节数,并且其中的“换行”用空格替换,如果有必要,行尾填充空格 unblock 用“换行”替换每个输入块(由选项cbs设定字节数)末尾的空格 lcase(常用) 将大写字母转换成小写字母 ucase(常用) 将小写字母转换成大写字母 swab 交换每对输入字节,如果读入的字节数是奇数,最后一个字节只有简单的复制到输出 noerror 当读取信息发生错误时,仍然继续进行 notrunc 对输出文件不进行截断操作 sync 用0填充每个输入块的末尾,使其大小为选项ibs的值
(4)选项:制作光盘的ISO映像文件,功能:把光盘的设备文件作为dd指令的输入文件(if),将要生成的ISO映像文件作为dd指令的输出文件(of),dd指令自动完成工作。
(5)选项:制作软盘映像文件,功能:把软盘的设备文件作为dd指令的输入文件(if),将要生成的软盘映像文件作为dd指令的输出文件(of),dd指令自动完成工作。
20. updatedb指令:创建或更新slocate数据库
- 语法:updatedb[选项] [参数]
- 功能:用于创建或更新locate指令所必须的数据库文件
- 注意:第一次执行updatedb指令的运行速度比较慢,是由于要创建当前操作系统中所有文件信息的数据库
- 常用例子:
(1)选项:-U,功能:更新指定目录的locate数据库。
(2)选项:-v,功能:显示指令执行的详细过程。
21. dirname指令:去除文件名中的非目录部分
- 语法:dirname[选项] [参数]
- 功能:用于去除文件名中的非目录部分,仅显示与目录有关的内容
- 注意:通常应用在shell脚本中,以得到文件名中的目录信息
- 常用例子:
(1)选项:文件名,功能:仅获得除文件名外的目录信息。
22. pathchk指令:检查文件路径名的有效性和可移植性
- 语法:pathchk[选项] [参数]
- 功能:用于检查文件名中不可移植的部分
- 注意:仅用于测试路径的可移植性,其参数可以是无效路径
- 常用例子:
(1)选项:-p,功能:检查大多数的POSIX系统。
(2)选项:-P,功能:检查空名字和以“-”开头的文件。
23. unlink指令:调用unlink系统调用删除指定文件
- 语法:unlink[选项] [参数]
- 功能:使用系统调用函数unlink去删除指定的文件
- 注意:一是仅能删除普通文件,不能删除目录;二是没有类似rm指令的“-i”选项,所以无法防止误删,在使用时加倍小心
- 常用例子:
(1)选项:文件名,功能:删除普通文件。
24. basename指令:去掉文件名中的路径和后续
- 语法:basename[选项] [参数]
- 功能:用于显示删除文件路径信息和文件后缀后的文件名
- 注意:一是当参数“后缀”被省略时,只删除文件路径信息,保留文件后缀;二是通常应用在shell脚本中,以得到文件名中的名称信息
- 常用例子:
(1)选项:文件名,功能:仅获得文件名中的名称信息。
25. rename指令:批量为文件改名
- 语法:rename[选项] [参数]
- 功能:用字符串替换的方式批量改变文件名
- 注意:在进行替换时需要需要使用shell通配符以匹配文件名
- 常用例子:
(1)选项:原字符串 目标字符串 文件,功能:批量修改文件名。
参考文献:
[1]《Linux指令范例速查手册(第2版)》第1章
[2] 百度搜索关键字:ls、cd、cp、mv、pwd、rm、rmdir、chgrp、chmod、chown、find、ln、mkdir、whereis、which、file、touch、locate/slocate、dd、updatedb、dirname、pathchk、unlink、basename、rename