Это простой вопрос, но не смог найти ответ, я нашел и попробовал tee output.txt и system_profiler > output.txt но безуспешно, они сохраняют пустой текстовый файл. Как сохранить вывод терминала с помощью команды в терминале на OSX El Capitan?

3 ответа3

1

Предполагая, что command - это команда, которую вы хотите выполнить, вы можете направить ее вывод в output.txt, используя:

$ command > output.txt

или же

$ command | tee output.txt

Если это не ад, это может быть потому, что вывод выводится не на стандартный stdout а на стандартный stderr . Канал > является неявной записью для 1> что означает "стандартный stdout в ...".
Если вы также хотите stderr в файл, вы можете использовать

$ command >output.txt 2>&1

Это передает весь вывод stderr в файл-дескриптор 1 (= stdout), который, в свою очередь, передается в текстовый файл.

0

В. Как сохранить вывод терминала с помощью команды в терминале на OSX El Capitan?

A. Просто дайте вашему компьютеру достаточно времени для выполнения этой конкретной команды (1 мс или около того).

Ваша команда должна работать без проблем.


На моем Mac команда:

system_profiler > output.txt

.. Занимает около 1м30 с.


Системный профилировщик также имеет параметры форматирования и ограничение по времени, если это необходимо.

system_profiler -xml -timeout 3 > textfile.xml
cat ./textfile.xml

Ссылка:

man system_profiler
system_profiler -usage

Результат (с помощью nl для подсчета номеров строк). Этот файл аналогичен команде и содержит около 52000 строк.

system_profiler> output.txt nl output.txt

     1  Accessibility:

     2      Accessibility Information:

     3        Cursor Magnification: Off
     4        Display: Black on White
     5        Flash Screen: Off
     6        Mouse Keys: Off
     7        Slow Keys: Off
     8        Sticky Keys: Off
     9        VoiceOver: Off
    10        Zoom Mode: Full Screen
...
...

 51937            Wake On Wireless: Supported
 51938            AirDrop: Supported, Channel 0
 51939            Status: Off
0

Синтекс:

$command > /output/file/location

Пример: предположим, что вы хотите перечислить все файлы и каталоги /home /jackson и сохранить его результат в /home/jackson/list.txt, чтобы команда была--

$ls /home/jackson > /home/jackson/list.txt

но помните, если файл /home/jackson/list.txt уже существует и содержит информацию, тогда предыдущая команда сотрет вашу предыдущую информацию и запишет вывод вашей команды. так что если вы не хотите стирать свою предыдущую информацию, используйте «>>» вместо «>». так ваша команда будет.

$ls /home/jackson >> /home/jackson/list.txt

Надеюсь, что это поможет ..

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .