一天一个shell命令 linux文本操作系列-head,tail命令详解
head命令中文介绍:
用法:head[选项]...[文件]... 将每个指定文件的头10行显示到标准输出。 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。 如果不指定文件,或者文件为"-",则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -c,--bytes=[-]K 显示每个文件的前K字节内容; 如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容 -n,--lines=[-]K 显示每个文件的前K行内容; 如果附加"-"参数,则除了每个文件的最后K行外显示 剩余全部内容 -q,--quiet,--silent 不显示包含给定文件名的文件头 -v,--verbose 总是显示包含给定文件名的文件头 --help 显示此帮助信息并退出 --version 显示版本信息并退出 K后面可以跟乘号: b512,kB1000,K1024,MB1000*1000,M1024*1024, GB1000*1000*1000,G1024*1024*1024,对于T,P,E,Z,Y同样适用。
tail命令详解
用法:tail[选项]...[文件]... 显示每个指定文件的最后10行到标准输出。 若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。 如果不指定文件或文件为"-",则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -c,--bytes=K 输出最后K字节;另外,使用-c+K从每个文件的 第K字节输出 -f,--follow[={name|descriptor}] 即时输出文件变化后追加的数据。 -f,--follow等于--follow=descriptor -F 即--follow=name--retry -n,--lines=K 输出最后K行,代替最后10行;使用-n+K从每个文件的第K字节输出 --max-unchanged-stats=N 使用--follow=name,重新打开一个在N(默认为5) 次迭代后没有改变大小的文件来看它是否被解除连 接或重命名(这是循环日志文件的通常情况)。 由于有inotify,这个选项很少使用。 --pid=PID 同-f一起使用,当PID所对应的进程死去后终止 -q,--quiet,--silent 不输出给出文件名的头 --retry 即使目标文件不可访问依然试图打开;在与参数 --follow=name同时使用时常常有用。 -s,--sleep-interval=Nwith-f,sleepforapproximatelyNseconds (default1.0)betweeniterations. Withinotifyand--pid=P,checkprocessPat leastonceeveryNseconds. -v,--verbosealwaysoutputheadersgivingfilenames --help 显示此帮助信息并退出 --version 显示版本信息并退出 如果字节数或行数K的第一个字符是"+",输出从文件开始第K个项目,否则输出文件 最后K个项目。K可以使用一下几种单位之一: b512,kB1000,K1024,MB1000*1000,M1024*1024, GB1000*1000*1000,G1024*1024*1024,以及T,P,E,Z,Y。 如果您希望即时追查一个文件的有效名称而非描述内容(例如循环日志),默认 的程序动作并不如您所愿。在这种场合可以使用--follow=name选项,它会使 tail定期追踪打开给定名称的文件,以确认它是否被删除或被其它某些程序重新创建过。
head: 打印文件的前10行(默认)
tail: 打印文件的后10行(默认)
如果你是个典型的开发或者部署人员,是不是觉得开始亲切起来。我们平时用的最多的命令
$tail-f catalina.out
$head
实例:
1.打印head.txt,tail.txt的前10行
$headhead.txttail.txt
==>head.txt<== head.txt内容 ==>tail.txt<== tail.txt内容
2. 打印1K的内容
$head–c1Khead.txt
3. 打印前5行内容
$head-n5head.txt
4. 打印出最后5行之外的所有行
$head-n-5head.txt
这里-5表示负5
解读--help
用法:head[选项]...[文件]... 将每个指定文件的头10行显示到标准输出。 如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。 如果不指定文件,或者文件为"-",则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -c,--bytes=[-]K 显示每个文件的前K字节内容; 如果附加"-"参数,则除了每个文件的最后K字节数据外 显示剩余全部内容 -n,--lines=[-]K 显示每个文件的前K行内容; 如果附加"-"参数,则除了每个文件的最后K行外显示 剩余全部内容 -q,--quiet,--silent 不显示包含给定文件名的文件头 -v,--verbose 总是显示包含给定文件名的文件头 --help 显示此帮助信息并退出 --version 显示版本信息并退出 K后面可以跟乘号: b512,kB1000,K1024,MB1000*1000,M1024*1024, GB1000*1000*1000,G1024*1024*1024,对于T,P,E,Z,Y同样适用。
解读:
这里唯一注意:如果不指定文件,或者文件为"-",则从标准输入读取数据。
$tail
实例:
1.打印一个文件最后10行
$tailtail.txt
2.跟踪日志,打印文件最后几行,并且保持读取追加数据
tail-ftail.txt
解读--help
用法:tail[选项]...[文件]... 显示每个指定文件的最后10行到标准输出。 若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。 如果不指定文件或文件为"-",则从标准输入读取数据。 长选项必须使用的参数对于短选项时也是必需使用的。 -c,--bytes=K输出最后K字节;另外,使用-c+K从每个文件的第K字节输出 -f,--follow[={name|descriptor}]即时输出文件变化后追加的数据。 -F即--follow=name--retry -n--lines=K输出最后K行,代替最后10行; spanstyle="color:#000000">-n+K从每个文件的第K字节输出 --max-unchanged-stats=N 使用--follow=name,重新打开一个在N(默认为5)次迭代后没有改变大小的文件来看它是否被解除连接或重命名(这是循环日志文件的通常情况)。由于有inotify,这个选项很少使用。 --pid=PID同-f一起使用,当PID所对应的进程死去后终止 -q--quiet,--silent不输出给出文件名的头 --retry即使目标文件不可访问依然试图打开;在与参数 --follow=name同时使用时常常有用。 -s--sleep-interval=Nwith-f,sleepforapproximatelyNseconds(default1.0)betweeniterations.Withinotifyand--pid=P,checkprocessPatleastonceeveryNseconds. -v--verbosealwaysoutputheadersgivingfilenames --help显示此帮助信息并退出 --version显示版本信息并退出 如果字节数或行数K的第一个字符是"+",输出从文件开始第K个项目,否则输出文件 最后K个项目。K可以使用一下几种单位之一: b512,kB1000,K1024,MB1000*1000,M1024*1024, GB1000*1000*1000,G1024*1024*1024,以及T,P,E,Z,Y。
解读:
1.区别-f和-F
借网上一例子:
窗口1输入
$while["true"];dodate>>test.log;sleep1;done;
#每隔一秒传入一个日期到test.log
窗口2输入
$tail-ftest.log
窗口3输入
$rmtest.log
此时窗口2则停止打印,而test.log已经重新生成
如果采用-F的形式,也会重新生成一个新的test.log,但会自动重新读取
收尾
tail和head是两个非常常用的命令,熟练掌握方便查看文件内容。两个很简单,也很相似,所以放在一起写出来。