Linux base shell重定向详解

2019-09-23 09:40:27王振洲

3.绑定重定向

Command >&m 把标准输出重定向到文件描述符m中
Command < &- 关闭标准输入
Command 0>&- 同上

三、使用实例


cmd > file
#说明: 将 cmd 的输出发送到 file 文件(覆盖模式)

cmd >> file
#说明: 将 cmd 的输出发送到 file 文件(追加模式)

cmd < file
#说明: 以 file 文件的内容作为 cmd 的输入

cmd << text
#说明: 嵌入文件(here document, 类似于PHP语法)形式的输入
#shell 可在行内输入中做变量、命令和算术替换

cmd <<- text
#说明: 作用同上, 不过会自动删除here document中每行开头的制表符Tab

cmd <<< word
#说明: here string 格式的输入
#参见: http://bash.cyberciti.biz/guide/Here_strings
#参见: http://linux.die.net/abs-guide/x15683.html

cmd <> file
#说明: 以读写方式打开文件 file

cmd >| file
#说明: 强制以覆盖方式将 cmd 的输出发送到 file 文件
#即便 shell 设置了 noclobber 选项也是如此

cmd >&n
#说明: 将 cmd 的输出发送到文件描述符 n

cmd m>&n
#说明: 作用同上。将本该输出到文件描述符 m 的内容, 发送到文件描述符 n

cmd >&-
#说明: 关闭标准输出

cmd <&n
#说明: 从文件描述符 n 处获取内容作为 cmd 命令的输入

cmd m<&n
#说明: 作用同上。除了本该从文件描述符 m 处获取输入,改为从文件描述符 n 处获取

cmd <&-
#说明: 关闭标准输入

cmd <&n-
#说明: 通过复制移动文件操作符 n 为标准输入并且关闭原始输入

cmd >&n-
#说明: 通过复制移动文件操作符 n 为标准输出并且关闭原始输出

cmd 2>file
#说明: 将标准错误输出发送到文件 file

cmd  > file 2>&1
#说明: 将标准输出发送到文件 file, 将标准错误发送到文件描述符 1, 也即 file 文件

cmd  >& file
#说明: 将标准输出和标准错误都发送到文件 file (作用同上)

cmd  &> file
#说明: 作用同上, 更好的格式

cmd  &>> file
#说明: 将标准错误和标准输出发送到文件 file (追加模式)

cmd  > f1 2> f2
#说明: 将标准输出发送到文件 f1, 将标准错误发送到文件 f2

cmd  | tee files
#说明: 发送 cmd 的输出到标准输出 (通常为终端) 和 文件 files

cmd 2>&1 | tee files
#说明: 发送 cmd 的输出和错误到标准输出 (通常为终端) 和 文件 files

cmd |& tee files
#说明: 作用同上


四、shell重定向的一些高级用法

1.重定向标准错误
例子1:
command 2> /dev/null