在大家刚接触Linux操作系统,首先都会让你了解linux的哲学思想:一切皆文件;那么今天就带大家认识linux中的一些文本查看工具。


1、cat和tac

连接文件并在标准输出上打印;其中cat是正向显示;tac是倒着显示

  • 格式:cat [  options ]... [ FILE ]...

  • 选项:

    -E filename 能看到行的结束符

    -A filename 能看到tab键 回车

    -n filename 加行号

    -s filename 压缩空行(连续相邻的空行)

    -b 加行号,但空行不加    cat > f3 给文件写入内容(nl==cat -b )

  • 实例:

[ root@vinsent ~ ]#vim 1[ root@vinsent ~ ]#[ root@vinsent ~ ]#[ root@vinsent ~ ]#cat 1 # 直接cat文件名,便可看见文件中的内容,保留原格式12dsfghjkhadoop[ root@vinsent ~ ]#cat -n 1  # -n 查看时添加行号     1    12     2    dsf     3         4    ghjk     5             6    hadoop[ root@vinsent ~ ]#cat -E 1  # -E 选项能看到每行的结束符$12$dsf$$ghjk$    $hadoop$[ root@vinsent ~ ]#cat -A 1  # -A 能看到详细的信息,包括tab键以及行结束符 12$dsf$$ghjk$^I$hadoop$[ root@vinsent ~ ]#tac 1  # tac 将文件内容倒着显示hadoop    ghjkdsf12[ root@vinsent ~ ]#


2、more:

more功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

  • 格式:

    more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]

  • 选项:

    +n      从笫n行开始显示

    -n       定义屏幕大小为n行

    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  

    -c       从顶部清屏,然后显示

    -d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能,静默模式

    -l        忽略Ctrl+l(换页)字符

    -p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似

    -s       把连续的多个空行显示为一行

    -u       把文件内容中的下画线去掉

  • 实例

[ root@vinsent ~ ]#cat -n /etc/passwd | more +4  # 表示从第4行开始显示     4    adm:x:3:4:adm:/var/adm:/sbin/nologin     5    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin     6    sync:x:5:0:sync:/sbin:/bin/sync     7    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown...后面省略...[ root@vinsent ~ ]#cat -n /etc/passwd | more -4  # 定义屏幕大小为4行,可通过相应操作来上下翻屏     1    root:x:0:0:root:/root:/bin/bash     2    bin:x:1:1:bin:/bin:/sbin/nologin     3    daemon:x:2:2:daemon:/sbin:/sbin/nologin     4    adm:x:3:4:adm:/var/adm:/sbin/nologin[ root@vinsent ~ ]#cat -n /etc/passwd | more +/halt  # 从halt的行开始显示...skipping     8    halt:x:7:0:halt:/sbin:/sbin/halt     9    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin    10    operator:x:11:0:operator:/root:/sbin/nologin    11    games:x:12:100:games:/usr/games:/sbin/nologin    12    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin    13    nobody:x:99:99:Nobody:/:/sbin/nologin    14    systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin    15    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin...后面的省略...[ root@vinsent ~ ]#
  • 说明:上述实验中,先通过 " cat -n /etc/passwd "让我们显示的时候添加行号,这样方便说明;在通过管道传给 more 命令。这里只做了一些选项的实验,有兴趣的可以把每个选项的都做做。


3、less命令

less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大。less 的用法比起 more 更加的有弹性。 在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按 键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。

  • 格式:

    less [ OPTIONS  ] FILE...

  • 选项:

    -b <缓冲区大小> 设置缓冲区的大小

    -e  当文件显示结束后,自动离开

    -f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件

    -g  只标志最后搜索的关键词

    -i  忽略搜索时的大小写

    -m  显示类似more命令的百分比

    -N  显示每行的行号

    -o <文件名> 将less 输出的内容在指定文件中保存起来

    -Q  不使用警告音

    -s  显示连续空行为一行

    -S  行过长时间将超出部分舍弃

    -x <数字> 将“tab”键显示为规定的数字空格

  • 常见操作:和man命令中的操作一致;其实man命令的操作都来自less

    /字符串:向下搜索“字符串”的功能

    ?字符串:向上搜索“字符串”的功能

    n:重复前一个搜索(与 / 或 ? 有关)

    N:反向重复前一个搜索(与 / 或 ? 有关)

    b  向后翻一页

    d  向后翻半页

    h  显示帮助界面

    Q  退出less 命令

    u  向前滚动半页

    y  向前滚动一行

    空格键 滚动一行

    回车键 滚动一页

    [pagedown]: 向下翻动一页

    [pageup]:   向上翻动一页

  • 实例

