Você tem um mnemônico ou sistema? Isso me incomoda há anos, sempre tenho que pesquisar
Responder1
Se você é um programador C, pode pensar em &1
"o endereço de 1", como 2>&1
se lê "redirecionar o descritor de arquivo nº 2 para o mesmo local que o nº 1".
Responder2
"Dois para e um"("para" ser >
) faz mais sentido lógico para mim do que "Dois e para um", que é com o que normalmente posso confundir. Se você considerar "e um" como um único substantivo (um lugar), também faz sentido gramatical no contexto, o que é mais difícil de fazer com "Dois e para um" - você teria que considerar "para um" um único substantivo, e ainda não faria sentido contextual.
Responder3
Não é um mnemônico, mas li da seguinte maneira:
0
é stdin.
1
é stdout.
2
é stderr.
>
Está em.
<
está fora.
&
é o descritor de arquivo (em alguns shells).
2>&1
2 > & 1
stderr into file descriptor 1
redirect stderr into stdout
Isso pode mudar se você tiver mexido em algum dos descritores de arquivo antes do redirecionamento...
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.
Responder4
Lembrei que é sempre 2 -> 1. Stderr para stdout.
A parte do meio é sempre a mais difícil e eu sempre estraguei tudo, até que lembrei que primeiro vem o caractere agudo >
, depois o caractere que não consigo escrever na vida real &
.
Então nunca 2&>1
, sempre2>&1