Когда вы запускаете команду в окне терминала, вывод команды обычно выводится на терминал или на экран, поэтому вы можете сразу же прочитать ее. Вы также можете распечатать вывод команды в файл, если хотите сохранить его.
Сохранение вывода команды в файл полезно, если вы пытаетесь диагностировать проблему. Чтобы получить помощь от службы технической поддержки, вам может потребоваться выполнить определенные команды на вашем компьютере и отправить результаты в службу поддержки. Это легко, используя перенаправление вывода в командной строке.
Сегодня мы расскажем, как отправить вывод команды в текстовый файл в оболочке bash в Windows, Mac и Linux.
Замечания: Мы будем использовать терминал Mac
в нашем примере, но он работает так же в оболочке bash на Linux
и в новой оболочке bash в Windows 10
,
Перенаправить вывод только в файл
Есть два оператора для перенаправления вывода команды в файл вместо экрана.
> Символ создает новый файл, если он отсутствует, или перезаписывает файл, если он уже существует. >> также создает новый файл, если он отсутствует, но добавляет текст в конец файла, если он уже существует, а не перезаписывает файл.
Примечание для себя: когда вы перенаправляете вывод сценария оболочки в файл, он не будет отображаться на консоли 🙂 #StupidMe
— Ксавье Мертенс? (@xme) 5 августа 2017 г.
Чтобы перенаправить вывод команды в файл, введите команду, укажите > или >> оператор, а затем укажите путь к файлу, к которому вы хотите перенаправить вывод. Например, команда ls выводит список файлов и папок в текущем каталоге. При запуске следующей команды список файлов и папок будет записан в ls_output.txt файл в TerminalOutput папка.
замещать / Путь / к / файлу с полным путем к файлу, который вы хотите использовать.
ls > /path/to/file
Это команда для нашего примера.
ls > /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы просмотреть содержимое файла в окне терминала, используйте кошка команда, как показано в следующей команде. Снова замени / Путь / к / файлу с полным путем к файлу, который вы хотите просмотреть.
cat /path/to/file
> Оператор заменяет содержимое существующего файла каждый раз, когда вы используете его для перенаправления вывода. Если вы хотите сохранить вывод нескольких команд в один файл, используйте >> оператор вместо. Это добавляет вывод команды в конец указанного файла, если он уже существует. Если файл не существует, он создает новый.
Например, мы добавим системную информацию в конец файла, который мы создали выше. Итак, в следующей строке uname -a это команда, сопровождаемая >> оператор перенаправления. Затем полный путь к файлу, к которому мы хотим добавить вывод uname команда.
— параметр в uname Команда печатает всю доступную системную информацию.
uname -a >> /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы просмотреть файл с добавленной информацией в окне терминала, введите следующую команду с полным путем к вашему файлу.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Повторите этот процесс столько раз, сколько вам нужно, чтобы продолжить добавление вывода команды в конец файла.
Вот еще один пример отправки вывода Ls команда как дерево каталогов, с подкаталогами, перечисленными рекурсивно ( р параметр) и один файл в строке ( 1 параметр).
ls -1R > /Users/lorikaufman/TerminalOutput/dir_tree.txt
Затем мы используем кошка Команда, как упоминалось ранее, для просмотра содержимого файла в окне терминала.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Распечатать вывод на экран и перенаправить его в файл
> а также >> операторы не отображают вывод команды на экране. Вывод отправляется только в файл.
Если вы хотите отправить вывод в файл и увидеть его на экране, используйте тройник команда вместо > а также >> операторы.
Ботаник бдителен! Сегодня я обнаружил команду `tee`, которая передает как файл, так и стандартный вывод. Unix продолжает радовать. pic.twitter.com/aClIT8AdJB
— Зик Сикелианос (@zeke) 29 августа 2017 г.
Чтобы использовать тройник команда, которую вы должны передать результат от команды, которую вы выполняете, как Ls, к тройник Команда, используя оператор трубы, вертикальная черта (|). Например, следующая команда принимает вывод Ls Команда и трубы в тройник команда. тройник Затем команда отправляет этот вывод на экран и в файл, который вы укажете, используя полный путь к файлу.
ls | tee /Users/lorikaufman/TerminalOutput/ls_output.txt
Приведенная выше команда заменяет весь контент в файле или создает новый, если он не существует, как > оператор. Мы использовали следующее кошка Команда для просмотра содержимого нашего файла в окне терминала.
cat /Users/lorikaufman/TerminalOutput/ls_output.txt
Чтобы использовать тройник Чтобы напечатать вывод на экран и добавить его в конец файла, введите следующую команду. Здесь мы добавляем полную системную информацию в конец файла, используя uname -a команда, так же, как мы сделали с >> оператор, но отправив вывод на экран, а также.
uname -a | tee -a /Users/lorikaufman/TerminalOutput/ls_output.txt
Следующая команда тройник версия рекурсивного вывода дерева каталогов в файл и на экран, по одному файлу в каждой строке, как мы это делали с > оператор.
ls -1R | tee /Users/lorikaufman/TerminalOutput/dir_tree.txt
Затем мы используем кошка Снова введите команду, чтобы просмотреть содержимое файла.
cat /Users/lorikaufman/TerminalOutput/dir_tree.txt
Но подождите, есть больше
Есть еще много способов перенаправить вывод, включая ошибки, в файл. Вы можете прочитать о различных операторах и командах, используемых для перенаправления вывода, в главе «Перенаправление ввода / вывода» в Руководстве по расширенному написанию сценариев Bash. Вы также можете узнать больше об использовании командной строки
,
Сегодня я усвоил хороший урок. Не перенаправляйте вывод журнала 10-миллионной итерации цикла в текстовый файл. Результат: 5 ГБ TXT-файла.
— ????????? Ллойд (@ lcarswell1) 21 мая 2017 г.
Для чего вы используете перенаправление вывода? Какой метод вы используете? Вы узнали другие способы перенаправления вывода? Поделитесь своими мыслями и опытом с нами в комментариях ниже.