Linux 文件内容查阅
如果我们要查阅一个文件的内容时,该如何是好呢?这里有相当多有趣的指令可以来分享一下:最常使用的显示文件内容的指令可以说是cat 与more及less 了!此外,如果我们要查看一个很大型的文件(好几百MB时),但是我们只需要后端的几行字而已,那么该如何是好?用tail,此外,tac 这个指令也可以达到这个目的喔!好了,说说各个指令的用途吧!
cat 由第一行开始显示文件内容
tac从最后一行开始显示,可以看出tac是cat的倒着写!
nl显示的时候,顺道输出行号!
more一页一页的显示文件内容
less与more 类似,但是比more 更好的是,他可以往前翻页!
head只看头几行
tail只看尾巴几行
od以二进制的方式读取文件内容
嘿嘿! Linux 里面有「猫」指令?喔!不是的,cat是Concatenate (连续)的简写,主要的功能是.将一个文件的内容连续的印出在屏幕上面!例如上面的例子中,我们将/etc/issue 印出来!如果加上-n或-b的话,则每一行前面还会加上行号呦!
当你的文件内容的行数超过40行以上,嘿嘿!根本来不及在屏幕.上看到结果!所以, 配合等一下要介绍的more或者是less 来执行比较好!此外,如果是一般的DOS文件时,就需要特别留意一些奇奇怪怪的符号了,例如断行与[tab] 等,要显示出来,就得加入-A之类的选项了!
nl可以将输出的文件内容自动的加上行号!其预设的结果与cat-n 有点不太一样,nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能呢。
仔细的给他看到上面的范例,如果more后面接的文件内容行数大于屏幕输出的行数时,就会出现类似上面的图示。重点在最后一行,最后一行会显示出目前显示的百分比,而且还可以在最后一行输入一些有用的指令喔!在more 这个程序的运作过程中,你有几个按键可以按的:
- 空格键(space): 代表向下翻一页;
- Enter:代表向下翻「一行」;
- 字符串:代表在这个显示的内容当中,向下搜寻[字符串」这个关键词;
- :f立刻显示出文件名以及目前显示的行数;
- q:代表立刻离开more ,不再显示该文件内容。
- b或[ctrl]-b :代表往回翻页,不过这动作只对文件有用,对管线无用。
要离开more 这个指令的显示工作,可以按下q就能够离开了。而要向下翻页,就使用空格键即可。比较有用的是搜寻字符串的功能,举例来说,我们使用「more /etc/man _db.conf」来观察该文件,若想要在该文件内搜寻MANPATH这个字符串时,可以这样做:
如同上面的说明,输入了 / 之后,光标就会跑到最底下一行,并且等待你的输入,你输入 了字符串.并按下[enter]之后,嘿嘿! more 就会开始向下搜寻该字符串喽~而重复搜寻同一个字符串,可以直接按下n即可啊!最后,不想要看了,就按下q即可离开more啦!
less的用法比起more又更加的有弹性,怎么说呢?在more 的时候,我们并没有办法向前面翻,只能往后面看,但若使用了less 时,呵呵!就可以使用[pageup] [pagedown]等按键的功能来往前往后翻看文件,你瞧,是不是更容易使用来观看一个文件的内容了呢!
除此之外,在less 里头可以拥有更多的[搜寻」功能喔!不止可以向下搜寻,也可以向上搜寻~实
在是很不错用~基本上,可以输入的指令有:
- 空格键: 向下翻动一页;
- [pagedown]:向下翻动一页;
- [pageup] :向上翻动一页;
- /字符串:向下搜寻[字符串」的功能; .
- ?字符串:向上搜寻[字符串」的功能; .
- n:重复前一个搜寻(与/或?有关!)
- N:反向的重复前一个搜寻(与1或?有关! )
- g:前进到这个资料的第一行去;
- G前进到这个数据的最后一行去(注意大小写);
- q:离开less 这个程序;
查阅文件内容还可以进行搜寻的动作~瞧~ less 是否很不错用啊!其实less还有很多的功能喔!详细的使用方式请使用manless 查询一下啊! ^ ^
你是否会觉得less使用的画面与环境与manpage非常的类似呢?没错啦!因为man这个指令就是呼叫less 来显示说明文件的内容的!现在你是否觉得 less 很重要呢? ^_ ^
head的英文意思就是「头」啦,那么这个东西的用法自然就是显示出一个文件的前几行喽!没错 !就是这样!若没有加上-n这个选项时,默认只显示十行,若只要一行呢?那就加入「head -n l filename」即可!
另外那个-n选项后面的参数较有趣,如果接的是负数,例如上面范例的-n -100时,代表列前的所有行数,但不包括后面100行。举例来说CentOS 7.1的/etc/man db.conf 共有131 行,则上述的指令[head -n -100 /et/man_ db.conf」 就会 列出前面31行,后面100行不会打印出来了。这样说,比较容易懂了吧?
有head 自然就有tail( 尾巴)喽!没错!这个tail 的用法跟head 的用法差不多类似,只是显示的是后面几行就是了!默认也是显示十行,若要显示非十行,就加-n number的选项即可。
范例一的内容就有趣啦!其实与head -n -xx有异曲同工之妙。当下达「tail -n +100 /etc/man db.conf」代表该文件从100行以后都会被列出来,同样的,在man db.conf共有131行,因此第100~131行就会被列出来啦!前面的99行都不会被显示出来喔!
至于范例二中,由于/var/log/messages随时会有数据写入,你想要让该文件有数据写入时就立刻显示到屏幕上,就利用-f 这个选项,他可以一直侦测/var/log/messages这个文件,新加入的数据都会被显示到屏幕上。直到你按下[ertl]-c才会离开tail的侦测喔!由于messages 必须要root 权限才能看,所以该范例得要使用root 来查询喔!