Linux 下一切皆文件
Linux 系统会将每个对象当作文件来处理, 这包括输入和输出 (读和写).
比如显示器, 向显示器上打印信息, 即 fwrite (二进制输出, 写), 可以将显示器理解为一个只写文件;
比如键盘, 通过键盘输入信息, 即 fread (二进制输入, 读), 可以将键盘理解为一个只读文件;
再比如普通文件, 可读也可写.
平常在 Linux 中输入的指令, 也是文件, 而且是可执行文件, 放置于 /usr/bin/ 路径下.
echo, 输入, 输出, 追加重定向
echo
在 echo 命令后面加上字符串, echo 命令就会显示这个字符串.
有时候, 我们想要保存命令的输出而不是将信息显示在屏幕上, 所以引入重定向的概念.
输出重定向
最基本的重定向会将命令的输出保存至文件, bash shell 使用大于号 ( > ) 来实现该操作:
command > outputfile
之前出现在显示器上的命令输出会被保存在到指定的输出文件中.
重定向运算符创建了文件 test.txt (使用默认的 umask 设置) 并将 echo 命令的输出重定向到该文件中. 如果输出文件已存在, 则重定向运算符会用新数据覆盖文件中已有的数据 (先清空文件, 再写入新内容).
追加重定向
有时, 我们可能并不想覆盖文件原有内容, 而是想将命令输出追加到已有文件中. 在这种情况下, 可以用双大于号 ( >> ) 来向已有文件中追加数据.
输入重定向
输入重定向和输出重定向正好相反, 输入重定向会将文件的内容重定向至命令.
输入重定向运算符是小于号 ( < ):
command < inputfile
一种简单的记忆方法是, 重定向运算符"指向"数据流动的方向. 大口方向的文件是进行读操作, 小口方向的文件是进行写操作.
一. cat
语法: cat [选项] [文件]
功能: 查看目标文件的内容.
常用选项:
-
-n对输出的所有行编号. -
-b对非空输出行编号. -
-s不输出多行空行.
查看小文本文件, 使用 cat 命令.
-n 选项会给所有的行加上行号.
-b 选项对非空输出行编号.
-s 选项不输出多行空行 (将多行空行并成一行空行).
对大文件来说, cat 命令显示的文件内容会在屏幕上一闪而过, 为此引入 more & less.
二. more & less
more
cat 命令的主要缺点是其开始运行之后你无法控制后续操作. 为了解决这个问题, 引入 more 命令. more 命令会显示文本文件的内容, 但会在显示每页数据之后暂停下来.
注意, 在上图的屏幕底部, more 命令显示了一个标签, 说明你仍然处于 more 应用程序中, 以及当前在文本文件中所处的位置, 这是 more 命令的提示符.
more 命令是一个分页工具, 可以使用 Enter 键逐行向下查看文件内容, 或是使用空格键逐页向下查看文件内容. 结束之后, 按 q 键退出.
但是 more 命令只能向后翻页, 没有办法向前翻页, 为此引入 less 命令.
less
less 工具也是对文件或其它输出进行分页显示的工具, 应该说是 linux 正统查看文件内容的工具, 功能极其强大.
less 的用法相较于 more 而言更加的有弹性, 在使用 more 的时候, 我们并没有办法向前翻页, 只能向后翻页.
但若使用了 less 时,就可以使用 [pageup][pagedown] (上下翻页键) 或上下箭头键等按键的功能来前后翻看文件, 更容易用来查看一个文件的内容!
除此之外, 在 less 里面可以拥有更多的搜索功能, 不止可以向下搜索 ( / ), 也可以向上搜索 ( ? ).
语法: less [选项] [文件]
功能: less 与 more 类似, 但使用 less 可以随意浏览文件, 而 more 仅能向后翻页, 却不能向前翻页.
常用选项:
-
-N显示每行的行号. -
/字符串向下搜索"字符串". -
?字符串向上搜索"字符串". -
n重复前一个搜索 (与 / 或 ? 有关). -
N反向重复前一个搜索 (与 / 或 ? 有关). -
qquit, 退出less.
-N 选项, 显示每行的行号.
/字符串, 向下搜索"字符串".
类似地, ?字符串, 向上搜索"字符串", 此处不再演示.
三. head & tail
head
head 命令会显示文件开头若干行, 在默认情况下, 它会显示文件前 10 行的文本.
也可以指定显示前 n 行.
tail
tail 命令会显示文件结尾若干行, 在默认情况下, 它会显示文件最后 10 行的文本.
也可以指定显示最后 n 行.
tail 命令有一个非常方便的选项: -f 选项, 该选项允许你在其他进程使用此文件时查看文件的内容. tail 命令会保持活动状态并持续地显示添加到文件中的内容. 这是实时监测系统日志的绝佳方式.
管道
| 被称作管道文件, 是一种内存级文件.
要显示文件的 991 - 1000 行, 又不想创建临时文件, 就可以使用管道.