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