[ root@vinsent ~ ]#ps -ef | less -N         # -N 显示行号;这里表示显示进程信息是加行号显示       1 UID         PID   PPID  C STIME TTY          TIME CMD      2 root          1      0  0 12:30 ?        00:00:00 /usr/lib/systemd/systemd --switche            3 root          2      0  0 12:30 ?        00:00:00 [kthreadd]      4 root          3      2  0 12:30 ?        00:00:00 [ksoftirqd/0]      5 root          6      2  0 12:30 ?        00:00:00 [kworker/u256:0]      6 root          7      2  0 12:30 ?        00:00:00 [migration/0]      7 root          8      2  0 12:30 ?        00:00:00 [rcu_bh]      8 root          9      2  0 12:30 ?        00:00:00 [rcu_sched]      9 root         10      2  0 12:30 ?        00:00:00 [watchdog/0]     10 root         12      2  0 12:30 ?        00:00:00 [khelper]     11 root         13      2  0 12:30 ?        00:00:00 [kdevtmpfs]     12 root         14      2  0 12:30 ?        00:00:00 [netns]     13 root         15      2  0 12:30 ?        00:00:00 [khungtaskd]     14 root         16      2  0 12:30 ?        00:00:00 [writeback]     15 root         17      2  0 12:30 ?        00:00:00 [kintegrityd]...后面省略...[ root@vinsent ~ ]#touch 1.txt         # 先创建两个文件并写入内容 ,[ root@vinsent ~ ]#touch 2.txt[ root@vinsent ~ ]#vim 1.txt [ root@vinsent ~ ]#vim 2.txt [ root@vinsent ~ ]#less 1.txt 2.txt    # less 浏览多个文件dhgfaskhsdfkjasdhfi1.txt (file 1 of 2) (END) - Next: 2.txt  # 显示了第一个文件的内容,并提示下一个文件Next: 2.txt
  • 说明:

    输入 :n 后,切换到 2.txt

    输入 :p 后,切换到 1.txt

  • 其他用法

    ctrl + F : 向前移动一屏

    ctrl + B :向后移动一屏

    ctrl + D:向前移动半屏

    ctrl + U: 向后移动半屏

    j : 向前移动一行

    k : 向后移动一行

    v : 使用配置的编辑器编辑当前文件

    h : 显示 less 的帮助文档

    &pattern : 仅显示匹配模式的行,而不是整个文件


4、tail 和 head :

tail查看文件尾部;head用于查看文件头部,默认为前10行,也可认为指定显示的行数。

  • 格式:

    head [ OPTIONS ] FILE

    tail [ OPTIONS ] FILE

  • 选项:

    • head的选项:

      -c :打印每个文件的第一个K字节; 使用前导“ - ”,打印每个文件的最后一个K字节

      -n:打印第一个K行而不是前10个; 以' - '为首,打印每个文件的最后K行

      -q:从不打印头文件名

      -v:始终打印头文件名

    • tail 的选项:

      -c:打印每个文件的第一个K字节; 使用前导“ - ”,打印每个文件的最后一个K字节

      -f:当文件增长时输出附加数据;缺少的选项参数表示“描述符”

      -F:与--follow = name --retry一样

      -n:打印第一个K行而不是前10个; 以' - '为首,打印每个文件的最后K行

      -s:与-f,休息大概N秒(默认1.0)之间; 与inotify和--pid = P,检查过程P至少每N秒一次

      -q:从不打印头文件名

  • 实例:

[ root@vinsent ~ ]#head -n 5 /etc/passwd  # 查看前5行内容root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologin[ root@vinsent ~ ]#tail -n 5 /etc/passwd   # 查看后5行postfix:x:89:89::/var/spool/postfix:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinvinsent:x:1000:1000:vinsent:/home/vinsent:/bin/bashmage:x:1001:1001::/home/mage:/bin/bashquagga:x:92:92:Quagga routing suite:/var/run/quagga:/sbin/nologin[ root@vinsent ~ ]#[ root@vinsent ~ ]#head -n 5 /etc/passwd | tail -1  # 只显示第5行lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin[ root@vinsent ~ ]#