IQA*_*eas 1 linux bash terminal io-redirection
我想重定向是应该去的一切stdout来stderr,那就是要一切stderr去stdout代替.
以下代码不起作用:
$ bin/stdout-test 1>&2 2>&1
Run Code Online (Sandbox Code Playgroud)
我确信在某个地方有一个实际用途,但目前只是一个心理练习,以帮助学习和理解io重定向.
在Ubuntu中,双方stdout并stderr重定向到控制台,所以你真的不能告诉,如果你取得任何进展,但该命令tcpserver会重定向stdout到连接远程用户,并stderr以启动该终端tcpserver会话,使其成为一个完美测试这种类型的重定向的地方.
我为此目的创建了一个测试项目:
你的尝试不起作用,因为1>&2将stdout合并到stderr中,之后就没有希望再次将它们分开.您需要第三个临时文件描述符来进行交换,例如交换两个变量的值时.
使用exec移动文件描述符.
( exec 3>&1- 1>&2- 2>&3- ; bin/stdout-test )
Run Code Online (Sandbox Code Playgroud)
要不就
bin/stdout-test 3>&1- 1>&2- 2>&3-
Run Code Online (Sandbox Code Playgroud)
说明:
3>&1- 将标准输出(FD 1)移动到FD 31>&2- 将stderr(FD 2)移动到FD 12>&3- 将FD 3移动到stderr(FD 2)请参阅移动文件描述符.
| 归档时间: |
|
| 查看次数: |
3221 次 |
| 最近记录: |