AWS CLI — Пытается скопировать вывод команды в текстовый файл

#bash #shell #amazon-s3 #command-line-interface #sh

#bash #оболочка #amazon-s3 #интерфейс командной строки #ш #sh

Вопрос:

Я пытаюсь скопировать вывод команды удаления Amazon S3 CLI, даже если операция отклонена, но, похоже, я не могу скопировать вывод в текстовый файл, независимо от того, что я пытаюсь сделать. Я пытаюсь сделать это, чтобы я мог скопировать все неудачные операции в текстовый файл. Вот команда, которую я использовал для тестирования:

aws s3 rm s3://xxxxxxxxxxx --recursive >> test.txt

 $ aws s3 rm s3://xxxxxxxxxxx --recursive >> test.txt

delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
delete failed: s3://xxxxxxxxxxx/xxxxx.png An error occurred (AccessDenied) when calling the DeleteObject operation: Access Denied
  

При проверке test.txt нового текста нет. Был бы признателен, если бы кто-нибудь мог рассказать мне, как я испортил эту команду и как это исправить. Я все еще новичок в этом и пытаюсь понять, как его лучше использовать. Спасибо.

Ответ №1:

Вы также должны явно отправить stderr в file:

aws s3 rm s3://xxxxxxxxxxx --recursive 2>> test.txt

Для отправки как std-вывода, так и ошибок:

 aws s3 rm s3://xxxxxxxxxxx --recursive amp;> test.txt
# To append
aws s3 rm s3://xxxxxxxxxxx --recursive >> test.txt 2>amp;1
  

Комментарии:

1. Сработало отлично! Спасибо.

2. Осторожно, читатель: amp;> это нестандартное устройство, которое распознается не всеми оболочками. Действительно, это нарушает стандарт оболочки, и оболочка должна рассматривать его так, cmd amp; за которым следует простая команда > test.txt . В bash это эквивалентно построению > test.txt 2>amp;1