在Unix shell中,如果我想要组合stderr并stdout进入stdout流进行进一步操作,我可以在命令的末尾添加以下内容:
2>&1
Run Code Online (Sandbox Code Playgroud)
所以,如果我想head在输出上使用g++,我可以这样做:
g++ lots_of_errors 2>&1 | head
Run Code Online (Sandbox Code Playgroud)
所以我只能看到前几个错误.
我总是很难记住这一点,而且我不得不去查阅它,主要是因为我不完全理解这个特殊技巧的语法.
有人可以打破这个并按字符解释具体2>&1 意义吗?
我正在玩i/o shell重定向.我试过的命令(在bash中):
ls -al *.xyz 2>&1 1> files.lst
Run Code Online (Sandbox Code Playgroud)
和
ls -al *.xyz 1> files.lst 2>&1
Run Code Online (Sandbox Code Playgroud)
*.xyz当前文件夹中没有任何文件.
这些命令给了我不同的结果.第一个命令ls: *.xyz: No such file or directory在屏幕上显示错误消息.但第二个将此错误消息打印到该文件.为什么第一个命令无法将错误的输出写入文件?