详细理解:
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
Shell学习之:输入输出重定向
时间: 2024-10-26 09:29:46