У меня есть несколько команд, которые я запускаю в терминале, которые выводят все, что они делают, что здорово, но мне не нужно, чтобы все мое окно было заполнено тысячами строк ввода. Есть ли способ сделать так, чтобы отображались только последние x строк вывода, а остальные удалялись?
решение1
Вы можете использовать команду tail. Она выведет список только последних нескольких строк файла, указанного пользователем. Если необходимо, она также выведет список только последних нескольких строк в реальном времени. tail -n 5 выведет последние 5 строк. Просто выполните man tail, чтобы получить другие параметры.
решение2
Не зная, для каких команд вы видите много вывода, я могу сказать, что вы можете ограничить количество строк, выводимых на терминале с помощью команды tail, используя "pipe" для отправки вывода 1-й команды во 2-ю команду. Примером может быть:
ls | tail -n 5
Вместо отправки вывода команды ls на экран, он отправляет (или передает) его команде tail. Команда tail здесь выведет последние 5 строк вывода ls, поскольку указано "-n 5".
решение3
Консольный вывод — это просто строки, записанные одна за другой в выходной поток (стандартный вывод или стандартная ошибка). Консольные окна и терминальные приложения просто отображают их, прокручивая предыдущие вверх. Они не могут стереть уже напечатанные строки. Вам нужно либо:
- Консольное/терминальное приложение со встроенной возможностью пропускать все, кроме последнегонлинии при перерисовке при получении новой линии; это, возможно, и возможно, но я не знаю как.
- Дополнительное приложение, которое может это сделать, запускается из консоли как оболочка для вашего приложения;
screen
и,tmux
вероятно, может это сделать, но я не знаю как. multitail
Например, здесь подойдет приложение, которое может это сделать и которому вы передаете вывод консоли вашего приложения :find | env LINES=10 multitail -j
отобразит вывод
find
, никогда не показывая более 10 строк одновременно.
Вы не указали, какая у вас ОС, но multitail
она доступна для Linux, например, как пакет Ubuntu.