head:  打印文件的前10行(默认)

tail:     打印文件的后10行(默认)

如果你是个典型的开发或者部署人员,是不是觉得开始亲切起来。我们平时用的最多的命令

  1. $tail -f  catalina.out

$head

实例:

1. 打印head.txt, tail.txt的前10行

  1. $head head.txt tail.txt
 ==> head.txt <==

head.txt内容

==> tail.txt <==

tail.txt内容

2.  打印 1K的内容

  1. $head –c1K head.txt

3.  打印前5行内容

  1. $head -n5 head.txt

4.  打印出最后5行之外的所有行

  1. $head -n -5 head.txt

这里-5表示负5

解读 --help

 用法:head [选项]... [文件]... 
将每个指定文件的头10 行显示到标准输出。 
如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。 
如果不指定文件,或者文件为"-",则从标准输入读取数据。

长选项必须使用的参数对于短选项时也是必需使用的。 
-c, --bytes=[-]K         显示每个文件的前K 字节内容; 
如果附加"-"参数,则除了每个文件的最后K字节数据外 
显示剩余全部内容 
-n, --lines=[-]K           显示每个文件的前K 行内容; 
如果附加"-"参数,则除了每个文件的最后K 行外显示 
剩余全部内容 
-q, --quiet, --silent       不显示包含给定文件名的文件头 
-v, --verbose               总是显示包含给定文件名的文件头 
--help                          显示此帮助信息并退出 
--version                     显示版本信息并退出
K 后面可以跟乘号:

b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024, 
GB 1000*1000*1000, G 1024*1024*1024, 对于T, P, E, Z, Y 同样适用。
 

解读:

这里唯一注意:如果不指定文件,或者文件为"-",则从标准输入读取数据。


$tail

实例:

1.打印一个文件最后10行

  1. $tail tail.txt

2.跟踪日志,打印文件最后几行,并且保持读取追加数据

  1. tail -f tail.txt

解读--help

 用法:tail [选项]... [文件]... 
显示每个指定文件的最后10 行到标准输出。 
若指定了多于一个文件,程序会在每段输出的开始添加相应文件名作为头。 
如果不指定文件或文件为"-" ,则从标准输入读取数据。

长选项必须使用的参数对于短选项时也是必需使用的。 
-c, --bytes=K           输出最后K 字节;另外,使用-c +K 从每个文件的第K 字节输出 
-f,  --follow[={name|descriptor}]    即时输出文件变化后追加的数据。 
-F                        即--follow=name --retry 
-n                   --lines=K  输出最后K 行,代替最后10 行;
span style="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=N with -f, sleep for approximately N seconds (default 1.0) between iterations. With inotify and--pid=P, check process P at least once every N seconds. 
-v                   --verbose always output headers giving file names 
                       --help 显示此帮助信息并退出 
                        --version 显示版本信息并退出 
如果字节数或行数K 的第一个字符是"+",输出从文件开始第K 个项目,否则输出文件 
最后K 个项目。K 可以使用一下几种单位之一: 
b 512,kB 1000,K 1024,MB 1000*1000,M 1024*1024, 
GB 1000*1000*1000,G 1024*1024*1024,以及T,P,E,Z,Y。

解读:

1. 区别-f 和-F

借网上一例子:

窗口1 输入 

  1. $while [ "true" ] ; do date >>test.log; sleep 1 ; done;

#每隔一秒传入一个日期到test.log

窗口2 输入

  1. $tail -f test.log

窗口3 输入

  1. $rm test.log

此时窗口2 则停止打印,而test.log已经重新生成

如果采用-F的形式,也会重新生成一个新的test.log,但会自动重新读取

收尾

tail和head是两个非常常用的命令,熟练掌握方便查看文件内容。两个很简单,也很相似,所以放在一起写出来

