详解Linux高效命令head、tail和cat

Linux中提供了多种命令和程序用于浏览文件。无论对于新手、普通用户、高级用户、开发人员还是管理员来说,与诸多文件打交道都是一项艰巨的任务。而如何做到高效更称得上是一门艺术。

今天就让我们来探讨几个最常使用的命令head、tail和cat,多数人对他们都有所了解,但这其中绝大部分人在真正使用的时候恐怕就不知所措了。

1. head

head命令用于获取一个文件的前10行内容。其基本的语法格式如下:


1

head [options] [file(s)]

如下面的命令会打印出“/etc/passwd”的前10行内容:


1

2

3

4

5

6

7

8

9

10

11

12


# head /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

mail:x:8:8:mail:/var/mail:/bin/sh

news:x:9:9:news:/var/spool/news:/bin/sh

如果一次提供了多个文件,那head命令会分别返回每个文件的前10行内容。如:


1

2

3

4

5

6

7

8

9

10

11

12

13


# head /etc/passwd /etc/shadow

==> /etc/passwd <== root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin ==> /etc/shadow <==

root:$6$85e1:15740:0:99999:7:::

bin:*:15513:0:99999:7:::

daemon:*:15513:0:99999:7:::

adm:*:15513:0:99999:7:::

lp:*:15513:0:99999:7:::

sync:*:15513:0:99999:7:::

shutdown:*:15513:0:99999:7:::

halt:*:15513:0:99999:7:::

mail:*:15513:0:99999:7:::

uucp:*:15513:0:99999:7:::

如果想查看多于10行的内容,利用“-n”选项并跟上一个整数则可指定返回的行数。下面的例子将返回“/var/log/yum.log”的前5行内容:


1

2

3

4

5

6

7


# head -n5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686

Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686

Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686

Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch

Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

实际上,“-n”都是不需要的。只需使用一个连字符外加一个整数即可达到同样的效果,注意他们之间不含空格。


1

2

3

4

5

6

7


# head  -5 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686

Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686

Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686

Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarch

Jan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch

head命令还支持使用“-c”选项返回指定字节长度的内容。例如,下面的命令将返回指定的文件前45字节内容:


1

2

3


# head -c45 /var/log/yum.log

Jan 10 00:06:49 Updated: openssl-1.0.1e-16.el

2. tail

tail命令用于获取一个文本文件的后10行内容。该命令和head很相似,同样支持传入“n”选项来指定行数。

语法格式:


1

# tail [options] [filenames]

下面的命令将返回“access.log”的后10行内容。


1

2

3

4

5

6

7

8

9

10

11

12


# tail access.log

1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html

1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html

1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 -

1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg 

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html

1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html

1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

如果传入了多个文件,那么tail命令将会分别显示出这些文件的后10行内容。


1

2

3

4

5

6


# tail access.log error.log

==> access.log <== 1390288226.042      0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html 1390288226.198      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.210   1182 172.16.20.44 TCP_MISS/200 70872 GET http://mahavat.gov.in/Mahavat/index.jsp pg DIRECT/61.16.223.197 text/html 1390288226.284     70 172.16.20.44 TCP_MISS/304 269 GET http://mahavat.gov.in/Mahavat/i/i-19.gif pg DIRECT/61.16.223.197 - 1390288226.362    570 172.16.176.139 TCP_MISS/200 694 GET http://p4-gayr4vyqxh7oa-3ekrqzjikvrczq44-if-v6exp3-v4.metric.gstatic.com/v6exp3/redir.html pg  1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html 1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html 1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html ==> error_log <==

[Sun Mar 30 03:16:03 2014] [notice] Digest: generating secret for digest authentication ...

[Sun Mar 30 03:16:03 2014] [notice] Digest: done

[Sun Mar 30 03:16:03 2014] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips configured -- resuming normal operations

同样,你可以利用“-n”来获取最后n行数的内容。


1

2

3

4

5

6


# tail -5 access.log

1390288226.402      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

1390288226.437    145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html

1390288226.445      0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html

1390288226.605      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

1390288226.808      0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html

或者利用“-c”来指定返回的字节数。


1

2

3


# tail -c5 access.log

ymantec.com:443 - NONE/- text/html

3. cat

cat是使用最为广泛而通用的工具。它将标准输入拷贝至标准输出。在文本文件超出了屏幕范围时,该命令还支持滚动。

语法格式:


1

# cat [options] [filenames] [-] [filenames]

那最常使用的方法要数读取一个文件的所有内容。你要做的就是输入“cat”外带一个空格并在其后跟上文件名即可。


1

2

3

4

5

6

7

8

9

10

11


# cat /etc/passwd

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/bin/sh

bin:x:2:2:bin:/bin:/bin/sh

sys:x:3:3:sys:/dev:/bin/sh

sync:x:4:65534:sync:/bin:/bin/sync

games:x:5:60:games:/usr/games:/bin/sh

man:x:6:12:man:/var/cache/man:/bin/sh

lp:x:7:7:lp:/var/spool/lpd:/bin/sh

cat命令还用来串联多个文件:


1

2

3

4

5

6

7

8

9

10

11

12

13


# echo ‘Hi Tecmint-Team‘ > 1 

# echo ‘Keep connected‘ > 2 

# echo ‘Share your thought‘ > 3 

# echo ‘connect us [email protected]‘ > 4

# cat 1 2 3 4 > 5

# cat 5

Hi Tecmint-Team 

Keep connected 

