购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 文件内容操作命令

在学习关于文件内容的操作命令之前,先引入管道符和重定向符的概念,在后续的命令介绍中将会使用。

·管道符“|”使用在多条命令之间,作为一个进程和另外一个进程间通信的通道,表示将前面命令的结果作为后面命令的参数进行使用。

·重定向符“>”表示覆盖重定向输出,将命令执行的结果直接写入文件中,不会在控制台中输出。若文件不存在则会直接创建文件且向其中写入数据,若文件存在则无论是否有数据都会将原有的数据覆盖。

·重定向符“>>”表示追加重定向输出,将命令执行的结果直接写入文件中,不会在控制台中输出。若文件不存在则会直接创建文件且向其中写入数据,若文件存在且有数据则会保留原文件中的数据,直接将内容追加写入文件末尾。

·重定向符“<”表示重定向输入,表示命令中读取的内容是来自文件而不是键盘。

2.4.1 cat命令

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

2.4.2 wc命令

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

2.4.3 more命令和less命令

如果文件内容或命令执行后在控制台的显示存在多页,则可以使用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
……

2.4.4 head命令和tail命令

如果要截取文件中特定行数的内容,可以使用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命令的示例,注意查看显示结果。 IMIPopp0naSizBjtcbYdDNHkJJG55Vc2qET04xwyL2wkA7oV5h2hnyP0lUQEgMzn


#截取/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
……

点击中间区域
呼出菜单
上一章
目录
下一章
×