失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 详解Linux高效命令head tail和cat

详解Linux高效命令head tail和cat

时间:2019-12-05 02:37:01

相关推荐

详解Linux高效命令head tail和cat

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

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

head

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

1

head [options] [file(s)]

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

head /etc/passwd

root❌0:0:root:/root:/bin/bash

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

bin❌2:2:bin:/bin:/bin/sh

sys❌3:3:sys:/dev:/bin/sh

sync❌4:65534:sync:/bin:/bin/sync

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

man❌6:12?/var/cache/man:/bin/sh

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

mail❌8:8:mail:/var/mail:/bin/sh

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

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

head /etc/passwd /etc/shadow

> /etc/passwd <root❌0:0:root:/root:/bin/bash bin❌1:1:bin:/bin:/sbin/nologin daemon❌2:2:daemon:/sbin:/sbin/nologin adm❌3:4:adm:/var/adm:/sbin/nologin lp❌4:7:lp:/var/spool/lpd:/sbin/nologin sync❌5:0:sync:/sbin:/bin/sync shutdown❌6:0:shutdown:/sbin:/sbin/shutdown halt❌7:0:halt:/sbin:/sbin/halt mail❌8:12:mail:/var/spool/mail:/sbin/nologin uucp❌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-: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./v6exp3/redir.html pg

1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-: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-:443 - NONE/- text/html

1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-: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-: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./v6exp3/redir.html pg 1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-: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-:443 - NONE/- text/html 1390288226.808 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-:443 - NONE/- text/html> error_log <

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

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

[Sun Mar 30 03:16:03 ] [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行数的内容。

tail -5 access.log

1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-: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-:443 - NONE/- text/html

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

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

tail -c5 access.log

:443 - NONE/- text/html

3. cat

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

语法格式:

1

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

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

cat /etc/passwd

root❌0:0:root:/root:/bin/bash

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

bin❌2:2:bin:/bin:/bin/sh

sys❌3:3:sys:/dev:/bin/sh

sync❌4:65534:sync:/bin:/bin/sync

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

man❌6:12?/var/cache/man:/bin/sh

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

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

echo ‘Hi Tecmint-Team’ > 1

echo ‘Keep connected’ > 2

echo ‘Share your thought’ > 3

echo ‘connect us @’ > 4

cat 1 2 3 4 > 5

cat 5

Hi Tecmint-Team

Keep connected

Share your thought

connect us @

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

cat > tecmint.txt

Tecmint is the only website fully dedicated to Linux.

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

cat > test.txt << end

I am Avishek

Here i am writing this post

Hope your are enjoying

end

cat test.txt

I am Avishek

Here i am writing this post

Hope your are enjoying

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

cat avi.txt

I am a Programmer by birth and Admin by profession

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文件并在其中输入各月份的单词,每个单词占一行。

cat month

January

February

March

April

May

June

July

August

September

October

November

December

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

tac month

December

November

October

September

August

July

June

May

April

March

February

January

如果觉得《详解Linux高效命令head tail和cat》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。