linux cat与tac命令
cat命令读取文件的内容并将内容连续(concatenate)输出到标准输出,用于查看文件的内容。cat是单词concatenate的简写。
如果没有加任何参数,cat读取标准输入并输出到标准输出。
tac命令和cat命令的功能一样,区别是cat将文件从第一行到最后一行连续显示到屏幕上,而tac则正好相反,从最后一行到第一行反向输出到屏幕上。
tac是cat的反写形式。
例如用cat查看/etc/fstab文件:
peter@peter-VirtualBox:~/Desktop$ cat /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> # / was on /dev/sda1 during installation UUID=bc265682-0ec5-476d-acd6-97d5b5bec591 / ext4 errors=remount-ro 0 1 /swapfile none swap sw 0 0
用tac查看/etc/fstab文件:
peter@peter-VirtualBox:~/Desktop$ tac /etc/fstab /swapfile none swap sw 0 0 UUID=bc265682-0ec5-476d-acd6-97d5b5bec591 / ext4 errors=remount-ro 0 1 # / was on /dev/sda1 during installation # <file system> <mount point> <type> <options> <dump> <pass> # # that works even if disks are added and removed. See fstab(5). # device; this may be used with UUID= as a more robust way to name devices # Use 'blkid' to print the universally unique identifier for a # # /etc/fstab: static file system information.
可以看到tac的输出和tac在行序列上正好相反。
另外,nl命令也可以显示文件的内容,nl可以将输出的文件内容自动加上行号,默认的结果类似与cat -n。
但是nl可以将行号做比较多的显示设计,包括位数与是否自动补齐0等的功能。
点这里查看nl详细信息
cat、tac和nl都是将文件内容一次性显示到屏幕上,不能一行一行或者一页一页的查看,比较适合查看行数较少的文件
对于有些文件,行数较多超过整个屏幕可以输出的行数,可以用more或者less查看。
Usage:cat为concatenate的缩写,意为连接、连续的意思,cat命令将文本文件的内容连续输出到屏幕。 常用格式如下:
cat [OPTION]... [FILE]...
将FILE(s)连续输出到标准输出,没有FILE参数或者参数为-,则从标准输入读
-A, --show-all equivalent to -vET
-b, --number-nonblank number nonempty output lines, overrides -n
-e equivalent to -vE
-E, --show-ends display $ at end of each line
-n, --number number all output lines
-s, --squeeze-blank suppress repeated empty output lines
-t equivalent to -vT
-T, --show-tabs display TAB characters as ^I
-u (ignored)
-v, --show-nonprinting use ^ and M- notation, except for LFD and TAB
--help display this help and exit
--version output version information and exit
Examples:
cat f - g Output f's contents, then standard input, then g's contents.
cat Copy standard input to standard output.
GNU coreutils online help: http://www.gnu.org/software/coreutils/ Full documentation at:
http://www.gnu.org/software/coreutils/cat or available locally via: info '(coreutils) cat invocation'
[root@initroot ~]# cat [-AbEnTv] filename选项与参数:
-A :相当于-vET的整合选项,显示出文件中的特殊字符,而不是用空格替代;还记得命令行登录界面的欢迎字符吗?这些欢迎来自/etc/issue文件,用cat命令查看该文件的内容:
-b :列出行号,仅显示出非空白行的行号,空白行不标行号!
-E :显示结尾的断行字符$;
-n :与-b的选项一样列出行号,不同之处是-n显示出所有行的行号,包括空白行和非空白行;
-T :将文件中的tab按键以^I显示出来;
-v :除了断行字符$和tab键,文件中往往还有一些其他不可见的特殊字符,-v选项可以显示出这些不可见的特殊字符;
[root@initroot ~]# cat /etc/issue Linux Mint 19.3 Tricia \n \l将/etc/issue文件的内容连同行号也显示出来:
[root@initroot ~]# cat -n /etc/issue 1 Linux Mint 19.3 Tricia \n \l 2该文件中有两行,其中最后一行是空行,-n选项可以显示所有行的行号,如果不想显示空行的行号,可以换成-b选项。 对于一些比较大的文件,想要快速定位到某行,就可以用-n或者-b选项。
将/etc/manpath.config文件的内容完整的显示出来,包括特殊字符:
[root@initroot ~]# cat -A /etc/manpath.config ...省略... # set up PATH to MANPATH mapping$ # ie. what man tree holds man pages for what binary directory.$ #$ #^I^I*PATH* ->^I*MANPATH*$ #$ MANPATH_MAP^I/bin^I^I^I/usr/share/man$ MANPATH_MAP^I/usr/bin^I^I/usr/share/man$ MANPATH_MAP^I/sbin^I^I^I/usr/share/man$ MANPATH_MAP^I/usr/sbin^I^I/usr/share/man$ ...省略...上面输出中的^I就是/etc/manpath.config文件中的tab了,每行末尾都有一个$,表示一行的结束。 如果不加-A选项,这些特殊字符都是不可见的。有些文件如果需要你留意一些特殊字符,加上-A选项就可以了。
tac命令其实就是cat命令的反写了,可以将文件内容以相反的行顺序列出:
[root@initroot ~]# tac tac /etc/issue Linux Mint 19.3 Tricia \n \l通过与cat命令的对比我们很容易就能看出来,cat是将文件从第一行到最后一行连续显示到屏幕上, 而tac则是将文件从最后一行到第一行连续显示到屏幕上。
initroot编辑整理,转载请注明www.initroot.com
100次点赞
100次阅读