在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名。
标准输入:0(缺省是键盘,为0时是文件或者其他命令的输出)
标准输出:1(缺省是屏幕,为1时是文件)
标准出错:2(缺省是屏幕,为2时是文件)
系统中实际上有12个文件描述符,可以任意使用文件描述符3到9.
文件重定向:改变程序运行的输入来源和输出地点
Command > filename #把标准输出重定向到一个新文件中
Command >> filename #把标准输出重定向到一个文件中(追加)
Command > filename 2>&1 #把标准输出和错误一起重定向到一个文件中
Command >> filename 2>&1 #把标准输出和错误一起重定向到一个文件(追加)
Command 2>filename #把标准错误重定向到一个文件中
Command 2>>filename #把标准输出重定向到一个文件中(追加)
Command < filename #Command命令以filename文件作为标准输入
Command << delimiter #从标准输入中读入,知道遇到delimiter分界符
Command >&m #把标准输出重定向到文件描述符m中
Command < &- #关闭标准输入
n<&- 表示将 n 号输入关闭
<&- 表示关闭标准输入(键盘)
n>&- 表示将 n 号输出关闭
>&- 表示将标准输出关闭