Linux - 指令 - cat & more & less & head & tail

224 阅读5分钟

Linux 下一切皆文件

Linux 系统会将每个对象当作文件来处理, 这包括输入和输出 (读和写).

比如显示器, 向显示器上打印信息, 即 fwrite (二进制输出, 写), 可以将显示器理解为一个只写文件;

比如键盘, 通过键盘输入信息, 即 fread (二进制输入, 读), 可以将键盘理解为一个只读文件;

再比如普通文件, 可读也可写.

平常在 Linux 中输入的指令, 也是文件, 而且是可执行文件, 放置于 /usr/bin/ 路径下.

echo, 输入, 输出, 追加重定向

echo

echo 命令后面加上字符串, echo 命令就会显示这个字符串.

image.png

有时候, 我们想要保存命令的输出而不是将信息显示在屏幕上, 所以引入重定向的概念.

输出重定向

最基本的重定向会将命令的输出保存至文件, bash shell 使用大于号 ( > ) 来实现该操作:

command > outputfile

之前出现在显示器上的命令输出会被保存在到指定的输出文件中.

image.png

重定向运算符创建了文件 test.txt (使用默认的 umask 设置) 并将 echo 命令的输出重定向到该文件中. 如果输出文件已存在, 则重定向运算符会用新数据覆盖文件中已有的数据 (先清空文件, 再写入新内容).

image.png

追加重定向

有时, 我们可能并不想覆盖文件原有内容, 而是想将命令输出追加到已有文件中. 在这种情况下, 可以用双大于号 ( >> ) 来向已有文件中追加数据.

image.png

输入重定向

输入重定向和输出重定向正好相反, 输入重定向会将文件的内容重定向至命令.

输入重定向运算符是小于号 ( < ):

command < inputfile

image.png

一种简单的记忆方法是, 重定向运算符"指向"数据流动的方向. 大口方向的文件是进行读操作, 小口方向的文件是进行写操作.

一. cat

语法: cat [选项] [文件]

功能: 查看目标文件的内容.

常用选项:

  • -n 对输出的所有行编号.

  • -b 对非空输出行编号.

  • -s 不输出多行空行.

查看小文本文件, 使用 cat 命令.

image.png

-n 选项会给所有的行加上行号.

image.png

-b 选项对非空输出行编号.

image.png

-s 选项不输出多行空行 (将多行空行并成一行空行).

image.png

对大文件来说, cat 命令显示的文件内容会在屏幕上一闪而过, 为此引入 more & less.

二. more & less

more

cat 命令的主要缺点是其开始运行之后你无法控制后续操作. 为了解决这个问题, 引入 more 命令. more 命令会显示文本文件的内容, 但会在显示每页数据之后暂停下来.

image.png

注意, 在上图的屏幕底部, more 命令显示了一个标签, 说明你仍然处于 more 应用程序中, 以及当前在文本文件中所处的位置, 这是 more 命令的提示符.

more 命令是一个分页工具, 可以使用 Enter逐行向下查看文件内容, 或是使用空格逐页向下查看文件内容. 结束之后, 按 q 键退出.

但是 more 命令只能向后翻页, 没有办法向前翻页, 为此引入 less 命令.

less

less 工具也是对文件或其它输出进行分页显示的工具, 应该说是 linux 正统查看文件内容的工具, 功能极其强大.

less 的用法相较于 more 而言更加的有弹性, 在使用 more 的时候, 我们并没有办法向前翻页, 只能向后翻页.

但若使用了 less 时,就可以使用 [pageup][pagedown] (上下翻页键) 或上下箭头键等按键的功能来前后翻看文件, 更容易用来查看一个文件的内容!

除此之外, 在 less 里面可以拥有更多的搜索功能, 不止可以向下搜索 ( / ), 也可以向上搜索 ( ? ).

语法: less [选项] [文件]

功能: lessmore 类似, 但使用 less 可以随意浏览文件, 而 more 仅能向后翻页, 却不能向前翻页.

常用选项:

  • -N 显示每行的行号.

  • /字符串 向下搜索"字符串".

  • ?字符串 向上搜索"字符串".

  • n 重复前一个搜索 (与 / 或 ? 有关).

  • N 反向重复前一个搜索 (与 / 或 ? 有关).

  • q quit, 退出 less.

-N 选项, 显示每行的行号.

image.png

/字符串, 向下搜索"字符串".

image.png

image.png

类似地, ?字符串, 向上搜索"字符串", 此处不再演示.

三. head & tail

head

head 命令会显示文件开头若干行, 在默认情况下, 它会显示文件前 10 行的文本.

image.png

也可以指定显示前 n 行.

image.png

image.png

tail

tail 命令会显示文件结尾若干行, 在默认情况下, 它会显示文件最后 10 行的文本.

image.png

也可以指定显示最后 n 行.

image.png

image.png

tail 命令有一个非常方便的选项: -f 选项, 该选项允许你在其他进程使用此文件时查看文件的内容. tail 命令会保持活动状态并持续地显示添加到文件中的内容. 这是实时监测系统日志的绝佳方式.

管道

| 被称作管道文件, 是一种内存级文件.

要显示文件的 991 - 1000 行, 又不想创建临时文件, 就可以使用管道.

image.png