【Linux】一万七千字详解 —— 基本指令(二)2

简介: 【Linux】一万七千字详解 —— 基本指令(二)

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 查看一下:

8e1b27ecd25e82df579f0ab1fcbdad05.png

cat 只看到了结尾部分,说明 cat 适用于观看短文本。


长文本可以使用 more 指令观看:


more 文件名:从头部查看文本内容,按回车逐行翻阅。

ddc7828f53d28523100d65184539b046.png


less 指令


语法: less [参数] 文件


功能:


less与more类似,但使用less可以 随意浏览文件,而more仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件。


常用选项:


       -i 忽略搜索时的大小写

       -N 显示每行的行号

       /字符串:向下搜索“字符串”的功能

       ?字符串:向上搜索“字符串”的功能

       n:重复前一个搜索(与 / 或 ? 有关)

       N:反向重复前一个搜索(与 / 或 ? 有关)

       q:quit 退出


补充:


   less 工具是对文件或其它输出进行分页显示的工具,应该说是linux查看文件内容的工具,功能强大。


   less 的用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看。


   使用 less,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容。


   less 拥有更多的搜索功能,不止可以向下搜,也可以向上搜。


   less 文件名:查看文件内容支持上下翻阅


less.gif


↑ 向上翻阅,↓ 向下翻阅,q 退出


less 支持查阅功能,方法为 / + 查阅内容,在一次查阅后,无法查阅到上次查阅内容前面的内容:

样例:


先查阅带9的内容,然后查阅带1的内容。上次查阅结果为带9的内容,9前面的内容无法被查阅。查阅带1的内容是从10开始查阅的。


e23c0acb14cd9c147b7b15a41bed3647.gif

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

管道意义:集联多条指令,做数据的不断加工。

相关文章
|
24天前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
【Linux】-基本指令(下)
|
19天前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
31 1
|
25天前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
39 3
|
25天前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
30天前
|
Linux Shell Windows
Linux入门1——初识Linux指令
Linux入门1——初识Linux指令
25 0
Linux入门1——初识Linux指令
|
1月前
|
人工智能 Unix Linux
装杯 之 Linux指令
本文介绍了Linux操作系统的基本命令。首先欢迎各位进入Linux的世界,并展示了`ls`命令,用于列出目录下的文件和子目录。接着介绍了`pwd`命令,用于显示当前目录;`cd`命令,用于切换目录;`mkdir`命令,用于创建目录;`touch`命令,用于创建普通文件或修改文件时间戳;`rmdir`命令,用于删除空目录;以及`rm`命令,用于删除文件或目录。通过这些基本命令,你可以开始探索和管理Linux系统。
|
3月前
|
存储 人工智能 Ubuntu
Linux指令学习(一)
Linux指令学习(一)
|
存储 Linux C语言
Linux:入门学习知识及常见指令
Linux:入门学习知识及常见指令
|
6月前
|
人工智能 Unix Linux
Linux的学习之路:2、基础指令(1)
Linux的学习之路:2、基础指令(1)
49 0
|
6月前
|
Unix Linux Windows
Linux的学习之路:3、基础指令(2)
Linux的学习之路:3、基础指令(2)
61 0