O operador >
apenas redireciona stdout
("saída padrão") ou "descritor de arquivo 1
". Mensagens de erro geralmente são impressas em um descritor de arquivo diferente, 2
, stderr
, ("erro padrão"). Na tela do seu terminal, você vê os dois stdout
e stderr
.
O operador >
é realmente mais um atalho para 1>
e, novamente, redireciona apenas stdout
. O operador 2>
é semelhante a 1>
, mas em vez de redirecionar stdout
, ele redireciona stderr
.
user@host$ echo hello world >/dev/null
user@host$ echo hello world 1>/dev/null
user@host$ echo hello world 2>/dev/null
hello world
user@host$
Portanto, para redirecionar os arquivos stdout
e stderr
para o mesmo arquivo, use >file 2>&1
.
user@host$ echo hi 2>/dev/null 1>&2
user@host$
Isso diz: "redirecione o stderr
para /dev/null
do echo e redirecione stdout
para stderr.
user@host$ curl --invalid-option-show-me-errors >/dev/null
curl: option --invalid-option-show-me-errors: is unknown
try 'curl --help' or 'curl --manual' for more information
user@host$ curl --invalid-option-show-me-errors 2>/dev/null
user@host$
user@host$ curl --invalid-option-show-me-errors >/dev/null 2>&1
user@host$
No Bash moderno, você também pode usar &>
para redirecionar os dois fluxos para o mesmo arquivo:
user@host$ curl --invalid-option-show-me-errors &>/dev/null
user@host$
Então, para você, especificamente, use:
aws ec2 delete-snapshot --snapshot-id vid --output json >test 2>&1
Ou
aws ec2 delete-snapshot --snapshot-id vid --output json &>test