在学习关于文件内容的操作命令之前,先引入管道符和重定向符的概念,在后续的命令介绍中将会使用。
·管道符“|”使用在多条命令之间,作为一个进程和另外一个进程间通信的通道,表示将前面命令的结果作为后面命令的参数进行使用。
·重定向符“>”表示覆盖重定向输出,将命令执行的结果直接写入文件中,不会在控制台中输出。若文件不存在则会直接创建文件且向其中写入数据,若文件存在则无论是否有数据都会将原有的数据覆盖。
·重定向符“>>”表示追加重定向输出,将命令执行的结果直接写入文件中,不会在控制台中输出。若文件不存在则会直接创建文件且向其中写入数据,若文件存在且有数据则会保留原文件中的数据,直接将内容追加写入文件末尾。
·重定向符“<”表示重定向输入,表示命令中读取的内容是来自文件而不是键盘。
cat是Concatenate的简写,cat命令用于查看文件内容。命令格式如下:
cat 文件
cat命令的常用选项如下:
·-b:显示行号,不包括空行。
·-n:显示行号,包括空行。
下面是cat命令的演示。
#查看hosts文件中的内容 [root@localhost ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4. localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6. localdomain6
这里引入一个知识点,可以使用cat配合重定向符和EOF(End Of File,自定义终止符)对文件覆盖或追加多行内容,其中,“<<”表示标准输入的分隔符,“<<EOF”表示开始位置,EOF表示结束位置。EOF也可以用其他名称如CCC替代,只不过EOF是一种标准写法。命令格式如下:
<<EOF …… EOF
示例如下:
#向文件a.txt中添加多行内容,若a.txt不存在就创建该文件并向其中添加内容,若文件存在 则会覆盖原有内容 [root@localhost opt]# cat > a.txt << EOF > 1111 > 2222 > 3333 > EOF [root@localhost opt]# cat a.txt 1111 2222 3333 #向文件a.txt中添加多行内容,若a.txt不存在就创建该文件并向其中添加内容,若文件存在 则会在原有的内容之后追加新的内容 [root@localhost opt]# cat a.txt 1111 2222 3333 [root@localhost opt]# cat >> a.txt << EOF > AAA > BBB > EOF [root@localhost opt]# cat a.txt 1111 2222 3333 AAA BBB
wc是Word Count的简写,wc命令用于统计文件中的行数、单词数和字节数等相关信息。wc命令后面如果不跟任何选项,则默认统计行数、单词数和字节数。命令格式如下:
wc 选项 文件
wc命令的常用选项如下:
·-c:统计字节数。
·-l:统计行数。
·-w:统计单词数。
·-m:统计字符数。
·-L:统计最长行的长度。
下面的示例是对以上选项用法的演示,注意查看显示结果。
#查看文件内容,中文可以切换到图形化界面中进行操作 [root@localhost opt]# cat 66.txt 好好学习天天向上 12 3 abcdf #如果不使用任何选项,则默认统计行数、单词数和字节数,统计出66.txt文件内容共3行,4 个单词,36个字节 [root@localhost opt]# wc 66.txt 3 4 36 66.txt #统计行数 [root@localhost opt]# wc -l 66.txt 3 66.txt #统计单词数,以空格或制表符隔开就算一个单词 [root@localhost opt]# wc -w 66.txt 4 66.txt #统计字节数,字符编码是UTF-8的英文占1个字节,中文占3个字节;字符编码是Unicode和 ASCII的英文占1个字节,中文占2个字节;英文标点符号占1个字节,中文标点符号占2个字 节;空格和换行符也算一个字节 [root@localhost opt]# wc -c 66.txt 36 66.txt #统计字符数,1个中文、1个空格和1个换行符都算1个字符 [root@localhost opt]# wc -m 66.txt 20 66.txt #打印最长行的长度,中文占2个长度,英文和数字占1个长度,不计算换行符 [root@localhost opt]# wc -L 66.txt 16 66.txt
如果文件内容或命令执行后在控制台的显示存在多页,则可以使用more或less命令进行分页显示,相对而言less命令的功能比more命令的功能要强大。
more命令和less命令中的快捷键如表2.3所示。
表2.3 more命令和less命令中的快捷键
注意:如果more命令中使用了管道符“|”,则向上翻页的快捷键b是无效的。
下面是more命令和less命令的示例。
#以人性化方式显示etc目录下所有文件的详细信息并将结果写入/opt/etc.txt文件 [root@localhost home]# ls -lh /etc >/opt/etc.txt #对“ls -lh/etc”命令的执行结果使用more命令进行分页显示,也可以使用less命令 [root@localhost home]# ls -lh /etc | more …… #使用more命令分页显示/opt/etc.txt文件的内容,有两种方式。同样也可以使用less命令 [root@localhost home]# more /opt/etc.txt …… [root@localhost home]# cat /opt/etc.txt | more ……
如果要截取文件中特定行数的内容,可以使用head和tail命令。
1.head命令
head命令用于截取文件中开头部分的内容。如果不指定行数,默认截取前10行。命令格式如下:
head -n 行数 head -行数
下面是head命令的示例,注意查看显示结果。
#截取文件etc.txt的前10行数据,默认是截取前10行 [root@localhost home]# head /opt/etc.txt 总用量 1.5M drwxr-xr-x. 3 root root 101 11月 29 17:15 abrt -rw-r--r--. 1 root root 16 11月 29 17:22 adjtime -rw-r--r--. 1 root root 1.5K 6月 7 2013 aliases -rw-r--r--. 1 root root 12K 11月 29 17:25 aliases.db drwxr-xr-x. 3 root root 65 11月 29 17:17 alsa drwxr-xr-x. 2 root root 4.0K 11月 29 17:18 alternatives -rw-------. 1 root root 541 8月 9 2019 anacrontab -rw-r--r--. 1 root root 55 8月 8 2019 asound.conf -rw-r--r--. 1 root root 1 10月 31 2018 at.deny #截取/opt/etc.txt文件的前3行数据,通过3种方式实现 #方式一:head -n 数字 [root@localhost home]# head -n 3 /opt/etc.txt #方式二:head -数字 [root@localhost home]# head -3 /opt/etc.txt #方式三:使用管道符“|” [root@localhost home]# cat /opt/etc.txt | head -3
2.tail命令
tail命令用于截取文件中结尾部分的内容。如果不指定行数,默认截取后10行。其中选项“-f”用于实时查看文件更新的内容,一般用于实时查看日志信息。命令格式如下:
tail -n 行数 tail -行数 tail -f
下面是tail命令的示例,注意查看显示结果。
#截取/opt/etc.txt文件的第10行数据,可以通过head命令、tail命令以及管道符一起实现 [root@localhost home]# head -10 /opt/etc.txt | tail -n 1 -rw-r--r--. 1 root root 1 10月 31 2018 at.deny #实时查看文件/var/log/messages,可以通过Ctrl+C快捷键终止 [root@localhost home]# tail -f /var/log/messages ……