Як зберегти вивід команди у файл у Bash (він же Linux і MacOS термінал)
Коли ви запускаєте команду в рядку bash, вона, як правило, друкує вихід цієї команди безпосередньо в термінал, щоб ви могли прочитати її негайно. Але bash також дозволяє "перенаправляти" вихід будь-якої команди, зберігаючи її в текстовому файлі, щоб ви могли переглянути огляд пізніше.
Це працює в bash на будь-якій операційній системі, від Linux і MacOS до середовища Ubuntu на базі Windows 10.
Варіант перший: перенаправлення виводу лише до файлу
Щоб скористатися перенаправленням bash, виконайте команду, укажіть >
або >>
оператор, а потім задати шлях до файлу, на який потрібно перенаправити вивід.
-
>
перенаправляє вихід команди на файл, замінюючи існуючий вміст файлу. -
>>
перенаправляє вихід команди до файлу, додаючи вихід до існуючого вмісту файлу.
Технічно це перенаправляє "stdout" - стандартний висновок, який є екраном, до файлу.
Ось простий приклад. The ls
Команда перелічує файли і папки в поточному каталозі. Тому. під час виконання наступної команди, ls
список файлів і папок у поточному каталозі. Але він не буде роздруковувати їх на екран - він буде зберігати їх у вказаному вами файлі.
ls> / path / to / file
Вам не потрібно вказувати шлях до існуючого файлу. Вкажіть будь-який дійсний шлях і bash створить файл у цьому місці.
Якщо ви переглядаєте вміст файлу, ви побачите ls
виведення команди. Наприклад, кіт
команда виводить вміст файлу на термінал:
cat / path / to / file
Пам'ятайте, що
Оператор замінює існуючий вміст файлу виходом команди. Якщо ви хочете зберегти вивід декількох команд в один файл, вам слід скористатися >
оператора. Наприклад, наступна команда додасть системну інформацію до вказаного файлу:>>
uname -a >> / path / to / file
Якщо файл ще не існує, bash створить файл. В іншому випадку bash залишить існуючий вміст файлу самостійно і додасть вихід до кінця файлу.
Коли ви переглядаєте вміст файлу, ви побачите, що результати вашої другої команди додано до кінця файлу:
Ви можете повторити цей процес стільки разів, скільки хочете, щоб додати вивід до кінця файлу.
Другий варіант: Вивести друк у звичайному режимі та перенаправити його у файл
Можливо, вам не подобається перенаправляти вивід за допомогою >
або >>
операторів, оскільки ви не побачите вихід команди в терміналі. Ось що трійник
команда для. Команда tee друкує вхід, який він отримує, на екран і зберігає його до файлу одночасно.
Щоб пропустити вихід команди команди трійник
, друк на екран і збереження його у файлі використовуйте наступний синтаксис:
команда | tee / path / to / file
Це замінить щось у файлі виходом команди, як і >
оператора.
Щоб пропустити вихід команди команди трійник
, друк на екран і збереження його до файлу, але додавання його до кінця файлу:
команда | tee -a / шлях / до / файл
Це додасть вихід до кінця файлу, так само як і >>
оператора.
Оболонка bash містить деякі додаткові, розширені оператори, які виконують подібні функції. Вони будуть особливо корисні, якщо ви пишете bash-скрипти. Для отримання більш детальної інформації зверніться до розділу Перенаправлення вводу / виводу в Розширеному керівництві сценаріями.