Прокрутіть всередину екрана або Призупиніть вихід


382

Я використовую екран для своїх командних рядків під час управління серверами, на яких я працюю. Зазвичай я запускаю невеликі команди (в основному завдання файлової системи), але іноді запускаю більш обширні завдання (наприклад, DBA).

Вихід з цих завдань дуже важливо для мене. Оскільки я використовую Ubuntu та OS X (обидва термінали Windows) для своїх завдань, але мені потрібно використовувати екран, прокрутка недоступна, тому будь-який довгий вихід (думаю, 500-рядкова таблиця з вибору) для мене непомітний. Про колесо миші не йдеться.

Коли я кажу "прокрутка для мене непомітна, я маю на увазі це:

вгорі під час використання екрана в Mac OS X під час прокрутки

Я думав про два варіанти:

  1. Призупиніть (подумайте пагінат ) вихід певної команди. Коли вихід починається, він дозволив би мені прочитати, що відбувається, тоді я натискаю "Enter", потім вихід продовжується, поки більше нічого не буде показано.

  2. Прокрутіть всередину екрана. Але я не знаю, чи це можливо.

Звичайно, я не знаю, чи справді такі варіанти можливі . Якщо вони є, як їх досягти? Інші альтернативи будуть добре сприйняті.

Відповіді:


525

Екран має власний буфер прокрутки, оскільки це термінальний мультиплексор і має мати справу з декількома буферами.

Можливо, є кращий спосіб, але я звик прокручувати в режимі "копіювання" (який ви можете використовувати для копіювання тексту за допомогою самого екрана, хоча для цього потрібна і команда вставки):

  • Натисніть комбінацію префіксів екрана ( C-a/ control+ Aза замовчуванням), а потім натисніть Escape.

  • Рухайтеся вгору / вниз за допомогою клавіш зі стрілками ( і ).

  • Закінчивши, натисніть qабо Escapeповерніться до кінця буфера прокрутки.

(Якщо замість qабо Escapeви потрапили Enterабо , Returnа потім перемістити курсор, ви будете вибирати текст для копіювання, і удар Enterабо Returnвдруге буде копіювати його. Після цього ви можете вставити з C-aподальшим ].)

Звичайно, ви завжди можете використовувати moreі lessдва загальновживаних пейджера, яких може бути достатньо для деяких команд.


5
Крім того, натискання кнопки q виходить з режиму копіювання, не копіюючи нічого (і це одна кнопка менше). Це може бути поясненням vi, але посилання зараз розірвано.
Натанаель Фарлі

3
Також натискання клавіші [Esc] також виходить з режиму копіювання.
Sopalajo de Arrierez

7
будь-який спосіб налаштувати сторінку?
Сунггук Лім

10
Буфер прокрутки, здається, підтримує ві-подібні команди: Cb і Cf для прокрутки сторінки вгору / вниз.
Туко

3
У режимі копіювання працюють мої кнопки PageUp та PageDown. Спочатку натискання переміщується лише на один рядок, але після цього сторінки як звичайні.
Ілля

171

Використання screenбуфера, як вказав njsg, є хорошим рішенням. Ви також можете відключити інший текстовий буфер в інформації про програму xterm termcap на екрані. Якщо вимкнено, ви можете використовувати смуги прокрутки (та колесо миші) для прокручування вгору та вниз.

Додайте це до свого ~/.screenrc.

# Enable mouse scrolling and scroll bar history scrolling
termcapinfo xterm* ti@:te@

Більше обговорення ви можете прочитати тут .


1
встановіть межу прокрутки, ввівши Ctrl + A,:, введіть "прокрутка 10000" або будь-яке числове значення, яке ви хочете
lobi

2
Використовуючи це, типові скорочення терміналів Linux (shift + pg вгору / вниз home / end) також працюють, дякую.
tokland

5
Сама ця порада змушує мене переглянути за допомогою екрана ...
Монітор риб

5
+1 Більш елегантне, ніж прийняте рішення.
Райан Йоосфі

9
дає лише результат, який ви screenотримали з того часу, як ви його почали - тобто повторне приєднання в іншому місці означає, що ви не можете прокрутити вгору і подивитися, що сталося раніше. але ви все ще можете отримати попередній вихід, використовуючи рішення у прийнятій відповіді - тоді ви можете знову використовувати колесо миші.
Філ

28

Усі ці відповіді стосувались навігації в межах сеансу на екрані, але є вбудована функція в команді screen, щоб зберігати все у файлі через -Lаргумент згідно з посібником, який читає:

-L повідомляє екрану увімкнути автоматичний журнал виводу для Windows.

тож ви можете:

screen -L -S testscreen

і він створить файл, screenlog.#де #є число для цього екрана, починаючи з 0.

Це має безліч переваг, і найважливіші для мене:

  1. Ведення записів про те, що я робив, оскільки я можу зберегти файл журналу в папці проекту для подальшого ознайомлення.
  2. Ви можете неактивно та пасивно контролювати процес:
    • використовувати tailfдля моніторингу прогресу в режимі реального часу, не прикріплюючи його до екрана.
    • використовувати grepдля перевірки певного терміну в журналі та створення сповіщень (електронна пошта, спливаюче вікно, voip тощо). Це можна застосувати на кількох екранах, не активно на них дивлячись.

1
Мені не було відомо про -Lпрапор екрану, це дуже корисно! +1
Креднс

1
просто хочете додати більше, screenlog.#створюється в тій же папці, де ви виконуєте screenкоманду
Lê Quang Duy

3

Я мав успіх у створенні базового пейджингу, передаючи вміст more, наприклад:

ls -l | more

Або, якщо ви хочете вивести кольори для випадків використання, таких як виділення синтаксису, ви можете використовувати

ls -l --color=always | more

Це призводить до того, що я можу легко переглядати сторінку по одному екрану. Я не пробував модифікації @ uther, ~/.screenrcале це здається кращим, як довговічне рішення, коли миша доступна.

Щоб спробувати це, ви можете перейти до цього емулятора BusyBox, а потім ...

cd ~/bin
ls -l --color=always | more

Використовуйте клавішу пробілу для перегляду результатів ls -lкоманди або скористайтесь клавішею Enter для переміщення по результатах рядок за рядком.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.