
я используюэкрандля моих задач командной строки при управлении серверами, на которых я работаю. Обычно я запускаю небольшие команды (в основном задачи файловой системы), но иногда я запускаю более обширные задачи (например, DBA).
Theвыходиз этих задач важны для меня. Поскольку я использую Ubuntu и OS X (обе — Terminal Windows) для своих задач, но мне нужно использовать экран, прокрутка недоступна, поэтому любой длинный вывод (например, таблица из 500 строк из select) для меня невидим. Колесико мыши не рассматривается.
Когда я говорю «прокрутка для меня невидима», я имею в виду следующее:
Я думал о двух вариантах:
Пауза (подумайте)разбить на страницы) вывод определенной команды. Когда вывод начинается, он позволяет мне прочитать, что происходит, затем я нажимаю «Enter», затем вывод продолжается до тех пор, пока больше нечего показывать.
Прокрутить внутри экрана. Но я не знаю, возможно ли это.
Конечно, я не знаю, есть ли эти варианты на самом деле.возможный. Если они есть, как их достичь? Другие альтернативы будут хорошо приняты.
решение1
Экран имеет свой собственный буфер прокрутки, поскольку он является терминальным мультиплексором и должен иметь дело снесколькобуферы.
Возможно, есть способ получше, но я привык прокручивать с помощью «режима копирования» (который можно использовать для копирования текста с помощью самого экрана, хотя для этого также требуется команда вставки):
Нажмите комбинацию префиксов экрана ( по умолчанию
C-a
/ control+ ), затем нажмите или .AEscape[Перемещайтесь вверх и вниз с помощью клавиш со стрелками ( ↑и ↓).
Когда вы закончите, нажмите любую клавишу, кроме клавиш со стрелками, цифр и определенных букв, чтобы вернуться в конец буфера прокрутки. Большинство людей используют qилиEscape
(Если вместо выхода вы нажмете Enterили , Spaceа затем переместите курсор, вы начнете выделять текст для копирования, а повторное нажатие Enterили скопирует его. Затем вы можете вставить с помощью , а затем .)SpaceC-a]
Конечно, вы всегда можете использовать more
и less
, два часто используемых пейджера, которых может быть достаточно для некоторых команд.
решение2
Используя screen
буфер, как указаноот njsgхорошее решение. Вы также можете отключить буфер альтернативного текста в xterm termcap info inside screen. Если он отключен, вы можете использовать полосы прокрутки (и колесо мыши) для прокрутки вверх и вниз.
Добавьте это в свой ~/.screenrc
.
# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@
Вы можете прочитать больше обсужденийздесь.
решение3
Все эти ответы касались навигации в сеансе работы с экраном, нов команде screen есть встроенная функция для сохранения всего в файлепосредством -L
аргументации согласно руководству, которое гласит:
-L сообщает экрану о необходимости включить автоматическое ведение журнала выходных данных для окон.
Итак, вы можете сделать:
screen -L -S testscreen
и он создаст файл в текущем каталоге с именем, screenlog.#
где #
— номер этого экрана, начинающийся с 0.
Это имеет множество преимуществ, и наиболее важными из них для меня являются:
- Веду учет того, что я сделал, так как могу сохранить файл журнала в папке проекта для дальнейшего использования.
- Вы можете неактивно и пассивно наблюдать за процессом:
- используйте
tail -F
для отслеживания прогресса в режиме реального времени, не привязываясь к экрану. - используйте
grep
для проверки определенного термина в журнале и создания уведомлений (электронная почта, всплывающее окно, VoIP и т. д.). Это можно применять на нескольких экранах, не глядя на них активно.
- используйте
решение4
Мне удалось добиться простого разбиения на страницы, передавая содержимое по конвейеру more
, например:
ls -l | more
Или, если вам нужен цветной вывод для таких случаев использования, как подсветка синтаксиса, вы можете использовать
ls -l --color=always | more
Это приводит к выводу, который я могу легко пролистывать по одному экрану за раз. Я не пробовал модификацию @uther, ~/.screenrc
но это кажется предпочтительным в качестве долгосрочного решения, когда доступна мышь.
Чтобы попробовать это, вы можете перейти по ссылкеэтот эмулятор BusyBoxа потом...
cd ~/bin
ls -l --color=always | more
Используйте пробел для пролистывания результатов команды ls -l
или клавишу Enter для перемещения по результатам построчно.