每个命令都可以使用三个通道输入或输出:
标准输出. 这是默认的输出通道。在命令打印某些内容时都会使用标准输出通道。
标准输入. 如果一个命令需要用户或其他命令输入,则使用此通道。
标准错误. 命令使用此通道报告错误。
要重定向这些通道,有以下可行的操作方式:
命令 > 文件
将该命令的输出保存为文件,将删除现有文件。例如,ls 命令会将其输出写入文件 listing.txt:
ls > listing.txt
命令 >> 文件
将命令输出追加到文件。例如,ls 命令会将其输出追加到文件 listing.txt:
ls >> listing.txt
命令 < 文件
读取该文件作为给定命令的输入。例如,read 命令会将此文件的内容读入变量:
read a < foo
命令 1 | 命令 2
将左侧命令的输出重定向为右侧命令的输入。例如,cat 命令会输出文件 /proc/cpuinfo 的内容。grep 使用此输出仅过滤出包含 cpu 的行:
cat /proc/cpuinfo | grep cpu
每个通道都有一个文件描述符:0(零)表示标准输入,1 表示标准输出,2 表示标准错误。允许在 < 或 > 字符前插入此文件描述符。例如,以下行搜索以 foo 开头的文件,但通过将错误重定向到 /dev/null 而抑制错误。
find / -name "foo*" 2>/dev/null