Как запомнить синтаксис для перенаправления 2>&1

Как запомнить синтаксис для перенаправления 2>&1

У вас есть мнемоника или система? Это беспокоит меня уже много лет, мне всегда приходится искать

решение1

Если вы программист на языке C, вы можете думать об &1«адресе 1», то 2>&1есть «перенаправить файловый дескриптор №2 в то же место, что и №1».

решение2

«Два к одному»("to" being >) имеет для меня больше логического смысла, чем "Two and to one", с которым я обычно путаю его. Если вы рассматриваете "and one" как одно существительное (место), это также имеет грамматический смысл в контексте, что сложнее сделать с "Two and to one" — вам пришлось бы рассматривать "to one" как одно существительное, и это все равно не имело бы контекстного смысла.

решение3

Это не мнемоника, но я читаю ее так:

0это stdin. 1это stdout. 2это stderr. >это into. <это out of. &это файловый дескриптор (в некоторых оболочках).

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

Связанный контент