linux cat与tac命令


将FILE(s)连续输出到标准输出,没有FILE参数或者参数为-,则从标准输入读
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查看。

cat为concatenate的缩写,意为连接、连续的意思,cat命令将文本文件的内容连续输出到屏幕。 常用格式如下:

              [root@initroot ~]# cat [-AbEnTv] filename
              选项与参数:
              -A :相当于-vET的整合选项,显示出文件中的特殊字符,而不是用空格替代;
              -b :列出行号,仅显示出非空白行的行号,空白行不标行号!
              -E :显示结尾的断行字符$;
              -n :与-b的选项一样列出行号,不同之处是-n显示出所有行的行号,包括空白行和非空白行;
              -T :将文件中的tab按键以^I显示出来;
              -v :除了断行字符$和tab键,文件中往往还有一些其他不可见的特殊字符,-v选项可以显示出这些不可见的特殊字符;
            
还记得命令行登录界面的欢迎字符吗?这些欢迎来自/etc/issue文件,用cat命令查看该文件的内容:
              [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次阅读