- Как сохранить вывод команды терминала (Bash) в текстовый файл
- Вариант 1: только перенаправляем вывод терминала в файл
- Вариант 2: перенаправляем вывод в файл и отображаем его на экране
- Команда tee Linux
- Синтаксис команды tee
- Примеры использования
- 1. Простое использование команды tee
- 2. Добавление вывода в существующий файл
- 3. Запись вывода в несколько файлов
- 4. Игнорируем прерывание сигнала
- 5. Перенос вывода команды tee в другую команду
- 6. Команда tee и скрипты
- 7. Как скрыть вывод команды в терминале
- Итоги
- Как сохранить файл в nano Linux
- Как сохранить изменения в nano
- 1. Обычное сохранение
- 2. Сохранение если нет доступа на запись
- Выводы
Как сохранить вывод команды терминала (Bash) в текстовый файл
Когда вы работаете в терминале, весь вывод команд, естественно, вы видите в реальном времени прямо в окне терминала. Но бывают случаи когда вывод нужно сохранить, дабы поработать с ним позже (проанализировать его, сравнить, и т.п). Так вот, работая в Bash у вас есть возможность перенаправлять отображаемую информацию с окна терминала в текстовый файл. Рассмотрим как это делается.
Вариант 1: только перенаправляем вывод терминала в файл
В этом случае весь результат работы любой команды будет записан в текстовый файл, без отображения его на экране. То есть, мы в прямом смысле перенаправим информацию с экрана в файл. Для осуществления этого нужно использовать операторы > и >> и путь к файлу в который нужно писать, в конце выполняемой команды.
Оператор > сохранит результат работы команды в указанный файл и, если в нем уже будет находиться какая-либо информация, перезапишет ее.
Оператор >> перенаправит вывод команды в файл, и если в нем также будет находиться информация, новые данные будут добавлены в конец файла.
Рассмотрим на примере команды ls, которая отображает список файлов и папок в указанной директории. Давайте запишем результат ее работы в текстовый файл. Нам нужно написать команду, поставить оператор и указать путь к файлу:
Теперь посмотрим, все ли сработало. Для этого можно воспользоваться любым текстовым редактором, какой у вас есть. Также это можно сделать прямо в терминале при помощи команды cat:
Помните, что “>” перезапишет все данные, которые были до этого в файле, поэтому, если вам нужно дописать что-либо в файл используйте оператор “>>“
Допустим, что после того, как мы перенаправили вывод команды ls в файл “пример” мы решили узнать версию ядра системы и также сохранить вывод в тот же файл. Чтобы узнать версию ядра воспользуемся командой uname и параметром -a, затем говорим Bash как и куда нужно сохранить результат ее выполнения:
uname -a >> /home/ruslan/пример
Как видим, у нас сохранились результаты работы и ls, и uname.
Вариант 2: перенаправляем вывод в файл и отображаем его на экране
Не всем и не всегда удобно пользоваться операторами > и >>, так как все же лучше когда волнение команд можно наблюдать в реальном времени в окне терминала. В таком случае мы можем воспользоваться командой tee, которая и отобразит выполнение команд на экране, и сохранит его в файл. Синтаксис ее такой:
Этот вариант подобен оператору > из предыдущего пункта, то есть при записи в файл, все старые данные будут удалены. Если вам нужно дописать в файл, в конструкцию нужно добавить параметр -a:
команда | tee -a /путь/к/файлу
В Bash есть еще несколько операторов и команд, выполняющих идентичные задачи, их часто используют во время написания различных скриптов, но для обычного пользователя, которому нужно сохранить вывод команды чтобы запостить его на форуме, вполне достаточно и этих вариантов. Надеюсь, что помог вам, до новых постов!
Команда tee Linux
Иногда нам нужно сохранить вывод команды в файл, чтобы в последствии использовать вывод для других целей. Команда tee в Linux нужна для записи вывода любой команды в один или несколько файлов.
Суть ее работы можно описать заглавной буквой T — команда tee linux принимает данные из одного источника и может сохранять их на выходе в нескольких местах. То, как она может использоваться в Linux, хорошо видно на нескольких примерах, которые приведены ниже.
Синтаксис команды tee
Синтаксис команды достаточно простой:
$ tee опции файл
- -a или -append — Используется для записи вывода в конец существующего файла.
- -i или -ignore-interrupts — Используется, чтобы игнорировать прерывающие сигналы.
- -help — Используется для показа всех возможных операций.
- -version — Используется для показа текущей версии этой команды.
Для сохранения вывода команды можно передать один или несколько файлов.
Примеры использования
1. Простое использование команды tee
Команда ls -la нужна в Linux для показа списка файлов с описанием в текущем каталоге. Здесь команда tee используется для сохранения вывода ls -la в файл вывод.txt Введите следующие команды в терминале, чтобы проверить как работает команда tee.
Здесь первая команда показала вывод списка файлов в текущем каталоге в терминал и записала полученные данные в файл вывод.txt
Вторая команда показала содержимое файла вывод.txt
2. Добавление вывода в существующий файл
Если вывод любой команды записать в существующий файл с применением команды tee и операции -a, содержимое файла не будет перезаписано. Здесь вывод команды pwd будет добавлен в конец файла вывод.txt Запустите следующие команды с помощью терминала:
Здесь первая команда отображает вывод pwd в терминал и записывает вывод в конец файла вывод.txt Вторая команда используется для выделения вывода файла. Показано, что файл вывод.txt содержит оба результата: из предыдущего примера и из этого.
3. Запись вывода в несколько файлов
Команда tee может использоваться для вывода любой команды сразу в несколько файлов. Для этого необходимо указать имена файлов, разделив их пробелом. Используйте следующие команды для сохранения вывода date в два файла: вывод1.txt и вывод2.txt
date | tee вывод1.txt вывод2.txt
Здесь первая команда выводит текущее системное время и сохраняет полученные результаты в два файла вывод1.txt и вывод2.txt Вторая команда показывает идентичное содержимое обоих файлов.
4. Игнорируем прерывание сигнала
Команда tee linux с опцией -i используется в этом примере, чтобы игнорировать любые прерывания во время ее выполнения. Таким образом, команда будет выполнена правильно, даже если пользователь нажимает CTRL+C. Выполните следующие команды в терминале.
wc -l вывод.txt | tee -i вывод3.txt
Здесь первая команда считает количество строчек в файле вывод.txt и сохраняет полученный результат в файл вывод3.txt Вторая команда показывает содержимое файла вывод.txt, который содержит 37 строчек. Третья команда показывает содержимое файла вывод3.txt, в котором указано, что он действительно содержит 37 строчек.
5. Перенос вывода команды tee в другую команду
Вывод команды tee может быть перенесен в другую команду. В этом примере вывод из первой команды переносится в tee, а ее вывод — в другую команду. Запустите следующие команды в терминале:
ls | tee вывод4.txt | wc -lcw
Здесь первая команда используется для записи вывода ls в файл вывод4.txt и подсчета общего числа строк, слов и символов в файле вывод4.txt Вторая команда используется для отображения вывода команды ls, а третья — для отображения содержимого файла вывод4.txt
6. Команда tee и скрипты
Команда tee также может использоваться для записи вывода bash-скрипта в файл. Создайте bash-файл с приведенным кодом, который возьмет два входных числа из аргументов командной строки и выведет сумму этих чисел. Команда tee используется в этом примере для записи вывода add.sh в файл результат.txt
#!/bin/bash
a=$1
b=$2
((result=$a+$b))
echo «The addition of $a+$b=$result»
Запустите следующую команду в терминале для записи файла и отображения его содержимого.
bash add.sh 40 80 | tee результат.txt
Здесь числа 40 и 80 переносятся в качестве аргументов командной строки в скрипт add.sh и вывод записывается в файл результат.txt Команда cat выводит соответствующий результат.
7. Как скрыть вывод команды в терминале
Если вы хотите записать вывод прямо в файл и не показывать его в терминале, используйте /dev/null с командой tee. Для этого выполните следующие команды.
df | tee вывод5.txt > /dev/null
Здесь первая команда используется для записи вывода команды df в файл вывод5.txt, при этом вывод не показывается в терминале. Вторая команда показывает полученный результат.
Итоги
Вывод любой команды может использоваться для нескольких целей. Используя команду tee с разными опциями, можно сохранить вывод команды в нескольких файлах. Применение команды tee в наиболее распространенных случаях хорошо показано в этой инструкции с примерами. Надеемся, читателю будут полезны приведенные упражнения.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как сохранить файл в nano Linux
Текстовый редактор nano — это один из самых популярных редакторов среди новичков в Linux. Он доступен по умолчанию в большинстве дистрибутивов, довольно простой в использовании и прекрасно справляется с редактированием конфигурационных файлов.
В этой небольшой статье мы рассмотрим как сохранить файл в nano Linux. Это может понадобится если вы уже отредактировали конфигурационный файл и хотите сохранить изменения.
Как сохранить изменения в nano
1. Обычное сохранение
Здесь всё делается довольно просто. Для того чтобы сохранить изменения после завершения работы с файлом необходимо нажать сочетание клавиш Ctrl+O. В принципе об этом написано в нижней части окна программы. Здесь перечислены все сочетания клавиш, которые вы можете использовать. Тут знак ^ означает Ctrl:
После нажатия этого сочетания клавиш редактор попросит ввести имя файла для сохранения:
Когда всё будет готово, достаточно нажать Enter. Если вы передумали сохранять документ и хотите вернутся к редактированию в этом окне нужно нажать Ctrl+X. После сохранения программа сообщит, что файл успешно сохранён:
Теперь вы можете закрыть редактор нажав сочетание клавиш Ctrl+X.
2. Сохранение если нет доступа на запись
Однако, если вы попытаетесь сохранить данные в файл, принадлежащий другому пользователю или суперпользователю, к которому у вас нет доступа (например, файлы конфигурации в директории /etc), то получите ошибку: «Ошибка записи /имя/файла: Отказано в доступе«:
Проще всего, закрыть редактор, нажав Ctrl+X не сохраняя изменений. На вопрос редактора про сохранение буфера надо ответить No:
А затем открыть редактор уже от имени суперпользователя:
После этого вы сможете записать данные в файл как было описано выше. Если изменения не хочется терять, во время запроса имени файла можно указать путь к новому файлу в вашей домашней директории, например, ~/temp_passwd:
Новый файл сохранится туда, потом вы сможете переместить его вместо старого в помощью команды mv уже используя sudo:
sudo mv ~/temp_passwd /etc/passwd
Не забывайте, что все системные файлы необходимо редактировать от имени суперпользователя.
Выводы
В этой небольшой статье мы рассмотрели как сохранить изменения в nano при обычном использовании редактора, а также если вы забыли использовать sudo для редактирования системных файлов. Как видите, всё довольно просто. В принципе, если файл нельзя редактировать, то в нижней части окна редактора выводится об этом сообщение. Будьте внимательны. Если у вас остались вопросы, спрашивайте в комментариях.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.