#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