>
Редиректор записывает вывод команды (stdout
, а не stderr
- использовать 2>
для этого) в файл , указанный после него. Если он уже существует, файл будет перезаписан.
Это поведение полезно для первой из ваших команд: если существует существующий файл, он должен быть удален и заменен новым.
Однако, поскольку вам нужно добавить все дальнейшие выходные данные вместо замены предыдущих, вам нужно использовать append-redirector >>
. Это создаст файл, если он еще не существует, но добавит перенаправленный вывод в файл, если он уже существует.
И, пожалуйста, не используйте канал |
для написания нескольких команд в одной строке, что перенаправит вывод первой команды (stdout
) на ввод второй команды ( stdin
).
Вы можете использовать точку с запятой (;
), чтобы просто сказать bash выполнять одну команду за другой, как если бы это был файл сценария. Если команда не выполняется (код возврата не равен 0), остальные команды по-прежнему выполняются.
Или вы можете выбрать логические операторы AND ( &&
) или OR ( ||
):
если вы используете &&
для соединения двух команд, вторая будет выполняться только в том случае, если первая удалась (код возврата равен 0). В случае сбоя ни одна из следующих команд не будет запущена. Однако только запускает вторую команду , если первая один не удалось
||
(код возврата не 0)!
Поэтому в вашем случае я бы порекомендовал вам использовать точку с запятой:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
или()
? Спасибо.