2.1.4.3 命令行 I/O 重定向和管道
将物理文件与程序的逻辑单元号相关联的另一种方式是重定向或管道输送预连接的标准 I/O 文件。重定向或管道在运行时执行命令中使用。
采用这种方式,读取标准输入(单元 5)和写入标准输出(单元 6)或标准错误(单元 0)的程序可以通过重定向(在命令行中使用 <、>、>>、>&、|、|&、2>、2>&1),读取或写入其他任何命名文件。
参见下表:
表 2–1 csh/sh/ksh 命令行重定向和管道
操作 |
使用 C Shell |
使用 Bourne 或 Korn Shell |
---|---|---|
标准输入-从 mydata 读取 |
myprog < mydata |
myprog < mydata |
标准输出-写入(覆写)myoutput |
myprog > myoutput |
myprog > myoutput |
标准输出-写入/追加至 myoutput |
myprog >> myoutput |
myprog >> myoutput |
将标准错误重定向至文件 |
myprog >& errorfile |
myprog 2> errorfile |
将标准输出通过管道输送至另一程序的输入 |
myprog1 | myprog2 |
myprog1 | myprog2 |
将标准错误和输出通过管道输送至另一程序 |
myprog1 |& myprog2 |
myprog1 2>&1 | myprog2 |
有关命令行重定向和管道的详细信息,请参见 csh、ksh 和 sh 手册页。
46 关于Linux的I/O重定向
> filename:将标准输出写到文件filename之中
< filename:将文件filename的内容读入到标准输入之中
>> filename:将标准输出写到文件filename之中,若filename文件已存在,则将标准输出追加到filename已有内容之后
>| filename:即使noclobber选项已开启,仍然强制将标准输出写到文件filename之中,即将filename文件覆盖掉
n>| filename :即使noclobber选项已开启,仍然强制将FD为n的输出写到文件filename之中,即将filename文件覆盖掉
n> filename:将FD为n的输出写到文件filename之中
n< filename :将文件filename的内容读入到FD n之中
n>> filename:将FD为n的输出写到文件filename之中,若filename文件已存在,则将FD为n的输出追加到filename已有内容之后
<<delimiter :此处文档(Here-document)
n<&m:将FD为m的输入复制到FD为n的文件
n>&-:关闭FD为n的输出
n<&-:关闭FD为n的输入
&>file:将标准输出和标准错误输出重定向到文件