Как отображать вывод командной строки на консоли и сохранять вывод в текстовый файл?

Как я могу запустить sudo apt-get install, увидев процесс установки (долго в моем случае) и сохраняя его вывод в текстовый файл?

1
задан 20 June 2014 в 20:46

4 ответа

Вы можете использовать команду tee, чтобы выполнить это.

sudo apt-get install someapp 2>&1 | tee ~/someappInstall.txt

Посмотрите здесь для получения дополнительной информации или выполните man tee

Примечание: Как отмечали другие, 2>&1 необходимо перенаправить STDERR в STDOUT, чтобы уловить любые ошибки. См. . Загляните сюда для получения дополнительной информации для хорошего объяснения того, что на самом деле делает 2>&1.

51
ответ дан 24 May 2018 в 06:29
  • 1
    Я бы добавил "2 & gt; & amp; 1 " перед " " " – Olivier Dulac 20 June 2014 в 13:34
  • 2
    Это более практично, чем script, так как команда не должна указываться. Таким образом, преимущества, подобные завершению bash, легче выполнить. – Dan 20 June 2014 в 15:49
  • 3
    @Dan: скрипту не нужен -c "something ...": если вы отбросите его до оболочки и закончите, когда вы выйдете из этой оболочки. Позволяет использовать несколько команд и т. Д. Кроме того, он сохраняет больше «форматирования» информация, позволяющая переигрывать еще несколько вещей (например: четкий экран и т. д.) (но это также может испортить выход ... ymmv) – Olivier Dulac 20 June 2014 в 16:46
  • 4
    @Dan + работает с функциями, алиасами, встроенными и даже командами и подоболочками. Это должен быть принятый ответ ИМО. – Darkhogg 21 June 2014 в 04:05
  • 5
    вы можете использовать |& вместо 2>&1 | в bash – jfs 25 June 2014 в 14:30

tee выполнит работу по мере необходимости.

Чтобы записать вывод в файл, используйте:

sudo apt-get install your_software | tee log_file.txt

Это приведет только к отображению вывода, но не к сообщениям об ошибках. Если вы также хотите записать сообщения об ошибках, измените команду:

sudo apt-get install your_software 2>&1  | tee log_file.txt
14
ответ дан 24 May 2018 в 06:29

Одна из красивейших apt-get (и APT в целом) заключается в том, что они хранят файлы журналов почти для всего, даже вывод терминала любой команды, которую вы запускаете, в /var/log/apt. Например, это последняя запись в моем /var/log/apt/term.log:

Log started: 2014-06-20  16:46:08
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...
Log ended: 2014-06-20  16:46:33

Теперь, сравнивая с фактическим выводом:

➜  ~  sudo apt-get remove xdotool 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following package was automatically installed and is no longer required:
  libxdo3
Use 'apt-get autoremove' to remove it.
The following packages will be REMOVED:
  xdotool
0 upgraded, 0 newly installed, 1 to remove and 2 not upgraded.
After this operation, 135 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 252472 files and directories currently installed.)
Removing xdotool (1:3.20130111.1-3.1) ...
Processing triggers for man-db (2.6.7.1-1) ...

Он сохранил мне несколько строк, которые не являются в большинстве случаев, и это происходит автоматически. Таким образом, вам не нужна дополнительная команда для выполнения того, что вы хотите сделать, apt-get делает это для вас.

8
ответ дан 24 May 2018 в 06:29

попробуйте команду tee. Вы можете найти здесь несколько примеров.

Простое использование:

  <command> | tee file

пример:

  sudo apt-get install whatYouWant | tee outputFile
1
ответ дан 24 May 2018 в 06:29

Другие вопросы по тегам:

Похожие вопросы: