Когда вы запускаете команду в приглашении bash, она обычно печатает вывод этой команды непосредственно в терминал, чтобы вы могли сразу же прочитать ее. Но bash также позволяет вам «перенаправить» вывод любой команды, сохранив ее в текстовом файле, чтобы вы могли просмотреть результат позже.
Это работает в bash в любой операционной системе, от Linux и macOS до среды bash на основе Ubuntu в Windows 10.
Вариант первый: перенаправить вывод только в файл
Чтобы использовать перенаправление bash, вы запускаете команду, задаете оператор >
или >>
, а затем указываете путь к файлу, на который вы хотите перенаправить вывод.
-
>
перенаправляет вывод команды в файл, заменяя существующее содержимое файла. -
>>
перенаправляет вывод команды в файл, добавляя вывод к существующему содержимому файла.
Технически это перенаправляет «stdout» – стандартный вывод, то есть экран, – в файл.
Вот простой пример. Команда ls
выводит список файлов и папок в текущем каталоге. Так. Когда вы выполните следующую команду, ls
выведет список файлов и папок в текущем каталоге. Но он не будет выводить их на экран – он сохранит их в указанном вами файле.
ls>/path/to/file
Вам не нужно указывать путь к существующему файлу. Укажите любой допустимый путь, и bash создаст файл в этом месте.
Если вы просмотрите содержимое файла, вы увидите вывод команды ls
. Например, команда cat
выводит содержимое файла на терминал:
cat/path/to/file
Помните, что оператор
заменяет существующее содержимое файла выводом команды. Если вы хотите сохранить вывод нескольких команд в одном файле, вместо этого вы должны использовать оператор >
. Например, следующая команда добавит системную информацию к указанному вами файлу:
>>
uname -a >>/path/to/file
Если файл еще не существует, bash создаст его. В противном случае bash оставит существующее содержимое файла в покое и добавит вывод в конец файла.
Когда вы просмотрите содержимое файла, вы увидите, что результаты вашей второй команды были добавлены в конец файла:
Вы можете повторять этот процесс столько раз, сколько хотите, чтобы добавить вывод в конец файла.
Вариант второй: печатать вывод нормально и перенаправлять его в файл
Возможно, вам не понравится перенаправление вывода с помощью операторов >
или >>
, так как вы не увидите вывод команды в терминале. Вот для чего предназначена команда tee
. Команда tee печатает входные данные, которые она получает, на экран , и одновременно сохраняет их в файл.
Чтобы направить вывод команды в tee
, распечатать ее на экране и сохранить в файл, используйте следующий синтаксис:
команда
| тройник/путь/к/файлу
Это заменит что-либо в файле на вывод команды, как оператор >
.
Чтобы направить вывод команды в tee
, распечатать на экране и сохранить его в файл, но добавив его в конец файла:
команда
| tee -a/path/to/file
Это добавит вывод в конец файла, точно так же как оператор >>
.
Оболочка Bash включает в себя некоторые дополнительные, расширенные операторы, которые выполняют аналогичные функции. Они будут особенно полезны, если вы пишете сценарии bash. Обратитесь к главе «Перенаправление ввода/вывода» в Расширенном руководстве по написанию сценариев для получения более подробной информации.