你如何记住 2>&1 重定向的语法

你如何记住 2>&1 重定向的语法

你有助记词或系统吗?这困扰了我很多年,我总是要查一下

答案1

如果您是 C 程序员,您可以将其视为&1“1 的地址”,因此2>&1读取“将文件描述符 #2 重定向到与 #1 相同的位置”。

答案2

“二对一”(“存在” >)对我来说比“二加一”更符合逻辑,我通常会把它与“二加一”混淆。如果您将“and one”视为单个名词(一个地方),那么它在上下文中也具有语法意义,而“Two and to one”则更难做到这一点 - 您必须将“to one”视为单个名词名词,但它仍然没有上下文意义。

答案3

不是助记符,但我读如下:

0是标准输入。 1是标准输出。 2是标准错误。 >是进入。 <已出。 &是文件描述符(在某些 shell 中)。

2>&1
2      >    &               1
stderr into file descriptor 1

redirect stderr into stdout

如果您在重定向之前弄乱了任何文件描述符,它可能会改变......

2>somefile 1>&2
2      >    somefile     1      >    &2
stderr into somefile and stdout into file descriptor 2

redirect stderr into somefile and stdout into somefile. 

答案4

我记得它总是 2 -> 1. Stderr 到 stdout。

中间部分总是很难,我总是把它搞砸,直到我想起首先是尖锐的角色>,然后是我在现实生活中写不出来的角色&

所以从来没有2&>1,总是2>&1

相关内容