符号 | 定义 |
---|---|
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 脚本中可以用来隐藏输出