首页 > 代码库 > Shell学习之:输入输出重定向

Shell学习之:输入输出重定向

详细理解:

linux命令默认从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器。在linux shell执行命令时,每个进程都和三个打开的文件相联系,并使用文件描述符来引用这些文件。由于文件描述符不容易记忆,shell同时也给出了相应的文件名:

                                               文件描述符说明列表

文件文件描述符
输入文件-标准输入0(缺省为键盘;0为文件或其他命令的输出)
输出文件-标准输出1(缺省为屏幕;1为文件)
错误输出文件-标准错误2(缺省为屏幕;2为文件)


                                              全部可用的命令行列表

命令说明
command > file将输出重定向到 file。
command < file将输入重定向到 file。
command >> file将输出以追加的方式重定向到 file。
n > file将文件描述符为 n 的文件重定向到 file。
n >> file将文件描述符为 n 的文件以追加的方式重定向到 file。
n >& m将输出文件 m 和 n 合并。
n <& m将输入文件 m 和 n 合并。
<< tag将开始标记 tag 和结束标记 tag 之间的内容作为输入。

默认情况下,command > file 将stdout重定向到file,command < file 将stdin 重定向到 file。


  • 如果希望stderr重定向到 file,可以这样写

$ command 2 > file     # 2表示标准错误文件(stderr)

  • 如果希望stderr追加到file文件末尾,可以这样写

$ command 2 >> file    # >>表示追加写入,不覆盖之前的内容

  • 如果希望将stdout和stderr合并后重定向到file,可以这样写

$ command > file 2>&1


$ command >> file 2>&1

  • 如果希望对stdin和stdout 都重定向,可以这样写
$ command < infile > outfile # command命令将stdin重定向到infile,将stdout重定向到outfile