Когда вы запускаете команду в окне терминала, вывод команды обычно выводится на терминал или на экран, поэтому вы можете сразу же прочитать ее. Вы также можете распечатать вывод команды в файл, если хотите сохранить его.
Сохранение вывода команды в файл полезно, если вы пытаетесь диагностировать проблему. Чтобы получить помощь от службы технической поддержки, вам может потребоваться выполнить определенные команды на своем компьютере и отправить результаты в службу поддержки. Это легко, используя перенаправление вывода в командной строке.
Сегодня мы расскажем, как отправить вывод команды в текстовый файл в оболочке bash в Windows, Mac и Linux.
Примечание. В нашем примере мы будем использовать терминал Mac, но он работает аналогично в оболочке bash в Linux. и в новой оболочке bash в Windows 10
Перенаправить вывод только в файл
Есть два оператора для перенаправления вывода команды в файл вместо экрана.
Символ > создает новый файл, если он отсутствует, или перезаписывает файл, если он уже существует. >> также создает новый файл, если он отсутствует, но добавляет текст в конец файла, если он уже существует, вместо перезаписи файла.
Чтобы перенаправить вывод команды в файл, введите команду, укажите оператор > или >> , а затем укажите путь к файлу, на который вы хотите перенаправить вывод. Например, команда ls выводит список файлов и папок в текущем каталоге. При выполнении следующей команды список файлов и папок будет записан в файл ls_output.txt в папке TerminalOutput .
Замените / path / to / file полным путем к файлу, который вы хотите использовать.
ls > /path/to/file
Это команда для нашего примера.
ls > /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы просмотреть содержимое файла в окне терминала, используйте команду cat, как показано в следующей команде. Снова замените / path / to / file полным путем к файлу, который вы хотите просмотреть.
cat /path/to/file
Оператор > заменяет содержимое существующего файла каждый раз, когда вы используете его для перенаправления вывода. Если вы хотите сохранить результаты нескольких команд в одном файле, используйте оператор >> . Это добавляет вывод команды в конец указанного файла, если он уже существует. Если файл не существует, он создает новый.
Например, мы добавим системную информацию в конец файла, который мы создали выше. Итак, в следующей строке uname -a — это команда, за которой следует оператор перенаправления >> . Затем полный путь к файлу, к которому мы хотим добавить вывод команды uname .
Параметр -a в команде uname выводит всю доступную системную информацию.
uname -a >> /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы просмотреть файл с добавленной информацией в окне терминала, введите следующую команду, указав полный путь к вашему файлу.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Повторите этот процесс столько раз, сколько вам нужно, чтобы продолжить добавление вывода команды в конец файла.
Вот еще один пример отправки вывода команды ls в виде дерева каталогов с рекурсивным перечислением подкаталогов (параметр R ) и по одному файлу на строку (параметр 1 ).
ls -1R > /Users/lorikaufman/TerminalOutput/dir_tree.txt
Затем мы используем команду cat , как уже упоминалось ранее, для просмотра содержимого файла в окне терминала.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Распечатать вывод на экран и перенаправить его в файл
Операторы > и >> не отображают вывод команды на экране. Вывод отправляется только в файл.
Если вы хотите отправить вывод в файл и увидеть его на экране, используйте команду tee вместо операторов > и >> .
Чтобы использовать команду tee, вы должны перенаправить вывод команды, которую вы запускаете, например, ls , в команду tee , используя оператор трубы, вертикальную черту ( | ). Например, следующая команда берет выходные данные команды ls и передает их в команду tee . Затем команда tee отправляет этот вывод на экран и в файл, который вы укажете, используя полный путь к файлу.
ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt
Приведенная выше команда заменяет весь контент в файле или создает новый, если он не существует, как оператор > . Мы использовали следующую команду cat, чтобы просмотреть содержимое нашего файла в окне терминала.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы использовать команду tee для печати вывода на экран и добавления его в конец файла, введите следующую команду. Здесь мы добавляем полную системную информацию в конец файла с помощью команды uname -a , как мы это делали с оператором >> , но также отправляем вывод на экран.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
Следующая команда является версией рекурсивной печати дерева каталогов в файл и на экран, по одному файлу в каждой строке, как мы делали с оператором > .
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Затем мы снова используем команду cat для просмотра содержимого файла.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Но подождите, есть больше
Есть еще много способов перенаправить вывод, включая ошибки, в файл. Вы можете прочитать о различных операторах и командах, используемых для перенаправления вывода, в главе «Перенаправление ввода / вывода» в Руководстве по расширенному написанию сценариев Bash .
Пользователям Mac также следует добавить в закладки наш шпаргалку по командам терминала