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