cat 指令(含输入重定向)
语法:cat [选项] [文件]
功能: 查看目标文件的内容
常用选项:
- -b 对非空输出行编号
- -n 对输出的所有行编号
- -s 不输出多行空行
cat 打印文件的内容到屏幕上,其实就是查看文件内容。
我们 nano 一个文件,使用 cat 查看内容:
[root@VM-4-3-centos lesson3]# nano mylog.txt [root@VM-4-3-centos lesson3]# cat mylog.txt aaaaaaa bbbbbbb ccccccc ssssssss aaaaaaaa ddddddddd cccccccc aaaaaaaaaaaaaaaaa
cat -s 文件名
:省略多余空行 查看文件内容,说白了就是指令之间最多输出一个空行
[root@VM-4-3-centos lesson3]# cat -s mylog.txt aaaaaaa bbbbbbb ccccccc ssssssss aaaaaaaa ddddddddd cccccccc aaaaaaaaaaaaaaaaa
cat -sn 文件名
:-n 是对输出行编号,-sn组合使用就是省略空行输出编号并打印内容
很清晰的看到省略了空行。
[root@VM-4-3-centos lesson3]# cat -sn mylog.txt 1 aaaaaaa 2 bbbbbbb 3 4 ccccccc 5 ssssssss 6 7 aaaaaaaa 8 ddddddddd 9 cccccccc 10 aaaaaaaaaaaaaaaaa 11
cat 会把文件内容读取到程序里,然后打印出来。
cat < 文件名
:输入重定向,将文件中内容读取到 cat 中,并打印
[root@VM-4-3-centos lesson3]# cat < mylog.txt aaaaaaa bbbbbbb ccccccc ssssssss aaaaaaaa ddddddddd cccccccc aaaaaaaaaaaaaaaaa
如果 cat 后不跟任何内容,那么就会 默认从键盘中读数据:
[root@VM-4-3-centos lesson3]# cat hello hello Linux Linux aaa aaa bbb bbb
所以,输入重定向就是改变原先从键盘上读取数据的方式,改为从其他文件中读取数据
其实这里使用 cat mylog.txt 和 cat < mylog.txt 的效果是一样的,但是还是有些区别:第一个是通过命令行参数获得文件名,第二个是通过重定向获得文件名。
这里简单了解一下就可以。
wc 指令
语法:wc [-lwm]
功能:统计文件的行数、单词数、字符数
常用选项:
- -l :仅列出行
- -w :仅列出多少字(英文单字)
- -m :多少字符
wc -l 文件名
:显示文本文件有多少行和文件名
显示文件有多少行,并文件名
[root@VM-4-3-centos lesson3]# wc -l mylog.txt 12 mylog.txt
wc -l < 文件名
:输入重定向,显示文本文件行数不显示文件名
[root@VM-4-3-centos lesson3]# wc -l < mylog.txt 12
more 指令
语法:more [选项] [文件]
功能:more命令,功能类似 cat
常用选项:
- -n 对输出的所有行编号
- q 退出more
测试 more
指令前,我们先写一个命令行脚本:
cnt=0; while [ $cnt -le 1000 ]; do echo "hello $cnt"; let cnt++; done > mylog.txt
意思是往 mylog.txt 中写入 hello 1 ~ hello 1000。
使用 cat 查看一下:
cat 只看到了结尾部分,说明 cat 适用于观看短文本。
长文本可以使用 more
指令观看:
more 文件名
:从头部查看文本内容,按回车逐行翻阅。
less 指令
语法: less [参数] 文件
功能:
less与more类似,但使用less可以 随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。
常用选项:
-i 忽略搜索时的大小写
-N 显示每行的行号
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
q:quit 退出
补充:
less 工具是对文件或其它输出进行分页显示的工具,应该说是linux查看文件内容的工具,功能强大。
less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看。
使用 less,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容。
less 拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less 文件名:查看文件内容支持上下翻阅
↑ 向上翻阅,↓ 向下翻阅,q 退出
less 支持查阅功能,方法为 / + 查阅内容
,在一次查阅后,无法查阅到上次查阅内容前面的内容:
样例:
先查阅带9的内容,然后查阅带1的内容。上次查阅结果为带9的内容,9前面的内容无法被查阅。查阅带1的内容是从10开始查阅的。
head 和 tail 指令(含管道用法)
head
语法: head [参数]… [文件]…
功能:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10 行。
选项:
- -n<行数> 显示的行数
head -n5 文件名
:显示前五行,写成 head -5
[root@VM-4-3-centos lesson3]# head -n5 mylog.txt hello 0 hello 1 hello 2 hello 3 hello 4
tail
语法: tail[必要参数] [选择参数] [文件]
功能: 用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
选项:
-f 循环读取
-n<行数> 显示行数
tail 默认打印尾部十行内容。
tail -n5 文件名:显示文件尾部五行内容
[root@VM-4-3-centos lesson3]# tail -n5 mylog.txt hello 996 hello 997 hello 998 hello 999 hello 1000
学习了 head 和 tail,我们能否获取 mylog.txt 中间部分的 第500 - 520 行?
法1:借助中间文件 + 重定向
step 1:head -520 mylog.txt > tmp.txt —— 将前520内容重定向到 tmp.txt 中
[root@VM-4-3-centos lesson3]# head -520 mylog.txt > tmp.txt
step2:tail -20 tmp.txt —— tail 截取 tmp.txt 的后20行
[root@VM-4-3-centos lesson3]# tail -20 tmp.txt hello 500 hello 501 hello 502 hello 503 hello 504 hello 505 hello 506 hello 507 hello 508 hello 509 hello 510 hello 511 hello 512 hello 513 hello 514 hello 515 hello 516 hello 517 hello 518 hello 519
法2:管道
首先,介绍一下管道。我们生活中,管道是用来传输资源的,对于Linux中的管道也是。
|
就是管道的标志。计算机中最重要的资源是数据,|
就会被 shell 解释为链接两条指令用来传输数据的指令。我们可以把管道也当做一种文件。
先看两个管道的例子:
我们原本 统计行 需要用 wc -l mylog.txt
,并且会打印文件名:
[root@VM-4-3-centos lesson3]# wc -l mylog.txt 1001 mylog.txt
但是学习了管道后,我们可以使用 cat mylog.txt | wc -l
,把 cat 的数据写到管道里,之后用 wc-l
到管道中读取,这样也不显示文件名。
[root@VM-4-3-centos lesson3]# cat mylog.txt | wc -l 1001
好了,介绍完管道和用法,我们回到正题:>
cat mylog.txt 将内容放到管道中,head -520 截取文件中前520行,再把这些放入管道中,tail -20 截取这些的后20行
指令为:cat mylog.txt | head -520 | tail -20
[root@VM-4-3-centos lesson3]# cat mylog.txt | head -520 | tail -20 hello 500 hello 501 hello 502 hello 503 hello 504 hello 505 hello 506 hello 507 hello 508 hello 509 hello 510 hello 511 hello 512 hello 513 hello 514 hello 515 hello 516 hello 517 hello 518 hello 519
管道意义:集联多条指令,做数据的不断加工。