详解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/passwdroot: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.logJan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarchJan 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.logJan 10 00:06:49 Updated: openssl-1.0.1e-16.el6_5.4.i686Jan 10 00:06:56 Updated: openssl-devel-1.0.1e-16.el6_5.4.i686Jan 10 00:11:42 Installed: perl-Net-SSLeay-1.35-9.el6.i686Jan 13 22:13:31 Installed: python-configobj-4.6.0-3.el6.noarchJan 13 22:13:36 Installed: terminator-0.95-3.el6.rf.noarch |
head命令还支持使用“-c”选项返回指定字节长度的内容。例如,下面的命令将返回指定的文件前45字节内容:
|
1
2
3
|
# head -c45 /var/log/yum.logJan 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.log1390288226.042 0 172.16.18.71 TCP_DENIED/407 1771 GET http://download.newnext.me/spark.bin? - NONE/- text/html1390288226.198 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html1390288226.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/html1390288226.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/html1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html1390288226.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.log1390288226.402 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html1390288226.437 145 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html1390288226.445 0 172.16.18.53 TCP_DENIED/407 1723 OPTIONS http://172.16.25.252/ - NONE/- text/html1390288226.605 0 172.16.16.55 TCP_DENIED/407 1753 CONNECT ent-shasta-rrs.symantec.com:443 - NONE/- text/html1390288226.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.logymantec.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/passwdroot: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 tecmint.com@gmail.com' > 4# cat 1 2 3 4 > 5# cat 5Hi Tecmint-Team Keep connected Share your thought connect us tecmint.com@gmail.com |
也可用于创建新文件。可以在cat命令后外加一个输出重定向操作符和新文件的文件名即可。
|
1
2
3
|
# cat > tecmint.txtTecmint is the only website fully dedicated to Linux. |
我们可以定制cat命令的结束符。默认的行为如下:
|
1
2
3
4
5
6
|
# cat > test.txt << endI am Avishek Here i am writing this post Hope your are enjoying end |
|
1
2
3
4
5
|
# cat test.txtI am Avishek Here i am writing this post Hope your are enjoying |
可别低估cat的力量,他还可以用来复制文件!
|
1
2
3
|
# cat avi.txtI am a Programmer by birth and Admin by profession |
|
1
2
3
4
|
# cat avi.txt > avi1.txt# cat avi1.txtI 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 monthJanuaryFebruaryMarchAprilMayJuneJulyAugustSeptemberOctoberNovemberDecember |
然后来看看tac的效果如何。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
# tac monthDecemberNovemberOctoberSeptemberAugustJulyJuneMayAprilMarchFebruaryJanuary |
是不是很有趣呢。以上就是今天的全部内容。
____________________________
推荐阅读:
详解Linux高效命令head、tail和cat的更多相关文章
- (转)linux traceroute命令参数及用法详解--linux跟踪路由命令
linux traceroute命令参数及用法详解--linux跟踪路由命令 原文:http://blog.csdn.net/liyuan_669/article/details/25362505 通 ...
- (转)详解Linux Top 命令
top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界面如下图所视:
- 新手指南:详解Linux Top 命令
Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...
- 详解Linux Top 命令
Linux top命令简介 top 命令是最流行的性能监视工具之一,我们必需了解.它是一个优秀的交互式工具,用于监视性能.它提供系统整体性能,但报告进程信息才是 top 命令的长处.top 命令交互界 ...
- 详解linux vi命令用法
vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,所以希望读者能好好把它学起来 ...
- 【转】详解linux vi命令用法
功能最强在的编辑器--vi vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件.当然,对UNIX系统略有所知的人, 或多或少都觉得vi超级难用,但vi是最基本的编辑器 ...
- linux dmesg命令参数及用法详解(linux显示开机信息命令)
linux dmesg命令参数及用法详解(linux显示开机信息命令) http://blog.csdn.net/zhongyhc/article/details/8909905 功能说明:显示开机信 ...
- Linux下ps命令详解 Linux下ps命令的详细使用方法
http://www.jb51.net/LINUXjishu/56578.html Linux下的ps命令比较常用 Linux下ps命令详解Linux上进程有5种状态:1. 运行(正在运行或在运行队列 ...
- Linux命令详解之—less命令
Linux下还有一个与more命令非常类似的命令--less命令,相比于more命令,less命令更加灵活强大一些,今天就给大家介绍下Linux下的less命令. 更多Linux命令详情请看:Linu ...
随机推荐
- git 服务器搭建与运用
环境:CentOS 6 为了不影响后面的安装 安装依赖库 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-dev ...
- npm修改淘宝原
//修改之前查看一下npm config get registry https://registry.npmjs.org/ //设置源npm config set registry https://r ...
- 音视频编解码技术(一):MPEG-4/H.264 AVC 编解码标准
一.H264 概述 H.264,通常也被称之为H.264/AVC(或者H.264/MPEG-4 AVC或MPEG-4/H.264 AVC) 1. H.264视频编解码的意义 H.264的出现就是为了创 ...
- 在 ns-3.25中添加 plc(电力线载波) 模块
上一篇安装好了 ns-3.25,这里继续往里添加 plc 模块.整理之前现推荐一个网站,大家可以参考. 英属哥伦比亚大学(University of British Columbia,UBC)提供NS ...
- python编译pyc工程--导包问题解决
利用python 编译工程,生产pyc文件 pyc文件好处:是一种二进制机器码,并且隐藏了源文件代码,但是有和py文件一样的功能(可以理解为效果一样) 所以可以将代码隐藏,便于商业价值,保护代码隐私还 ...
- Python—day17时间模块、系统模块、递推遍历、序列化
一.time'''时间戳(timestamp):time.time()延迟线程的运行:time.sleep(secs)(指定时间戳下的)当前时区时间:time.localtime([secs])(指定 ...
- docker commit命令创建新的镜像
docker commit命令创建新的镜像 1.运行容器 2.修改容器 3.将容器保存为新容器 (1)运行容器 [root@cmdb-server docker]# docker run -ti ce ...
- Java8虚拟机内存模型
1. Java虚拟机运行时数据区 在JDK1.8之前,JVM运行时数据区分为堆.虚拟机栈.本地方法栈.方法区.程序计数器.如下图所示: 虚拟机栈:线程私有,随线程创建而创建.栈里面是一个一个“栈帧” ...
- RabbitMQ学习笔记(二) 工作队列
什么是工作队列? 工作队列(又名任务队列)是RabbitMQ提供的一种消息分发机制.当一个Consumer实例正在进行资源密集任务的时候,后续的消息处理都需要等待这个实例完成正在执行的任务,这样就导致 ...
- redis 系列25 哨兵Sentinel (高可用演示 下)
一. Sentinel 高可用环境准备 1.1 Sentinel 集群环境 环境 说明 操作系统版本 CentOS 7.4.1708 IP地址 172.168.18.200 网关Gateway 1 ...