![Linux操作系统案例教程(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/233/30241233/b_30241233.jpg)
3.3 案例2:文件内容操作命令
【案例目的】通过本节的学习,能够掌握文件内容的查看命令并熟练掌握各个命令的特点及使用方法。
【案例内容】
1)在根目录(/)下新建目录test和test1,把/etc/passwd分别复制到/test1与/test下,并分别改名为file1与file。
2)查看file1文件的前两行与最后两行,并记录。
3)查看/etc/目录下的文件,并记录前两个文件的文件名。
4)查看/etc/目录中所有的文件中包含有sys字母的文件并记录。
5)把/test/file文件建一个软链接文件file.soft到/test1中,并查看。
6)在/etc/passwd中查找包含user的用户。
【核心知识】学习查看文件内容的6个命令和查找文件的命令。
3.3.1 显示文本文件内容命令
1.cat命令
该命令的主要功能是用来显示文件,依次读取其所指文件内容并将其输出到标准输出设备上。还可以用来连接多个文件,形成新的文件。
该命令的格式为:
cat [选项] 文件名
常用选项含义如下。
●-n:由1开始对所有输出的行数编号。
●-b:与-n相似,所不同的是对空白行不编号。
●-s:当遇到有连续两行以上的空白行时,就代换为一行空白行。
●-v:用一种特殊形式显示控制字符,LFD与TAB除外。
●-E:在每行的末尾显示一个$符。该选项须要与-v选项一起使用。
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/077.jpg?sign=1734463187-cMB9uIPLGAoE7c5YoWKHFmpUZPkKHzFL-0-f4cb40c34815626c0328c9619bb25e9b)
2.more命令
该命令的功能是分页显示文件内容。适合显示长文件清单或文本清单,可以一次一屏或一个窗口地显示,基本指令就是按空格键往下一页显示(或按〈Enter〉键显示下一行),按〈Q键退出more,不能回翻。
该命令格式为:
more [选项] 文件名
●-num:一次显示的行数。
●-d:提示使用者,在画面下方显示[press space to continue,q to quit]。
●-f:计算行数时,以实际上的行数,而非自动换行后的行数。
●-p:不以卷动的方式显示每一页,而是先清屏后在显示内容。
●-c:与-p类似,不同的是先显示内容,再清除其他旧资料。
●-s:当遇到有两行以上的连续空白行时,就代换为一行空白行。
●+num:从第num行开始显示。
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/078.jpg?sign=1734463187-uY2NquOqu6mgsIeSYzWisY3E3oS6X4Tw-0-66db0993e86c0f16672dd585d76c13d7)
3.less命令
该命令的功能与more基本相同,不同之处是less允许往回卷动已经浏览过的部分,同时less并未在一开始就读入整个文件,因此,打开大文件的时候,它会比一般的文本编辑器快可使用〈Page Up〉键和〈Page Down〉键向前或向后翻阅文件,按〈Q〉键退出。
该命令的格式为:
less [选项] 文件名
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/079.jpg?sign=1734463187-WkZPEpghobRdBYRaNjiMc3AOVL8Gv0To-0-7b5b788c5a516c5199dafc078b4fe083)
4.head命令
该命令的功能是只显示文件或者标准输入的头几行内容。默认值是10行。可以通过指定一个数字选项来改变显示的行数。
该命令的格式为:
head-n 文件名
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/080.jpg?sign=1734463187-38IESdeJzpXexrhSbAZSuPXZmG5LmwzT-0-6426daf1d4b57d838cb235934fe74c9f)
5.tail命令
该命令的功能和head命令的功能正好相反。使用tail命令可以查看文件的后10行。这有助于查看日志文件的最后10行来阅读重要的系统信息。还可以使用tail来观察日志文件被更新的过程,使用-f选项,tail就会自动实时地打开文件中的新消息并显示到屏幕上。
选项:
●+num:从第num行以后开始显示。
●−num:从距文件尾num行处开始显示。若省略,系统默认为10。
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/082.jpg?sign=1734463187-2RfgCCqoprMp5jxbFW12etqQqUeyFPfQ-0-bee640fb691b2aa9e361052d3d86f566)
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/083.jpg?sign=1734463187-eIs7FbpbQMLMY3C2lESlxSUv4f4qltnB-0-152d45a58effe8b5a3be60eb14c95b0d)
6.cut命令
该命令用于显示每行从num1到num2之间的字符。其使用格式:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/084.jpg?sign=1734463187-NqwxqWJUvYA2rWNFjYqp8mEt0BK6mAX2-0-283de60afc0006baf4eb7a7c04881164)
●-c:显示num1到num2个字符
●-b:显示num1到num2个字节
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/085.jpg?sign=1734463187-INOJ35y8gBRcXgKCG4CwBfCELvMwznSI-0-4f8f157dc6807a6386b2a12a8c2b7f23)
案例分解1
1)在根目录(/)下新建目录test,test1,把/etc/passwd分别复制到/test1与/test下,并分别改名为file1与file。
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/086.jpg?sign=1734463187-DEt50jv3opNJZRV6ntOi0Qyt47uqme0Q-0-28f23520f3bc448636c1084dfe9d8210)
2)查看file1文件的前两行与最后两行,并记录
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/087.jpg?sign=1734463187-113tsdShguKeQMS1iG1nKYMzzCCka0HA-0-570d5349a66aab1692aaac993d7226c6)
3)查看/etc/目录下的文件,并记录前两个文件的文件名。
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/088.jpg?sign=1734463187-8iIdhvvMVqTmCTs9GvkN8tqup4089FnI-0-a2173009859d5c04b3f5e4aa0b14d77c)
3.3.2 查找文件命令
查找文件使用find命令。该命令的功能是在指定的目录开始,递归地搜索各个子目录,查询满足条件的文件并对应采取相关的操作。此命令提供了非常多的查询条件,功能非常强大。
find命令提供的寻找条件可以使用一个由逻辑运算符not、and、or组成的复合条件,逻辑运算符not、and、or的含义如下。
●and:逻辑与,在命令中用“-a”表示,是系统默认的选项,表示只有当所给的条件都满足时,寻找条件才满足。
●or:逻辑或,命令中用“-o”表示,该运算符表示只要当所给的条件有一个满足时,寻找条件就满足。
●not:逻辑非,命令中用“!”表示,该运算符表示查找不满足所给条件的文件。该命令的格式为
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/089.jpg?sign=1734463187-MGDK8xJRwFhuRybCArcsDH8JA7K6KLNj-0-e749a41f3c3d2ec4cb947220b00d94e3)
参数含义如下。
●-name:文件名,表示查找指定名称文件。
●-lname:文件名,查找指定文件所有的链接文件
●-user:用户名,查找指定用户拥有的文件。
●-group:组名,查找指定组拥有的文件。
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/090.jpg?sign=1734463187-fZkbrISJLij0VpC6hfXSjVZYbMGdmMt4-0-de8315036a36a83ea04b956a711bd636)
提示:
通配符“*”表示一个字符串,“?”只代表一个字符。它们只能通配文件名或扩展名,不能全部都表示。
案例分解2
4)查看/etc/目录中所有的文件中包含有sys字母的文件
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/091.jpg?sign=1734463187-qS8U5zQIgq3crTBGzoyDPcoG5OWNBmJ7-0-b91fb193a9a64361a42833518b38c0b1)
5)为/test/file文件建一个软链接文件file.soft到/test1中,并查看
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/093.jpg?sign=1734463187-egI8gib3NFzCOEigRmkkEFHc9pmrD7vy-0-68654268e4461d31f19cf33d4851eb4f)
3.3.3 文件内容查询命令
该组命令以指定的查找模式搜索文件,通知用户在什么文件中搜索与指定的模式匹配的字符串,并且打印出所有包含该字符串的文本行。在该文本行的最前面是该行所在的文件名
1.grep命令
grep命令的功能是以指定的查找模式搜索文件,通知用户在什么文件中搜索与指定的模式匹配的字符串,并且打印出所有包含该字符串的文本行。该文本行的最前面是该行所在的文件名。
该命令的格式为:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/094.jpg?sign=1734463187-jKCCoPxM9TyTj7qSpEDyxRPvRA2CMg57-0-37dbbc1adb6cad7685cd3536825d2280)
常用选项有如下几个。
●-i:查找时忽略字母的大小写。
●-l:仅输出包含该目标字符串文件的文件名。
●-v:输出不包含目标字符串的行。
●-n:输出每个含有目标字符串的行及其行号。
不带选项表示查找并输出所有包含目标字符串的行
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/095.jpg?sign=1734463187-YwXwD43P2PNUhJyQz17AbKQsp9v2iNZB-0-ba6bc43639ccccdb54d0efb30a6c3092)
案例分解3
6)在/etc/passwd中查找user的用户
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/096.jpg?sign=1734463187-Fhi5DlInPiLWnxi2vkpNPjlOLiKPMisz-0-058af46981bb8f8bd03e1830255eba2f)
2.egrep命令
egrep命令的功能是检索扩展的正则表达式。
该命令的格式为:
grep[选项] 文件名1,文件名2,…,文件n
常用选项有如下几个。
●-i:查找时忽略字母的大小写。
●-l:仅输出包含该目标字符串文件的文件名。
●-v:输出不包含目标字符串的行。
●-n:输出每个含有目标字符串的行及其行号。
不带选项表示查找并输出所有包含目标字符串的行
例如:
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/097.jpg?sign=1734463187-if8kSrq7ns8lhPHXalwZM1rF33zPrMAV-0-edea584ef8bb17d8bd2c5e80ba3c84df)
3.fgrep命令
fgrep命令检索固定字符串,并不识别正则表达式,是一种更为快速的搜索命令。
该命令的格式为
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/098.jpg?sign=1734463187-zn9h8oVQcBtLKpmDieVRfAH7sIVdIaZk-0-31783ab45af0f5f1342fd8030a715076)
常用选项有如下几个。
●-i:查找时忽略字母的大小写。
●-l:仅输出包含该目标字符串文件的文件名。
●-v:输出不包含目标字符串的行。
●-n:输出每个含有目标字符串的行及其行号。
不带选项表示查找并输出所有包含目标字符串的行
![](https://epubservercos.yuewen.com/9858A0/16577073705034706/epubprivate/OEBPS/Images/099.jpg?sign=1734463187-r9ZMq4xqARUySDZEFhD9xCFEo8Wy4Hyc-0-21d95779f84b35629976e993898813a7)
提示:
它不支持正则表达式,如果查找“hello*”,则不会有输出结果。