cat命令来自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容。在Linux系统中有很多用于查看文件内容的命令,例如more、tail、head等,每个命令都有各自的特点。cat命令适合查看内容较少的纯文本文件。 对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+C组合键中断命令执行,所以对于大文件,干脆用more命令显示吧。
cat [选项] [文件]
常用参数:
-n
:显示行号,会在输出的每一行前加上行号。-b
:显示行号,但只对非空行进行编号。-s
:压缩连续的空行,只显示一个空行。-E
:在每一行的末尾显示 $
符号。-T
:将 Tab 字符显示为 ^I
。-v
:显示一些非打印字符。使用说明:
cat filename
会将指定文件的内容输出到终端上。cat file1 file2 > combined_file
可以将 file1 和 file2 的内容连接起来,并将结果输出到 combined_file 中。cat
命令来创建文件,例如 cat > filename
,然后你可以输入文本,按 Ctrl+D
来保存并退出。cat
与管道(|
)结合使用,用来显示其他命令的输出,例如 ls -l | cat
会将 ls -l
的输出通过 cat
打印到终端上。查看文件内容:显示文件 filename 的内容。
cat filename
创建文件:将标准输入重定向到文件 filename,覆盖该文件的内容。
cat > filename
追加内容到文件:将标准输入追加到文件 filename 的末尾。
cat >> filename
连接文件:将 file1 和 file2 的内容合并到 file3 中。
cat file1 file2 > file3
显示多个文件的内容:同时显示 file1 和 file2 的内容。
cat file1 file2
使用管道:将 cat 命令的输出作为另一个命令的输入。
cat filename | command
查看文件的最后几行:显示文件 filename 的最后 10 行。
cat filename | tail -n 10
使用 -n 选项显示行号:显示文件 filename 的内容,并在每行的前面加上行号。
cat -n filename
使用 -b 选项仅显示非空行的行号:
cat -b filename
使用 -s 选项合并空行:显示文件 filename 的内容,并合并连续的空行。
cat filename
0
使用 -t 选项显示制表符:显示文件 filename 的内容,并用 ^I 表示制表符。
cat filename
1
使用 -e 选项显示行结束符:显示文件 filename 的内容,并用 $ 表示行结束。
cat filename
2
把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
cat filename
3
把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
cat filename
4
清空 /etc/test.txt 文档内容:
cat filename
5
cat 也可以用来制作镜像文件。例如要制作软盘的镜像文件,将软盘放好后输入:
cat filename
6
相反的,如果想把 image file 写到软盘,输入:
cat filename
7
注:
rm命令来自英文单词remove的缩写,中文译为“消除”,其功能是删除文件或目录,一次可以删除多个文件,或递归删除目录及其内的所有子文件。
rm也是一个很危险的命令,使用的时候要特别当心,尤其对于新手更要格外注意。例如,执行rm -rf /*命令会清空系统中所有的文件,甚至无法恢复回来。所以我们在执行之前一定要再次确认在在哪个目录中、到底要删除什么文件,考虑好后再敲击Enter键,要时刻保持清醒的头脑。
cat filename
8
常用参数:
删除文件可以直接使用rm命令,若删除目录则必须配合选项"-r",例如:
cat filename
9
删除当前目录下的所有文件及目录,命令行为:
cat > filename
0
文件一旦通过rm命令删除,则无法恢复,所以必须格外小心地使用该命令。
echo命令的功能是在终端设备上输出指定字符串或变量提取后的值,能够给用户一些简单的提醒信息,亦可以将输出的指定字符串内容同管道符一起传递给后续命令作为标准输入信息进行二次处理,还可以同输出重定向符一起操作,将信息直接写入文件。如需提取变量值,需在变量名称前加入$符号,变量名称一般均为大写形式。
cat > filename
1
cat > filename
2
这里的双引号完全可以省略,以下命令与上面实例效果一致:
cat > filename
3
cat > filename
4
结果将是:
cat > filename
5
同样,双引号也可以省略
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量
cat > filename
6
以上代码保存为 test.sh,name 接收标准输入的变量,结果将是:
cat > filename
7
cat > filename
8
输出结果:
cat > filename
9
cat >> filename
0
输出结果:
cat >> filename
1
cat >> filename
2
cat >> filename
3
输出结果:
cat >> filename
4
cat >> filename
5
注意: 这里使用的是反引号 `, 而不是单引号 '。
结果将显示当前日期
cat >> filename
6
grep命令来自英文词组global search regular Expression and print out the line的缩写,意思是用于全面搜索的正则表达式,并将结果输出。人们通常会将grep命令与正则表达式搭配使用,参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。
与之容易混淆的是egrep命令和fgrep命令。如果把grep命令当作标准搜索命令,那么egrep则是扩展搜索命令,等价于grep -E命令,支持扩展的正则表达式。而fgrep则是快速搜索命令,等价于grep -F命令,不支持正则表达式,直接按照字符串内容进行匹配。
cat >> filename
7
常用参数:
-i
:忽略大小写进行匹配。-v
:反向查找,只打印不匹配的行。-n
:显示匹配行的行号。-r
:递归查找子目录中的文件。-l
:只打印匹配的文件名。-c
:只打印匹配的行数。更多参数说明:
cat >> filename
8
cat >> filename
9
cat file1 file2 > file3
0
cat file1 file2 > file3
1
结果如下所示:
cat file1 file2 > file3
2
cat file1 file2 > file3
3
输出结果如下:
cat file1 file2 > file3
4
查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
cat file1 file2 > file3
5
结果如下所示:
cat file1 file2 > file3
6
tail命令的功能是查看文件尾部内容,例如默认会在终端界面上显示指定文件的末尾10行,如果指定了多个文件,则会在显示的每个文件内容前面加上文件名来加以区分。高阶玩法的-f参数的作用是持续显示文件的尾部最新内容,类似于机场候机厅的大屏幕,总会把最新的消息展示给用户,对阅读日志文件尤为适合,再也不需要手动刷新了。
cat file1 file2 > file3
7
常用参数:
要显示 notes.log 文件的最后 10 行,请输入以下命令:
cat file1 file2 > file3
8
要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:
cat file1 file2 > file3
9
此命令显示 notes.log 文件的最后 10 行。当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
显示文件 notes.log 的内容,从第 20 行至文件末尾:
cat file1 file2
0
显示文件 notes.log 的最后 10 个字符:
cat file1 file2
1
rmdir命令来自英文词组remove directory的缩写,其功能是删除空目录文件。rmdir命令仅能删除空内容的目录文件,如需删除非空目录时,需要使用带有-R参数的rm命令进行操作。而rmdir命令的递归删除操作(-p参数使用)并不意味着能删除目录中已有的文件,而是要求每个子目录都必须是空的。
cat file1 file2
2
将工作目录下,名为 AAA 的子目录删除 :
cat file1 file2
3
在工作目录下的 BBB 目录中,删除名为 Test 的子目录。若 Test 删除后,BBB 目录成为空目录,则 BBB 亦予删除。
cat file1 file2
4
sed命令来自英文词组stream editor的缩写,其功能是利用语法/脚本对文本文件进行批量的编辑操作。sed命令最初由贝尔实验室开发,后被众多Linux系统集成,能够通过正则表达式对文件进行批量编辑,让重复性的工作不再浪费时间。
cat file1 file2
5
常用参数:
动作说明:
我们先创建一个 testfile 文件,内容如下:
cat file1 file2
6
cat file1 file2
7
使用 sed 命令后,输出结果如下:
cat file1 file2
8
将 testfile 的内容列出并且列印行号,同时,请将第 2~5 行删除!
cat file1 file2
9
sed 的动作为 2,5d,那个 d 是删除的意思,因为删除了 2-5 行,所以显示的数据就没有 2-5 行了, 另外,原本应该是要下达 sed -e 才对,但没有 -e 也是可以的,同时也要注意的是, sed 后面接的动作,请务必以 '...' 两个单引号括住喔!
只要删除第 2 行:
cat filename | command
0
要删除第 3 到最后一行:
cat filename | command
1
在第二行后(即加在第三行) 加上drink tea? 字样:
cat filename | command
2
如果是要在第二行前,命令如下:
cat filename | command
3
如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
cat filename | command
4
每一行之间都必须要以反斜杠 \
来进行新行标记。上面的例子中,我们可以发现在第一行的最后面就有 \
存在。
将第 2-5 行的内容取代成为 No 2-5 number 呢?
cat filename | command
5
透过这个方法就能够将数据整行取代了。
仅列出 testfile 文件内的第 5-7 行:
cat filename | command
6
可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。
搜索 testfile 有 oo 关键字的行:
cat filename | command
7
如果 root 找到,除了输出所有行,还会输出匹配行。
删除 testfile 所有包含 oo 的行,其他行输出
cat filename | command
8
搜索 testfile,找到 oo 对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,这里把 oo 替换为 kk,再输出这行:
cat filename | command
9
最后的 q 是退出。
除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的查找与替换<。
sed 的查找与替换的与 vi 命令类似,语法格式如下:
cat filename | tail -n 10
0
将 testfile 文件中每行第一次出现的 oo 用字符串 kk 替换,然后将该文件内容输出到标准输出:
cat filename | tail -n 10
1
g 标识符表示全局查找替换,使 sed 对文件中所有符合的字符串都被替换,修改后内容会到标准输出,不会修改原文件:
cat filename | tail -n 10
2
选项 i 使 sed 修改文件:
cat filename | tail -n 10
3
批量操作当前目录下以 test 开头的文件:
cat filename | tail -n 10
4
接下来使用 /sbin/ifconfig 查询 IP:
cat filename | tail -n 10
5
本机的 ip 是 192.168.1.100。
将 IP 前面的部分予以删除:
cat filename | tail -n 10
6
接下来则是删除后续的部分,即:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0。
将 IP 后面的部分予以删除:
cat filename | tail -n 10
7
一条 sed 命令,删除 testfile 第三行到末尾的数据,并把 HELLO 替换为 RUNOOB :
cat filename | tail -n 10
8
-e 表示多点编辑,第一个编辑命令删除 testfile 第三行到末尾的数据,第二条命令搜索 HELLO 替换为 RUNOOB。
sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 不过,由于这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 我们还是使用文件 regular_express.txt 文件来测试看看吧!
regular_express.txt 文件内容如下:
cat filename | tail -n 10
9
利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
cat -n filename
0
利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:
cat -n filename
1
由于 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test!
sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,甚至不需要使用 vim 去修订!