首页 > 代码库 > 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。