Introduction

使用一个例子简要介绍了 shell 编程中得输入输出重定向问题。

Basics

0
stdin
1
stdout
2
stderr

Input Redirection

Syntax

# read from file
cmd < file
# read from single line here-doc
cmd <<< here-doc
# read from multi line here-doc
cmd << EOF
content
EOF

Output Redirection

Syntax

cmd > /dev/null 2>&1

Explain

符号 > 等价于 1> (系统默认为1,省略了); 所以 > /dev/null 等同于 1> /dev/null

/dev/null 代表空设备文件

& 可以理解为是”等同于”的意思,2>&1,即表示2的输出重定向等同于1

因此,> /dev/null 2>&1 也可以写成 1> /dev/null 2>&1

1> /dev/null:首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

2>&1:接着,将标准错误输出重定向到标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。