Share your thought 

connect us t[email protected]

也可用于创建新文件。可以在cat命令后外加一个输出重定向操作符和新文件的文件名即可。


1

2

3


# cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

我们可以定制cat命令的结束符。默认的行为如下:


1

2

3

4

5

6


# cat > test.txt << end

I am Avishek 

Here i am writing this post 

Hope your are enjoying 

end


1

2

3

4

5


# cat test.txt

I am Avishek 

Here i am writing this post 

Hope your are enjoying

可别低估cat的力量,他还可以用来复制文件!


1

2

3


# cat avi.txt

I am a Programmer by birth and Admin by profession


1

2

3

4


# cat avi.txt > avi1.txt

# cat avi1.txt

I am a Programmer by birth and Admin by profession

那与cat相对的命令是什么呢?它是tac。tac也是Linux中的一个命令。让我们用一个例子来展示tac,我想这比什么都强!

我们首先用cat命令来创建一个month文件并在其中输入各月份的单词,每个单词占一行。


1

2

3

4

5

6

7

8

9

10

11

12

13


# cat month

January

February

March

April

May

June

July

August

September

October

November

December

然后来看看tac的效果如何。


1

2

3

4

5

6

7

8

9

10

11

12

13

14


# tac month

December

November

October

September

August

July

June

May

April

March

February

January

是不是很有趣呢。以上就是今天的全部内容。

____________________________

推荐阅读:

Logstash+Kafka+ES实现日志采集系统

大数据开放平台产品落地方案

支付宝系统架构内部剖析

华为Java编程军规,每季度代码验收标准

大数据Spark与Storm技术选型

原文地址:https://www.cnblogs.com/Javame/p/9758638.html

时间: 2024-08-30 03:54:50

详解Linux高效命令head、tail和cat的相关文章

详解Linux Top 命令

Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界面如下图所视: linux top示例 top 界面分为两个部份,光标上面部份显示关于系统整体性能,光标下面部份显示各进程信息.光标所在处是用来输入操作命令的. Linux top命令界面 第一行显示的内容和uptime命令一样,[l]可以显示和隐藏这个区域: top界面第一行|uptime top

(转)linux traceroute命令参数及用法详解--linux跟踪路由命令

linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径.当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的.linux系统中,我们称之为traceroute,在MS

Linux tar 命令参数及用法详解--Linux打包备份命令

linux tar命令参数及用法详解--linux打包备份命令 tar命令 tar - tar 档案文件管理程序的 GNU 版本.下面将逐个介绍其含义tar [-cxtzjvfpPN] 文件与目录 ....常用参数:-c :建立一个压缩文件的参数指令(create 的意思):-x :解开一个压缩文件的参数指令!-t :查看 tarfile 里面的文件!特别注意,在参数的下达中, c/x/t 仅能存在一个!不可同时存在!因为不可能同时压缩与解压缩.-z :是否同时具有 gzip 的属性?亦即是否需

详解linux文件处理的的常用命令

原创Blog,转载请注明出处 附上之前访问量比较高的几篇linux博客 本人使用shell的8个小技巧 grep的九个经典使用场景 sed命令详解 awk命令详解 linux中所有的东西都是文件,命令就是一个一个二进制文件 1.ls /bin/ls 常用选项 -a 所有文件(包括隐藏文件) -l 详细信息 -d 目录属性 -i 查看inode 举例 [[email protected] testForCsdn]# ls fileList first second [[email protecte

一张图详解Linux中的top命令

一张图详解Linux中的top命令及每个参数的含义:

watch命令详解(linux)

watch命令详解(linux)         在维护系统时经常需要实时查看系统的运行情况,比如实时的系统连接数之类的.在linux可以通过watch命令,实时监控每一条命令执行的结果动态变化.   watch命令可以实时全屏监控当前命令执行的动态变化结果.watch命令的常用参数有"-n"."-d"."-t"分别表示"时隔多少秒刷新"."高亮显示动态变化"."关闭命令顶部的时间间隔,命令显示&

Linux命令详解之—pwd命令

Linux的pwd命令也是一个非常常用的命令,本文为大家介绍下Linux中pwd命令的用法. 更多Linux命令详情请看:Linux命令速查手册 Linux pwd命令用于显示工作目录. 执行pwd指令可立刻得知您目前所在的工作目录的绝对路径名称. 一.Linux pwd命令语法 pwd [OPTION]... 参数说明: -L, --logical #use PWD from environment, even if it contains symlinks -P, --physical #a

Linux命令详解之–ls命令

今天开始为大家介绍下Linux中常用的命令,首先给大家介绍下Linux中使用频率最高的命令--ls命令. 更多Linux命令详情请看:Linux命令速查手册 linux ls命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录),还可以查看文件的权限(包括目录.文件夹.文件权限),查看目录信息等等,是一个非常强大有用的命令. 一.ls命令语法 ls [-alrtAFR] [name...] 二.ls命令参数 下面给大家介绍几个ls命令常用的参数. -a 显示所有文件及目录 (ls

linux cp命令参数及用法详解---linux 复制文件命令cp

linux cp命令参数及用法详解---linux 复制文件命令cp [[email protected]Linux ~]# cp [-adfilprsu] 来源档(source) 目的檔(destination)[[email protected]linux ~]# cp [options] source1 source2 source3 -. directory参数:-a :相当于 -pdr 的意思:-d :若来源文件为连结文件的属性(link file),则复制连结文件属性而非档案本身:-