I/O 重定向,文件描述符
FD: file descriptor
在 shell 程式中,最常使用的 FD 大概有三個,分別為:
0: Standard Input (STDIN)
1: Standard Output (STDOUT)
2: Standard Error Output (STDERR)
在标准情况下,這些 FD 分別跟如下设备(device)关联:
stdin(0): keyboard
stdout(1): monitor
stderr(2): monitor
0< 原來就是改變 stdin 的數據輸入通道之後
1> 改变stdout的数据输出通道
2> 改变stderr的数据输出通道
兩者都是將原本要送出到 monitor 的数据转向输出到指定文件中。
举例说明
正常输出
# ls my.file 1.sh
ls: cannot access my.file: No such file or directory
1.sh
stdout输出到file.out中,stderr 输出到file.err中
# ls my.file 1.sh 1>file.out 2>file.err
2>&1 就是将 stderr 并入 stdout 作输出
# ls my.file 1.sh 1>j.file 2>&1
1>&2 或 >&2 就是将 stdout 并入 stderr 作输出
只想看到 stderr 呢?將 stdout 弄到 null 就行:
$ ls my.file 1.sh >/dev/null
单纯跑程序,不想看到任何输出结果
$ ls my.file 1.sh >/dev/null 2>&1
$ ls my.file 1.sh &>/dev/null