Это простой вопрос, но не смог найти ответ, я нашел и попробовал tee output.txt
и system_profiler > output.txt
но безуспешно, они сохраняют пустой текстовый файл. Как сохранить вывод терминала с помощью команды в терминале на OSX El Capitan?
3 ответа
Предполагая, что command
- это команда, которую вы хотите выполнить, вы можете направить ее вывод в output.txt, используя:
$ command > output.txt
или же
$ command | tee output.txt
Если это не ад, это может быть потому, что вывод выводится не на стандартный stdout
а на стандартный stderr
. Канал >
является неявной записью для 1>
что означает "стандартный stdout
в ...".
Если вы также хотите stderr
в файл, вы можете использовать
$ command >output.txt 2>&1
Это передает весь вывод stderr
в файл-дескриптор 1
(= stdout
), который, в свою очередь, передается в текстовый файл.
В. Как сохранить вывод терминала с помощью команды в терминале на 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
Синтекс:
$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
Надеюсь, что это поможет ..