直接查阅一个文件的内容可以使用 cat/tac/nl 这几个指令啊!

  • cat (concatenate)
[root@study ~]# cat [-AbEnTv]
选项与参数:
-A  :相当于 -vET 的整合选项,可列出一些特殊字符而不是空白而已;
-b  :列出行号,仅针对非空白行做行号显示,空白行不标行号!
-E  :将结尾的断行字符 $ 显示出来;
-n  :打印出行号,连同空白行也会有行号,与 -b 的选项不同;
-T  :将 [tab] 按键以 ^I 显示出来;
-v  :列出一些看不出来的特殊字符

范例一:检阅 /etc/issue 这个文件的内容
[root@study ~]# cat /etc/issue
\S
Kernel \r on an \m

范例二:承上题,如果还要加印行号呢?
[root@study ~]# cat -n /etc/issue
     1  \S
     2  Kernel \r on an \m
     3
# 所以这个文件有三行!看到了吧!可以印出行号呢!这对于大文件要找某个特定的行时,有点用处!
# 如果不想要编排空白行的行号,可以使用“cat -b /etc/issue”,自己测试看看:

范例三:将 /etc/man_db.conf 的内容完整的显示出来(包含特殊字符)
[root@study ~]# cat -A /etc/man_db.conf
# $
....(中间省略)....
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$
.....(下面省略).....
# 上面的结果限于篇幅,鸟哥删除掉很多数据了。另外,输出的结果并不会有特殊字体,
# 鸟哥上面的特殊字体是要让您发现差异点在哪里就是了。基本上,在一般的环境中,
# 使用 [tab] 与空白键的效果差不多,都是一堆空白啊!我们无法知道两者的差别。
# 此时使用 cat -A 就能够发现那些空白的地方是啥鬼东西了![tab]会以 ^I 表示,
# 断行字符则是以 $ 表示,所以你可以发现每一行后面都是 $ 啊!不过断行字符
# 在Windows/Linux则不太相同,Windows的断行字符是 ^M$ 啰。
# 这部分我们会在[第九章 vim 软件](../Text/index.html#tips_dos)的介绍时,再次的说明到喔!

嘿嘿!Linux 里面有“猫”指令?喔!不是的, cat 是 Concatenate (连续) 的简写, 主要的功能是将一个文件的内容连续的印出在屏幕上面!例如上面的例子中,我们将 /etc/issue 印出来!如果加上 -n 或 -b 的话,则每一行前面还会加上行号呦!

鸟哥个人是比较少用 cat 啦!毕竟当你的文件内容的行数超过 40 行以上,嘿嘿!根本来不及在屏幕上看到结果! 所以,配合等一下要介绍的 more 或者是 less 来执行比较好!此外,如果是一般的 DOS 文件时,就需要特别留意一些奇奇怪怪的符号了, 例如断行与 [tab] 等,要显示出来,就得加入 -A 之类的选项了!

  • tac (反向列示)
[root@study ~]# tac /etc/issue

Kernel \r on an \m
\S
# 嘿嘿!与刚刚上面的范例一比较,是由最后一行先显示喔!

tac 这个好玩了!怎么说呢?详细的看一下, cat 与 tac ,有没有发现呀!对啦! tac 刚好是将 cat 反写过来,所以他的功能就跟 cat 相反啦, cat 是由“第一行到最后一行连续显示在屏幕上”,而 tac 则是“ 由最后一行到第一行反向在屏幕上显示出来 ”,很好玩吧!

  • nl (添加行号打印)
[root@study ~]# nl [-bnw] 文件
选项与参数:
-b  :指定行号指定的方式,主要有两种:
      -b a :表示不论是否为空行,也同样列出行号(类似 cat -n);
      -b t :如果有空行,空的那一行不要列出行号(默认值);
-n  :列出行号表示的方法,主要有三种:
      -n ln :行号在屏幕的最左方显示;
      -n rn :行号在自己字段的最右方显示,且不加 0 ;
      -n rz :行号在自己字段的最右方显示,且加 0 ;
-w  :行号字段的占用的字符数。

范例一:用 nl 列出 /etc/issue 的内容
[root@study ~]# nl /etc/issue
     1  \S
     2  Kernel \r on an \m

# 注意看,这个文件其实有三行,第三行为空白(没有任何字符),
# 因为他是空白行,所以 nl 不会加上行号喔!如果确定要加上行号,可以这样做:

[root@study ~]# nl -b a /etc/issue
     1  \S
     2  Kernel \r on an \m
     3
# 呵呵!行号加上来啰~那么如果要让行号前面自动补上 0 呢?可这样

[root@study ~]# nl -b a -n rz /etc/issue
000001  \S
000002  Kernel \r on an \m
000003
# 嘿嘿!自动在自己字段的地方补上 0 了~默认字段是六位数,如果想要改成 3 位数?

[root@study ~]# nl -b a -n rz -w 3 /etc/issue
001     \S
002     Kernel \r on an \m
003
# 变成仅有 3 位数啰~

nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能呢。

results matching ""

    No results matching ""