Есть несколько команд оболочки, которые отбрасывают старый вывод. Я видел пару Нос и Хадсон. Я имею в виду, что когда программа запущена, она производит много текстового вывода в оболочке, но когда вы прокручиваете вверх, вы не видите старый вывод, только команды, которые вы использовали перед вы даже набрали исходную команду.
Это сводит меня с ума, потому что важная информация проглатывается. Как мне заставить эти программы перестать делать это?
Подобные вещи обычно являются результатом работы программы, которая напрямую управляет терминалом и самостоятельно перемещает курсор. Например, это то, что делают такие редакторы, как vi - если вы попытаетесь прокрутить оболочку назад после сеанса vi, вы увидите только текст на последней странице вывода vi, а не все, что вы просматривали.
Способы борьбы с этим:
ctrl-A H
). Тогда вы сможете просмотреть журнал позже. Это может показать более полезную информацию.command | tee output.txt
Для последнего есть несколько вещей, которые вы можете попробовать. Сначала посмотрите на аргументы команды и посмотрите, есть ли что-нибудь вроде -nostty
или что-нибудь говорит о dumb terminals
.
Вы также можете попробовать заставить программу думать, что она находится на тупом терминале, например:
TERM=dumb command
(при условии, что оболочка bash), и это может заставить программу думать, что она работает на тупом терминале, и заставить ее вернуться к прямому текстовому выводу.
Вы также можете попробовать ввести в программу какой-либо ввод, и это может вызвать простой режим вывода текста:
echo blarg | command
или, может быть
echo blargh | command -
если программа принимает -
как указание на чтение из стандартного ввода.
В любом случае, поэкспериментируйте с этими идеями, и вы должны найти способ получить прямой текстовый вывод с помощью инструментов, которые вы используете.
Метод, который сработал для меня, делает следующее:
my_command my_args >log 2>&1
В котором весь вывод хранится в файле с именем log
.
Затем в отдельном окне оболочки я делаю следующее:
tail -f log
Что показывает файл журнала как my_command
пишет в него.