>
Редиректор записує висновок команди ( stdout
, а НЕ stderr
- використовувати 2>
для цього) в файл , вказаний після нього. Якщо він вже існує, файл буде перезаписаний.
Така поведінка корисна для першої з ваших команд: якщо є вже існуючий файл, його слід видалити та замінити на новий.
Однак, як вам потрібно додати всі подальші результати замість заміни попередніх, вам потрібно скористатися перенаправленням append >>
. Це створить файл, якщо він ще не існує, але додасть перенаправлений вихід у файл, якщо він вже існує.
І будь ласка, не використовуйте трубу |
для запису декількох команд в один рядок, які б перенаправили вихід ( stdout
) першої команди на вхід другої команди ( stdin
).
Ви можете використовувати крапку з комою ( ;
), щоб просто сказати bash виконувати одну команду за іншою, як ніби це файл сценарію. Якщо команда не вдається (код повернення не 0), всі інші команди все одно виконуються.
Або ви можете обрати логічні оператори AND ( &&
) або АБО ( ||
):
Якщо ви використовуєте &&
для підключення двох команд, друга виконується лише в тому випадку , якщо перша успішна (код повернення 0). Якщо це не вдасться, жодна з наступних команд не запуститься. Однак тільки запускає другу команду , якщо перший з них не вдався (код повернення не 0)!
||
Тож у вашому випадку я рекомендую вам використовувати крапку з комою:
md5sum firefox.tar.gz > sha.txt ; sha1sum firefox.tar.gz >> sha.txt ; sha512sum firefox.tar.gz >> sha.txt
{}
чи()
? Дякую.