<
Shell 流 重定向
>
上一篇

Ubuntu 20.04 从 git 源码编译 3.25.1 版本的 git
下一篇

在 termux Package 源码 历史 git commit 编译 ruby2.6
符号 定义
0 标准输入流(stdin)
1 标准输出流(stdout)
2 标准错误流(stderr)
& 表示等同的意思
/dev/null 黑洞、空设备

直接执行后终端的输出,属于标准输出流

$ echo qwer
qwer

将标准输出流指向到文件(1一般省略),终端将没有输出

$ echo qwer 1>test.txt

当文件不存在时,cat将报错,标准错误流也会打印在终端

$ rm -f test.txt
$ cat test.txt
cat: test.txt: No such file or directory

将标准错误流指向到文件,终端将没有输出,查看error.txt将看到刚才保存的关于test.txt的错误

$ rm -f test.txt
$ cat test.txt 2>error.txt
$ cat error.txt
cat: test.txt: No such file or directory

如果在shell脚本中不想把信息打印出终端,也不想保存到文件,那么可以将流指向 /dev/null

$ echo qwerdfb >/dev/null

标准错误流也可以指向黑洞

$ rm -f test.txt
$ cat test.txt 2>/dev/null
$ rm -f test.txt
$ cat test.txt >/dev/null
cat: test.txt: No such file or directory

这里只是把标准输出指向了黑洞,标准错误流依然会打印出来

2>&1 表示将标准错误流指向标准输出流

$ rm -f test.txt
$ cat test.txt >/dev/null 2>&1

标准输出流是指向黑洞的,标准错误流指向了标准输出流,所以传递到黑洞,终端不会有打印输出

等同于

$ rm -f test.txt
$ cat test.txt >/dev/null 2>/dev/null

Shell 脚本中可以用来隐藏输出

Top
Foot