bash - 使用 echo 重定向文件描述符

标签 bash file-descriptor

为什么

echo 'foo' 1>&2 2>/dev/null

提供输出? foo被重定向到文件描述符2,文件描述符2被重定向到/dev/null。应该没有输出吧?

最佳答案

这是关于您进行重定向时的顺序。当 bash 看到多个重定向时,它会从左到右处理它们。

stdout 的第一个重定向重定向到 stderr (tty) 的当前值。当 stderr 更改为/dev/null 时,stdout 仍写入 stderr 之前的输出 (tty)。

改变它们的位置,它就会起作用。

echo 'foo' 2>/dev/null 1>&2

有关详细信息,请参阅 http://www.catonmat.net/blog/bash-one-liners-explained-part-three/

关于bash - 使用 echo 重定向文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26545377/

相关文章:

mysql - 如何提取分隔符前后的字符串并存储在mysql中?

bash - 从 bash 脚本运行时出现 Rsync 语法错误

bash - 如果当前目录不存在,如何使我的 Bash 脚本失败?

c++ - 为什么 FD_SET/FD_ZERO for select() 在循环内?

java - 为什么关闭输入流也会关闭关联的文件描述符,即使文件描述符在多个流之间共享?

python将视频转换为音频

regex - 从字符串中修剪字符串

multithreading - 多个文件描述符到同一个文件,C

haskell - 在 Haskell 中将文件描述符传递给另一个进程

c - C 中系统调用的文件句柄问题