如果要查看文件内容,如何做呢?有相当多的命令:最常用的显示文件内容的命令是cat与more及less。此外,如果要查看一个大型文件(好几百MB时),只需要最后的几行字,如何做?用tail,此外,tac命令也可以实现。下面说说各个命令的用途。
• cat:由第一行开始显示文件内容。
• tac:从最后一行开始显示,可以看出tac与cat字母顺序相反。
• nl:显示的时候,也输出行号。
• more:一页一页地显示文件内容
• less与more类似,但它可以向前翻页。
• head:只看前几行。
• tail:只看最后几行。
• od:以二进制方式读取文件内容。
直接查看一个文件的内容可以使用cat/tac/nl这几个命令。
cat(concatenate)
[root@linux ~]# cat [-AEnTv] 参数: -A : 相当于 -vET的整合参数,可列出一些特殊字符。 -E : 将结尾的换行符 $ 显示出来。 -n : 显示行号。 -T : 将 [tab] 按键以 ^I显示出来。 -v : 列出一些看不出来的特殊字符 范例: 范例一:查看 /etc/issue这个文件的内容 [root@linux ~]# cat /etc/issue Fedora Core release 4 (Stentz) Kernel \r on an \m 范例二:承上题,顺便显示出行号时。 [root@linux ~]# cat -n /etc/issue 1 Fedora Core release 4 (Stentz) 2 Kernel \r on an \m 3 # 看到了。可以显示行号。对于要在大文件中找某行时,有点用处。 范例三:将 /etc/xinetd.conf的内容完整地显示出来(包含特殊字符)。 [root@linux ~]# cat -A /etc/xinetd.conf #$ # Simple configuration file for xinetd$ #$ # Some defaults, and include /etc/xinetd.d/$ $ defaults$ {$ ^Iinstances = 60$ log_type = SYSLOG authpriv$ log_on_success^I^I= HOST PID$ log_on_failure^I^I= HOST$ ^Icps^I^I^I= 25 30$ }$ $ includedir /etc/xinetd.d$ # 在一般环境中,显示出来的结果有 [tab] 与空格键,其实看不出来, # 那么,使用cat -A时,会将 [tab] 按键以 ^I显示,而换行符也会显示出来。 # 最特殊的当然就是换行符了。换行符在Linux与Windows是不一样的。 # Linux是以 $ 为换行符,而在Windows则是以 ^M$ 为换行符。 # 这部分会在第10章再次说明。 |
cat是Concatenate(连续)的简写,主要的功能是将一个文件的内容连续显示在屏幕上面。例如,上面的例子中,我们将 /etc/issue显示来。如果加上 -n的话,则每一行前面还会加上行号。笔者很少用cat。毕竟当文件内容行数超过40行以上,根本来不及看。所以,配合稍候介绍的more或者是less比较好。此外,如果是一般的DOS文件,就需要特别注意一些奇怪的符号了,例如换行符与 [tab] 等,要显示出来,就要加入 -A之类的参数了。
tac(反向显示)
[root@linux ~]# tac /etc/issue Kernel \r on an \m Fedora Core release 4 (Stentz) # 与刚刚上面的范例一比较,是最后一行先显示。
|
仔细看一下cat与tac,tac刚好是将cat反写过来,所以它的功能就与cat相反,cat是由“第一行到最后一行连续显示在屏幕上”,而tac则是“由最后一行到第一行反向在屏幕上显示出来”。
nl(显示时添加行号)
[root@linux ~]# nl [-bnw] 文件 参数: -b : 指定行号指定的方式,主要有两种: -b a : 表示不论是否为空行,也同样列出行号。 -b t : 如果有空行,空行不要列出行号。 -n : 列出行号表示的方法,主要有三种: -n ln : 行号在屏幕的最左方显示。 -n rn : 行号在字段的最右方显示,且不加0。 -n rz : 行号在字段的最右方显示,且加0。 -w :行号字段占用的位数。 范例: 范例一:列出 /etc/issue的内容。 [root@linux ~]# nl /etc/issue 1 Fedora Core release 4 (Stentz) 2 Kernel \r on an \m # 注意,这个文件其实有三行,第三行为空白(没有任何字符), # 因为它是空白行,所以nl不会加上行号。如果确定要加上行号,可以这样做: [root@linux ~]# nl -b a /etc/issue 1 Fedora Core release 4 (Stentz) 2 Kernel \r on an \m 3 # 行号加上来。如果要让行号前面自动补上0呢?可这样 [root@linux ~]# nl -b a -n rz /etc/issue 000001 Fedora Core release 4 (Stentz) 000002 Kernel \r on an \m 000003 # 自动在字段的地方补上0了。默认字段是6位数,如果想要改成3位数: [root@linux ~]# nl -b a -n rz -w 3 /etc/issue 001 Fedora Core release 4 (Stentz) 002 Kernel \r on an \m 003 # 变成仅有3位数。 |
nl可以将输出的文件内容自动加上行号。其结果与cat -n不太一样,nl可以对行号做较多的设置,包括位数与是否自动补齐0等。