Поиск по сайту:

Как сохранить вывод команды в файл в Bash (терминал Linux и macOS)


Когда вы запускаете команду в командной строке bash, она обычно выводит вывод этой команды непосредственно на терминал, чтобы вы могли сразу его прочитать. Но bash также позволяет вам «перенаправлять» вывод любой команды, сохраняя его в текстовый файл, чтобы вы могли просмотреть вывод позже.

Это работает в bash в любой операционной системе, от Linux и macOS до среды bash на базе Windows 10 Ubuntu.

Вариант первый: перенаправить вывод только в файл

Чтобы использовать перенаправление 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, вывести его на экран и сохранить в файл, используйте следующий синтаксис:

command | tee /path/to/file

Это заменит все в файле выводом команды, как и оператор >.

Чтобы передать вывод команды в tee , распечатать его на экране и сохранить в файл, но добавив в конец файла:

command | tee -a /path/to/file

Это добавит вывод в конец файла, как оператор >>.

Оболочка bash включает несколько дополнительных расширенных операторов, выполняющих аналогичные функции. Они будут особенно полезны, если вы пишете bash-скрипты. Дополнительную информацию см. в главе «Перенаправление ввода-вывода» Расширенного руководства по написанию сценариев Bash.