首页 / 操作系统 / Linux / Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, od
Linux文件内容查阅 - cat, tac, nl, more, less, head, tail, odcat 由第一行开始显示文件内容 tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! nl 显示的时候,顺道输出行号! more 一页一页的显示文件内容 less 与 more 类似,但是比 more 更好的是,他可以往前翻页! head 只看头几行 tail 只看尾巴几行od 以二进位的方式读取文件内容!
cat (concatenate)
[root@www ~]# cat [-AbEnTv]选项与参数:-A:相当於 -vET 的整合选项,可列出一些特殊字符而不是空白而已;-b:列出行号,仅针对非空白行做行号显示,空白行不标行号!-E:将结尾的断行字节 $ 显示出来;-n:列印出行号,连同空白行也会有行号,与 -b 的选项不同;-T:将 [tab] 按键以 ^I 显示出来;-v:列出一些看不出来的特殊字符范例一:检阅 /etc/issue 这个文件的内容[root@www ~]# cat /etc/issueCentOS release 5.3 (Final)Kernel
on an m范例二:承上题,如果还要加印行号呢?[root@www ~]# cat -n /etc/issue 1CentOS release 5.3 (Final) 2Kernel
on an m 3# 看到了吧!可以印出行号呢!这对於大文件要找某个特定的行时,有点用处!# 如果不想要编排空白行的行号,可以使用『cat -b /etc/issue』,自己测试看看:范例三:将 /etc/xinetd.conf 的内容完整的显示出来(包含特殊字节)[root@www ~]# cat -A /etc/xinetd.conf#$....(中间省略)....$defaults${$# The next two items are intended to be a quick access place to$....(中间省略)....^Ilog_type^I= SYSLOG daemon info $^Ilog_on_failure^I= HOST$^Ilog_on_success^I= PID HOST DURATION EXIT$....(中间省略)....includedir /etc/xinetd.d$ $# 上面的结果限於篇幅,鸟哥删除掉很多数据了。另外,输出的结果并不会有特殊字体,# 鸟哥上面的特殊字体是要让您发现差异点在哪里就是了。基本上,在一般的环境中,# 使用 [tab] 与空白键的效果差不多,都是一堆空白啊!我们无法知道两者的差别。# 此时使用 cat -A 就能够发现那些空白的地方是啥鬼东西了![tab]会以 ^I 表示,# 断行字节则是以 $ 表示,所以你可以发现每一行后面都是 $ 啊!不过断行字节# 在Windows/Linux则不太相同,Windows的断行字节是 ^M$ 罗。
tac (反向列示)
[root@www ~]# tac /etc/issueKernel
on an mCentOS release 5.3 (Final)# 嘿嘿!与刚刚上面的范例一比较,是由最后一行先显示喔!
nl (添加行号列印)
[root@www ~]# nl [-bnw] 文件选项与参数:-b:指定行号指定的方式,主要有两种:-b a :表示不论是否为空行,也同样列出行号(类似 cat -n);-b t :如果有空行,空的那一行不要列出行号(默认值);-n:列出行号表示的方法,主要有三种:-n ln :行号在萤幕的最左方显示;-n rn :行号在自己栏位的最右方显示,且不加 0 ;-n rz :行号在自己栏位的最右方显示,且加 0 ;-w:行号栏位的占用的位数。范例一:用 nl 列出 /etc/issue 的内容[root@www ~]# nl /etc/issue 1CentOS release 5.3 (Final) 2Kernel
on an m# 注意看,这个文件其实有三行,第三行为空白(没有任何字节),# 因为他是空白行,所以 nl 不会加上行号喔!如果确定要加上行号,可以这样做:[root@www ~]# nl -b a /etc/issue 1CentOS release 5.3 (Final) 2Kernel
on an m 3# 呵呵!行号加上来罗~那么如果要让行号前面自动补上 0 呢?可这样[root@www ~]# nl -b a -n rz /etc/issue000001CentOS release 5.3 (Final)000002Kernel
on an m000003# 嘿嘿!自动在自己栏位的地方补上 0 了~默认栏位是六位数,如果想要改成 3 位数?[root@www ~]# nl -b a -n rz -w 3 /etc/issue001 CentOS release 5.3 (Final)002 Kernel
on an m003# 变成仅有 3 位数罗~
more (一页一页翻动)
[root@www ~]# more /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中间省略)....--More--(28%)<== 重点在这一行喔!你的光标也会在这里等待你的命令空白键 (space):代表向下翻一页; Enter :代表向下翻『一行』; /字串 :代表在这个显示的内容当中,向下搜寻『字串』这个关键字; :f :立刻显示出档名以及目前显示的行数; q :代表立刻离开 more ,不再显示该文件内容。 b 或 [ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。[root@www ~]# more /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中间省略)..../MANPATH <== 输入了 / 之后,光标就会自动跑到最底下一行等待输入!
less (一页一页翻动)
[root@www ~]# less /etc/man.config## Generated automatically from man.conf.in by the# configure script.## man.conf from man-1.6d....(中间省略)....:<== 这里可以等待你输入命令!空白键 :向下翻动一页; [pagedown]:向下翻动一页; [pageup] :向上翻动一页; /字串 :向下搜寻『字串』的功能; ?字串 :向上搜寻『字串』的功能; n :重复前一个搜寻 (与 / 或 ? 有关!) N :反向的重复前一个搜寻 (与 / 或 ? 有关!) q :离开 less 这个程序;
head (取出前面几行)
[root@www ~]# head [-n number] 文件 选项与参数:-n:后面接数字,代表显示几行的意思[root@www ~]# head /etc/man.config# 默认的情况中,显示前面十行!若要显示前 20 行,就得要这样:[root@www ~]# head -n 20 /etc/man.config范例:如果后面100行的数据都不列印,只列印/etc/man.config的前面几行,该如何是好?[root@www ~]# head -n -100 /etc/man.config
[root@www ~]# od [-t TYPE] 文件选项或参数:-t:后面可以接各种『类型 (TYPE)』的输出,例如:a :利用默认的字节来输出;c :使用 ASCII 字节来输出d[size] :利用十进位(decimal)来输出数据,每个整数占用 size bytes ;f[size] :利用浮点数值(floating)来输出数据,每个数占用 size bytes ;o[size] :利用八进位(octal)来输出数据,每个整数占用 size bytes ;x[size] :利用十六进位(hexadecimal)来输出数据,每个整数占用 size bytes ;范例一:请将/usr/bin/passwd的内容使用ASCII方式来展现![root@www ~]# od -t c /usr/bin/passwd0000000 177 E L F 001 001 001 0000020 002 003 001 260 225 004 4 0000040 020 E 4 a ( 0000060 035 034 006 4 4 200 0040000100 4 200 004 340 340 005 .....(后面省略)....# 最左边第一栏是以 8 进位来表示bytes数。以上面范例来说,第二栏0000020代表开头是# 第 16 个 byes (2x8) 的内容之意。范例二:请将/etc/issue这个文件的内容以8进位列出储存值与ASCII的对照表[root@www ~]# od -t oCc /etc/issue0000000 103 145 156 164 117 123 040 162 145 154 145 141 163 145 040 065C e n t O S r e l e a s e 50000020 056 062 040 050 106 151 156 141 154 051 012 113 145 162 156 145. 2 ( F i n a l )
K e r n e0000040 154 040 134 162 040 157 156 040 141 156 040 134 155 012 012l r o n a n m
0000057# 如上所示,可以发现每个字节可以对应到的数值为何!# 例如e对应的记录数值为145,转成十进位:1x8^2+4x8+5=101。
修改文件时间或建置新档: touch
modification time (mtime): 当该文件的『内容数据』变更时,就会升级这个时间!内容数据指的是文件的内容,而不是文件的属性或权限喔!
status time (ctime): 当该文件的『状态 (status)』改变时,就会升级这个时间,举例来说,像是权限与属性被更改了,都会升级这个时间啊。