Linux命令之文件内容查看(cat、tac、nl、more、less、head、tail)
本文将学到的命令
- cat
- tac
- nl
- more
- less
- head
- tail
cat(从第一行开始显示文件内容)
首先来看一下官方文档
man cat
CAT(1) GNU CAT(1)
NAME
cat - 连接文件并在标准输出上输出
SYNOPSIS 总览
cat [选项列表] [文件列表]...
DESCRIPTION 描述
将文件列表中的文件或标准输入连接到标准输出。
-A, --show-all 等价于 -vET 。
-b, --number-nonblank 给非空输出行编号。
-e 等价于 -vE 。
-E, --show-ends 在每行结束显示 $ 。
-n, --number 给所有输出行编号。
-s, --squeeze-blank 将所有的连续的多个空行替换为一个空行。
-t 等价于 -vT 。
-T, --show-tabs 把 TAB 字符显示为 ^I 。
-u (被忽略的选项)
-v, --show-nonprinting 除了 LFD 和 TAB 之外所有控制符用 ^ 和 M- 记方式显示。
--help 显示帮助并退出。
--version 显示版本信息并退出。
没有指定文件或指定的文件是 -,则从标准输入读取。
下面我们讲解几个比较常用的参数:
- -A : 相当于-vET的整合选项,可列出一些特殊字符而不是空白而已
- -b : 列出行号,仅针对非空白行做行号显示,空白行不标行号
- -E : 将结尾的断行字符$显示出来
- -n : 打印行号,连同空白行也会有行号
- -T : 将tab安检以^I显示出来
- -v : 列出一些看不出来的特殊字符
下面是这些参数的使用示例:
tac(从最后一行开始显示)
可以看出tac是cat的倒着写
照例来看一下官方文档
man tac
TAC(1) FSF TAC(1)
NAME
tac - 反转显示文件
总览 (SYNOPSIS)
../src/tac [OPTION]... [FILE]...
描述 (DESCRIPTION)
把 每个 文件 FILE 显示在 标准输出, 后面 的 行 放在 前面. 如果 没有 指定 文件 FILE 或者 FILE 是 -, 就从 标准输入 读取 数据.
-b, --before 把 分隔单元 移到 前面, 而不是 后面
-r, --regex 分隔单元 是 正规表达式
-s, --separator=STRING 用 STRING 取代 换行符(newline) 作为 分隔单元
--help 显示 帮助信息, 然后 结束
--version 显示 版本信息, 然后 结束
这个命令就比较简单了 ,可以看一下这个命令与cat命令输出同一个文件有何不同
nl(显示的时候,同时输出行号)
首先来看一下官方文档
man nl
NL(1) User Commands NL(1)
NAME
nl - number lines of files
SYNOPSIS
nl [OPTION]... [FILE]...
DESCRIPTION
Write each FILE to standard output, with line numbers added. With no FILE, or when FILE is -, read standard input.
Mandatory arguments to long options are mandatory for short options too.
-b, --body-numbering=STYLE use STYLE for numbering body lines
-d, --section-delimiter=CC use CC for separating logical pages
-f, --footer-numbering=STYLE use STYLE for numbering footer lines
-h, --header-numbering=STYLE use STYLE for numbering header lines
-i, --line-increment=NUMBER line number increment at each line
-l, --join-blank-lines=NUMBER group of NUMBER empty lines counted as one
-n, --number-format=FORMAT insert line numbers according to FORMAT
-p, --no-renumber do not reset line numbers at logical pages
-s, --number-separator=STRING add STRING after (possible) line number
-v, --starting-line-number=NUMBER first line number on each logical page
-w, --number-width=NUMBER use NUMBER columns for line numbers
--help display this help and exit
--version output version information and exit
不知道为什么这个文档是英文的了
下面讲解一下比较常用的三个选项
- -b :指定行号显示的方式
- -b a :表示无论是否为空行,也同样列出行号,类似于cat -n
- -b t :如果有空行,空的那一行不列出行号(默认值)
- -n :累出行号的表示方法
- -n ln:行号在屏幕的最左方显示
- -n rn:行号显示在自己字段的最右方,且不加0
- -n rz:行号显示在自己字段的最右方,且加0
- -w:行号字段占用的字符数
下面看一下使用示例
more(一页一页地显示文件内容)
more命令比较简单,在more后面跟上要查看的文件名就可以查看内容了,
下面主要讲解一下在more这个程序的运行过程中的几个操作:
- 空格键:向下翻一页
- Enter:代表向下翻一行
- /字符串:代表在这个显示的内容中,向下搜寻“字符串”这个关键词
- :f:立刻显示出文件名以及目前显示的行数
- q:代表立刻离开more,不再显示该文件内容
- b:或CTRL+b:代表往回翻页,不过这工作只对文件有用,对管道无用
less(与more类似,但是它可以往前翻页)
less的操作比more要丰富一些:
- 空格键:向下翻一页
- pagedown:向下翻动一页
- pageup:向上翻动一页
- /字符串:代表在这个显示的内容中,向下搜寻“字符串”这个关键词
- ?字符串:代表在这个显示的内容中,向上搜寻“字符串”这个关键词
- n:重复前一个搜索
- N:反向的重复前一个搜索
- g:前进到这个资料的第一行
- G:前进到这个资料的最后一行
- q:代表立刻离开less,不再显示该文件内容
head(只看前几行)
首先看一下官方文档
man head
HEAD(1) FSF HEAD(1)
NAME(名称)
head - 输出文件的开始部分
SYNOPSIS(总览)
../src/head [OPTION]... [FILE]...
DESCRIPTION(描述)
在标准输出上显示每个FILE的起始10行. 如果多于一个FILE,则一个接一个地显示, 并且在每个文件显示的首部给出文件名. 如果没有FILE,或者FILE为-, 那么就从标准输入上读取.
-c, --bytes=SIZE 打印起始的SIZE字节
-n, --lines=NUMBER 显示起始的NUMBER行,而非默认的起始10行
-q, --quiet, --silent 从不显示给出文件名的首部
-v, --verbose 总是显示给出文件名的首部
--help 显示帮助后退出
--version 输出版本信息后退出
SIZE可以有一个倍数后缀: b表示512,k表示1K,m表示1M. 如果第一个OPTION(选项)为-VALUE, 当后面连接着倍数bkm之一时,则读为-c VALUE, 否则读为-n VALUE.
下面主要讲一下-n这个参数的使用。
- -n:后面接数字,代表显示几行的意思
如果没有加上-n的话,默认显示十行。
如果-n后面写的是负数代表列前的所有行数,但不包括后面的100行。比如说/etc/man_db.conf共有131行,则上述的指令 head -n -100 /etc/man_db.conf 就会列出前面的31行,后面的100行就不打印出来了
tail (只看后面几行)
这里主要讲解一下下面两个选项:
- -n:后面接数字,代表显示几行的意思
- -f:表示持续侦测后面所接文件,要等到按下CTRL+c才会结束tail的侦测
默认显示最后的十行
显示100行以后的数据
要等到输入CTRL+c之后才会离开tail这个指令的侦测
关于tail更加详细的介绍,可以看我的另一篇博客。
linux查看tomcat运行日志
例题
1.想要显示/etc/man_db.conf的第11到第20行
head -n 20 /etc/man_db.conf | tail -n 10
2.继续上一题的基础上 列出正确的行号
cat -n /etc/man_db.conf | head -n 20 |tail -n 10