直接查看文件内容
1. cat
cat 是concatenate的缩写,主要功能是将文件内容连续显示在输出设备上,搭配有效的参数,可以使输出内容达到自己想要的结果。它的缺点是当文件内容行数很多时,往往根本来不及看,所以使用时有局限性。
$ cat rainbow
This
is
my
rainbow.
'[-n]参数,用来显示行号'
$ cat -n rainbow
1 This
2 is
3 my
4 rainbow.
'[-A]参数,用来将文件内容完整显示(包含特殊字符)'
$ cat -A rainbow
This $
is $
my $
^Irainbow.$
正常情况下,即使文本内容中有Tab或换行符等特殊字符,输出结果中也不会展示出来。使用cat -A
时,输出结果中会将Tab以^I
显示,换行符会显示为$
。在Windows系统中,是以^M$
为换行符,如果你在Windows平台下调试通过的脚本放在Linux系统中却报错,vim中查看代码也没有发现任何问题,那就需要考虑是不是换行符引发的问题。
2. tac
从单词来看,tac
是上一个命令cat
的反写,实际它的功能也和cat
有类似关系。cat
是将第一行到最后一行内容连续显示在输出设备上,而tac
则是将最后一行到第一行内容连续显示在输出设备上。
$ tac rainbow
rainbow.
m y
is
This
3. nl
nl
命令和cat -n
命令类似,也是会在显示内容时自动添加行号。但是nl
命令会自动跳过空白行,而cat -n
则不会忽略空白行。
$ nl rainbow
1 This
2 is
3 m y
4 rainbow.
$ cat -n rainbow
1 This
2 is
3 m y
4 rainbow.
5
6
补充:nl
命令和cat -n
相比,还可以对行号做较多的设置,如行号位数设置、自动补零等。
翻页查看文件内容
cat,tac,nl
这三个命令都是一次性全部将文件内容展示在屏幕上,而more
和less
命令则支持翻页查看输出内容,当内容行数很多时会变得非常方便。
1. more
$ more log.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
....省略中间的内容.....
.parent-name {
font-size: 0.7em;
letter-spacing: -0.07em;
--More--(1%)
在more
命令运行中,有几个按键可以使用:
- 空格键:向下翻页
- Enter: 向下翻一行
- /字符串:向下搜索字符串内容,按n可以重复搜索同一内容
-
:f
:显示文件名及当前显示的行数 -
q
: 退出命令
2. less
less
命令比more
命令要更加灵活。使用more
命令的时候,只能按空格键向下翻页,不支持向上翻页,而less
命令就可以使用[PageUp]
、[PageDn]
等按键自由前后翻看文件内容。除此之外,less
命令支持更多的字符串搜索功能,不仅可以向下搜索,也可以向上搜索。
在less
命令运行中,有几个按键可以使用:
- 空格键或[PageDn]:向下翻页
- [PageUp]:向上翻页
- Enter或向下箭头: 向下翻一行
- /字符串:向下搜索字符串内容
- ?字符串:向上搜索字符串内容
-
:f
:显示文件名及当前显示的行数 -
n
:重复前一个搜索(与/或?有关) -
N
:反向重复前一个搜索(与/或?有关) -
q
: 退出命令
更多用法,可以使用man less
查看。
除了从上面介绍的几个命令外,常用的还有head
和tail
命令,用于取出前几行或后几行,基本用法为:
'查看前十行内容'
$ head log .html
'查看前20行内容'
$ head -n 20 log.html
'实时查看最新的输出内容'
$ tail -f -n 100 catalina.out
'查看第11~20行内容'
$ head -n 20 log.html | tail -n 10