linux head和tail命令详解


除了上面的more和less命令,我们也可以使用head和tail命令来显示文件的部分内容。 head和tail也是以行为单位来显示文件内容。 head和tail显示文件的部分内容,默认情况下,head显示文件的前10行,而tail显示文件的最后10行。 可以用-n选项指定要显示的行数。

head命令显示文件的开头几行,常用命令格式如下:

              [root@initroot ~]# head [-n number] 文件
            
head命令默认显示文件的前十行,-n选项后接数字,可以指定显示文件的行数。 显示/etc/manpath.config文件的前十行:
              [root@initroot ~]# head /etc/manpath.config
            
显示/etc/manpath.config文件的前二十行:
              [root@initroot ~]# head -n 20 /etc/manpath.config
            
-n选项后面接的数字可以是负数,表示显示文件前面的内容,但是不包括文件最后的n行。例如-n -100表示除了最后的100行内容不显示外,其他内容都显示出来:
              [root@initroot ~]# head -n -100 /etc/man_db.conf
            

以/etc/passwd为例:

              peter@initroot:~/Desktop$ head /etc/passwd
              root:x:0:0:root:/root:/bin/bash
              daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
              bin:x:2:2:bin:/bin:/usr/sbin/nologin
              sys:x:3:3:sys:/dev:/usr/sbin/nologin
              sync:x:4:65534:sync:/bin:/bin/sync
              games:x:5:60:games:/usr/games:/usr/sbin/nologin
              man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
              lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
              mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
              news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
            
              peter@initroot:~/Desktop$ head -n 5 /etc/passwd
              root:x:0:0:root:/root:/bin/bash
              daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
              bin:x:2:2:bin:/bin:/usr/sbin/nologin
              sys:x:3:3:sys:/dev:/usr/sbin/nologin
              sync:x:4:65534:sync:/bin:/bin/sync
            

2.tail命令

回到顶部

tail命令和head命令正好相反,显示文件的最后几行。常见的命令格式如下:

              [root@initroot ~]# tail [-n number] 文件
              选项与参数:
              -n :后面接数字,代表显示文件最后几行
              -f :表示持续读取并显示文件,直到按下ctrl-c才会结束tail
            
用tail命令查看/etc/manpath.config文件:
             [root@initroot ~]# tail /etc/manpath.config
            
tail默认显示文件的最后十行,加上-n选项可以指定查看的行数,类似与head -n -xx命令。 用tail命令查看/etc/manpath.config文件的最后20行:
              [root@initroot ~]# tail -n 20 /etc/manpath.config
            
如果不知道/etc/manpath.config文件有几行,却只想列出100行以后的文件内容:
              [root@initroot ~]# tail -n +100 /etc/manpath.conf
            
持续读取显示/var/log/messages文件的最后十行:
              [root@initroot ~]# tail -f /var/log/syslog
              Jan  8 15:53:12 initroot dbus-daemon[502]: [system] Activating via systemd: service name='org.freedesktop.nm_dispatcher' unit='dbus-org.freedesktop.nm-dispatcher.service' requested by ':1.12' (uid=0 pid=554 comm="/usr/sbin/NetworkManager --no-daemon " label="unconfined")
              Jan  8 15:53:12 initroot systemd[1]: Starting Network Manager Script Dispatcher Service...
              Jan  8 15:53:12 initroot dbus-daemon[502]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
              Jan  8 15:53:12 initroot systemd[1]: Started Network Manager Script Dispatcher Service.
              Jan  8 15:53:12 initroot nm-dispatcher: req:1 'connectivity-change': new request (1 scripts)
              Jan  8 15:53:12 initroot nm-dispatcher: req:1 'connectivity-change': start running ordered scripts...
              Jan  8 16:06:34 initroot gnome-terminal-[1748]: g_menu_insert_item: assertion 'G_IS_MENU_ITEM (item)' failed
              Jan  8 16:07:10 initroot gnome-terminal-[1748]: g_menu_insert_item: assertion 'G_IS_MENU_ITEM (item)' failed
              Jan  8 16:17:01 initroot CRON[3809]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
              Jan  8 16:33:17 initroot gnome-terminal-[1748]: g_menu_insert_item: assertion 'G_IS_MENU_ITEM (item)' failed
              ^C
              peter@initroot:~$ 
            
只有在用户按下crtl-c之后,tail才会退出。-f选项可以持续监听文件的变化,这对于查看一些经常变化的文件非常有帮助,例如本例中系统日志文件。
显示文件/etc/manpath.conf的第11行到第20行:
              [root@initroot ~]# head -n 20 /etc/manpath.conf | tail -n 10
            
在上面的输出中加入行号:
              [root@initroot ~]# cat -n /etc/manpath.conf | head -n 20 | tail -n 10
            
这里用到管道将几个命令串联到一起,这样前一个命令的输出就变成了后一个命令的输入。 关于管道的概念参考: linux管道
              peter@initroot:~/Desktop$ tail /etc/passwd
              speech-dispatcher:x:117:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/false
              pulse:x:118:124:PulseAudio daemon,,,:/var/run/pulse:/usr/sbin/nologin
              hplip:x:119:7:HPLIP system user,,,:/var/run/hplip:/bin/false
              geoclue:x:120:126::/var/lib/geoclue:/usr/sbin/nologin
              peter:x:1000:1000:peter,,,:/home/peter:/bin/bash
              vboxadd:x:999:1::/var/run/vboxadd:/bin/false
              mysql:x:1001:1001::/home/mysql:/sbin/nologin
              www:x:1002:1002::/home/www:/sbin/nologin
              sshd:x:121:65534::/run/sshd:/usr/sbin/nologin
              postfix:x:122:128::/var/spool/postfix:/usr/sbin/nologin
              
              peter@initroot:~/Desktop$ tail -n 5 /etc/passwd
              vboxadd:x:999:1::/var/run/vboxadd:/bin/false
              mysql:x:1001:1001::/home/mysql:/sbin/nologin
              www:x:1002:1002::/home/www:/sbin/nologin
              sshd:x:121:65534::/run/sshd:/usr/sbin/nologin
              postfix:x:122:128::/var/spool/postfix:/usr/sbin/nologin
              

initroot编辑整理,转载请注明www.initroot.com

100次点赞 100次阅读