我们新建一个 touch file
文件,然后用 vim 打开,随便写上一些文本。
a
b
c
...
执行 cat file
会在屏幕中输出 a b c ...
cat 的功能,就是获取了 file 文件的文本流,然后往显示屏流入。
那是否还能流入到别的地方,答案是肯定的。这种操作,在 Linux 中称为 重定向
。
我们在新建一个文件 b
,然后执行 cat file > b
,这时屏幕没有显示任何东西,因为从 file 文件中流出的内容,已经被重定向到文件 b,而 >
符号,就是重定向符号。
echo 的功能是从屏幕显示器打印东西,我们也能用重定向的方式,向 echo 的文本流入到指定的文件。
echo 1 > b // 默认重定向会覆盖了原来的内容
echo 2 >> b // 可以使用 >> 符号,追加重定向,内容把被添加到原来的文件尾部
我们再尝试执行 cat a > b
,这时会报出一个错误 cat a no such file or directory,因为 a 文件不存在,导致重定向失败了。针对错误的重定向,Linux 也给我们提供了办法。
cat void >& file // 重定向错误
cat void 2>& file // 仅重定向错误
管道又是另外一个概念,它能让一个资源的输出,变成另外一个资源的输入。
echo 1 | wc -l // 1
上面的命令 echo 输出的 1,经过管道 |
流入到 wc 命令的输入端,最后统计出行数,得出结果为 1 行。