Linux中的所有内容都是以文件的方式表示的,会有很多需求需要我们获取文件的内容,查看部分或者全部内容。当然最直接方式就是使用编辑器打开文件查看,比如vim、vi、emacs等。这里主要关注的是shell命令中获取文件内容的部分。
1.cat
cat命令的用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示。
1.命令概览
在文件内容比较少的时候,可以直接使用cat命令打印出来或者使用管道符传递给后续命令处理文件内容。当然,cat也可以传入多个文件名,将多个文件的内容合并。一般文件内容行数超过40行时,使用cat不宜将内容输出到屏幕。
2.特性实例说明
-E(end)选项可以显示出结束字符,用“$”字符表示结束
-T(tab)选项可以显示tab字符,用“^I”字符表示tab
-s(squeeze)可以压缩连续的空行为一行
使用-v选项可以显示出所有非可打印字符,结合上述字符就是-t选项等于-vT,-e选项等于-vE。最后-A可以显示所有字符,也就是-vET的合体。
user@ubuntu:~$cat -E test
123$ $$456
user@ubuntu:~$cat -T test
123$^I$$456
user@ubuntu:~$cat -s test
123
456
user@ubuntu:~$cat -a test
123$^I$$456
另外还支持显示文件的行号,使用-n显示行号直接从第一行开始编号,对空行也计数。但是如果需要统计有效内容行数,可以使用-b选项跳过所有空行编号,只对有内容的行编号。
user@ubuntu:~$cat -n test
1 123
2
3
4 456
user@ubuntu:~$cat -b test
1 123
2
3 456
空行的定义是没人任何除换行符之外的字符的行,上述测试文件中第二行有一个tab字符也是算为有内容的行,从而也进行编号了。
3.衍生tac
tac是cat命令逆序的字符串,意义就是和cat命令的功能相反。从文件的最后一行进行依次输出,直到文件第一行为止。
2.nl
1.常用内容
nl命令在linux系统中用来计算文件中行号,当然也是直接输出文件内容。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。常用选项如下:
-b :指定行号指定的方式,主要有两种: -b a :表示不论是否为空行,也同样列出行号(类似 cat -n); -b t :如果有空行,空的那一行不要列出行号(默认值); -n :列出行号表示的方法,主要有三种: -n ln :行号在萤幕的最左方显示; -n rn :行号在自己栏位的最右方显示,且不加 0 ; -n rz :行号在自己栏位的最右方显示,且加 0 ; -w : 行号栏位的占用的位数,默认为6位。 -p : 在逻辑定界符处不重新开始计算
完整选项如下:
user@ubuntu:~$nl -b t test
1 123
2
3 456
user@ubuntu:~$nl -n ln test
1 123
2
3 456
user@ubuntu:~$nl -n rz test
000001 123
000002
000003 456
user@ubuntu:~$nl -n rz -w 2 test
01 123
02
03 456
user@ubuntu:~$nl -n ln -i 2 test
1 123
3
5 456
user@ubuntu:~$nl -n rn -s 'row:' test
1row:123
2row:
3row:456
nl 命令读取 File 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。 在输出中,nl 命令根据您在命令行中指定的标志来计算左边的行。 -i可以设置行号增量,默认为1。-s可以设置插入到行号后的字符串。
2.扩展
输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。-p选项设置后nl命令将从每个逻辑页开始重新编号,-d可以设置逻辑页的分隔符。另外,-f和-h选项可以设置逻辑页的页脚、页头的格式。
3.od
上述命令将文件输出到屏幕或者是管道符,但是都是非二进制文件。如果遇到二进制文件,上述命令会出现乱码,此时可以使用od这个命令来查看二进制文件的字节信息。
1.命令概览
最常用的选项就是-t,后接各种类型来进行输出,当然也有为了保持兼容的传统选项,上图中可以看出能用-t TYPE的各种方式构建出来。各种类型如下:
a:利用默认字符输出
c:ASCII字符或者转义字符表示
d[SIZE]:利用有符号十进制(decimal)数输出数据,每个数占用SIZE个字节
f[SIZE]:利用浮点数输出数据,每个数占用SIZE个字节
o[SIZE]:利用八进制输出数据,每个数占用SIZE个字节
u[SIZE]:利用无符号十进制数表示,每个数占用SIZE个字节
x[SIZE]:利用十六进制数表示,每个数占用SIZE个字节
SIZE:是一个数字,用字符表示。当TYPE是d/o/u/x时,有如下选项:
C : sizeof(char)
S : sizeof(short)
I : sizeof(int)
L : sizeof(long)
当TYPE是f时,为如下选项:
F : sizeof(float)
D : sizeof(double)
L : sizeof(long double)
-N选项可以指定读取的二进制字节数目,-j选项可以指定跳过开头的指定书目字节。-S BYTES指定输出至少BYTES个可打印字符。-w可以指定每行打印的字节数目。-A选项的RADIX指定文件的偏移量输出格式:d(decimal)、x(hex)、o(oct)、n(none),默认格式为八进制表示。
user@ubuntu:~$od -t x1 -N 16 -A x /usr/bin/od
000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
000010
user@ubuntu:~$od -t x1 -N 12 -Ax -j4 /usr/bin/od
000004 01 01 01 00 00 00 00 00 00 00 00 00
000010
user@ubuntu:~$od -t x1 -N 16 /usr/bin/od
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
0000020
user@ubuntu:~$od -t xCc -N16 /usr/bin/od
0000000 7f 45 4c 46 01 01 01 00 00 00 00 00 00 00 00 00
177 E L F 001 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020
对-t选项后面可以接多个类型,从而可以进行对照查看,x选项显示十六进制表示,c表示对于的ASCII表示。另外,所有的BYTES参数,默认不带单位就是字节,可以加上b(512)、kB(1000)、K(1024)、MB(1000*1000)、M(1024*1024)、GB/G/TB/T/PB/P/EB/E/ZB/Z/YB/Y。 使用 od命令对直接查看二进制文件格式,查阅字节信息的开发者来说非常有用。