shell head tail的更多相关文章

  1. 【原创】用python实现shell的tail操作

    在工作过程中发现监控实时刷新文件时,不是那么的任性. 故结合shell中的tail,做了一个类似tail的python脚本. 详情如下: #!/usr/bin/env python #coding=u ...

  2. 每日回顾Shell —cat,tail,head

    Shell中常常会用到cat命令.可是总是不是特别清楚: cat命令的用途是连接文件或标准输入并打印. 这个命令经常使用来显示文件内容.或者将几个文件连接起来显示.或者从标准输入读取内容并显示,它常与 ...

  3. Linux Shell脚本编程while语句案例

    1,每隔3秒,打印一次系统负载 #!/bin/bash while true do uptime done 2,把监控结果保存到文件,在后台执行,然后用tail -f监控文件变化 ghostwu@de ...

  4. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

  5. Linux删除apt-get安装的软件

    我们都知道安装软件最简单的方法是apt-get install,但是卸载就不常用了,如何卸载呢?1.sudo apt-get remove xxxxxsudo apt-get autoremove2. ...

  6. 实时监控log文件

    一个进程在运行,并在不断的写log,你需要实时监控log文件的更新(一般是debug时用),怎么办,不断的打开,关闭文件吗? 不用,至少有两个方法,来自两个很常用的命令: tail -f log.tx ...

  7. RH253读书笔记(4)-Lab 4 The Domain Name System

    Lab 4 The Domain Name System Goal: To install and configure a DNS server System Setup: Throughout th ...

  8. CentOS6.5 安装mysql5.6.30

    1.下载解压由于系统会自带mysql5.1版本的数据库,需要卸载.[root@localhost src]# yum remove -y mysql-libs[root@localhost src]# ...

  9. python的迭代器、生成器、装饰器

    迭代器.生成器.装饰器 在这个实验里我们学习迭代器.生成器.装饰器有关知识. 知识点 迭代器 生成器 生成器表达式 闭包 装饰器 实验步骤 1. 迭代器 Python 迭代器(Iterators)对象 ...

随机推荐

  1. BZOJ1982 [Spoj 2021]Moving Pebbles 【博弈论】

    题目 Moving Pebbles Two players play the following game. At the beginning of the game they start with ...

  2. hdu1281(棋盘游戏,车的放置)

    Problem Description 给定一个n * m的棋盘,在棋盘里放尽量多的国际象棋中的车,使他们不能相互攻击 已知有些格子不能放置,问最多能放置多少个车 并计算出必须棋盘上的必须点. Inp ...

  3. Python3 urlparse

    >>> from urllib.parse import urlparse >>> o = urlparse('http://www.cwi.nl:80/%7Egu ...

  4. 用spring的@Validated注解和org.hibernate.validator.constraints.*的一些注解在后台完成数据校验

    这个demo主要是让spring的@Validated注解和hibernate支持JSR数据校验的一些注解结合起来,完成数据校验.这个demo用的是springboot. 首先domain对象Foo的 ...

  5. 跨域请求json数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 【hdu2825-Wireless Password】AC自动机+DP

    http://acm.hust.edu.cn/vjudge/problem/16883 题意:要构造一个长度为n的字符串,然后有m模板串构成一个集合(m<=10),构造出来的字符串至少含有k种模 ...

  7. USACO_1.1_Greedy_Gift_Givers_(模拟+水题)

    描述 http://train.usaco.org/usacoprob2?a=y0SKxY0Kc2q&S=gift1 给出不超过$10$个人,每个人拿出一定数量的钱平分给特定的人,求最后每个人 ...

  8. [POJ1286&POJ2154&POJ2409]Polya定理

    Polya定理 L=1/|G|*(m^c(p1)+m^c(p2)+...+m^c(pk)) G为置换群大小 m为颜色数量 c(pi)表示第i个置换的循环节数 如置换(123)(45)(6)其循环节数为 ...

  9. Android 全面插件化 RePlugin 流程与源码解析

    转自 Android 全面插件化 RePlugin 流程与源码解析 RePlugin,360开源的全面插件化框架,按照官网说的,其目的是“尽可能多的让模块变成插件”,并在很稳定的前提下,尽可能像开发普 ...

  10. wxpython SizerItem的大小控制

    wxpython SizerItem的大小控制 proportion控制控件相对大小,proportion如果为0,表示默认大小.比如一个box里面有两个相同控件A,B,如果A,B的proportio ...