Працюючи в терміналі, весь вивід команд, ви бачите в реальному часі прямо в вікні терміналу. Але бувають випадки, коли його потрібно зберегти, аби потім попрацювати з ним окремо (проаналізувати, порівняти тощо).
В Bash, є можливість перенаправляти відображену інформацію з вікна терміналу в текстовий файл. Розглянемо, як це робиться.
Варіант 1: лише перенаправляємо вивід термінала в файл
У цьому випадку весь результат роботи будь-якої команди буде записано в текстовий файл без відображення його на екрані. Тобто ми буквально перенаправимо інформацію з екрану в файл. Для цього потрібно використовувати оператори > та >>, а також в кінці виконуваної команди вказати шлях до файлу, в який потрібно записувати.
Оператор > зберігає результат виконання команди в зазначений файл і, якщо в ньому вже є якась інформація, перезапише її.
Оператор >> перенаправляє вивід команди в файл, і якщо в ньому є інформація, нові дані будуть додані в кінець файлу.
Розглянемо на прикладі команди ls, яка виводить список файлів і папок в указаній директорії. Запишемо результат її роботи в текстовий файл. Для цього потрібно написати команду, поставити оператор і вказати шлях до файлу:
ls > /home/geek/example
Тепер перевіримо, чи все працює. Для цього можна використати будь-який текстовий редактор, який у вас є. Також це можна зробити прямо в терміналі за допомогою команди cat:
cat /home/geek/example
Все працює.
Пам’ятайте, що > перезапише всі дані, які були до цього в файлі, тому, якщо вам потрібно дописати щось в файл, використовуйте оператор >>.
Припустимо, що після того, як ми перенаправили вивід команди ls в файл “example”, ми вирішили дізнатися версію ядра системи і також зберегти вивід у той самий файл. Для того щоб дізнатися версію ядра, скористаємося командою uname з параметром -a, а потім скажемо Bash, як і куди зберігати результат її виконання:
uname -a >> /home/geek/example
Знову перевіримо результат:
cat /home/geek/example
Як бачимо, у нас збереглися результати роботи як ls, так і uname.
Варіант 2: перенаправляємо вивід в файл і відображаємо його на екрані
Не всім і не завжди зручно користуватися операторами > і >>, адже все ж краще, коли результат виконання команд можна спостерігати в реальному часі в вікні терміналу. В такому випадку ми можемо скористатися командою tee, яка і відобразить виконання команд на екрані, і збереже його в файл. Синтаксис її такий:
команда | tee /шлях/до/файлу
Цей варіант схожий на оператор > з попереднього пункту, тобто при записі в файл всі старі дані будуть видалені. Якщо вам потрібно дописати в файл, в конструкцію треба додати параметр -a:
команда | tee -a /шлях/до/файлу
В Bash є ще кілька операторів і команд, що виконують подібні завдання, їх часто використовують під час написання різних скриптів, але для звичайного користувача, якому потрібно зберегти вивід команди, щоб потім викласти його на форумі, цілком достатньо і цих варіантів. Сподіваюся, що допоміг вам, до нових постів!