Linux 管道和重定向

文本流

我们新建一个 touch file 文件,然后用 vim 打开,随便写上一些文本。

a
b
c
...

执行 cat file 会在屏幕中输出 a b c ... cat 的功能,就是获取了 file 文件的文本流,然后往显示屏流入。

那是否还能流入到别的地方,答案是肯定的。这种操作,在 Linux 中称为 重定向


重定向

我们在新建一个文件 b,然后执行 cat file > b,这时屏幕没有显示任何东西,因为从 file 文件中流出的内容,已经被重定向到文件 b,而 >符号,就是重定向符号。


echo

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 行。

更多教程 HTML5 教程 CSS3 教程 JavaScript 教程 JQuery 教程 React.js 教程 Node.js 教程 Koa2 教程 Python 教程 Linux 教程