Screen не прокручується емулятор терміналу в ubuntu. Screen – кілька екранів в одній SSH сесії. Прийоми роботи в командному рядку Linux та економія часу

Головна / Налаштування

Тема корисних прийомів роботи в терміналі Linux невичерпна. Здавалося б - все влаштовано дуже просто: запрошення оболонки та введені з клавіатури команди. Однак, у цій простоті криється безодня неочевидних, але корисних можливостей. Саме тому регулярно публікуємо матеріали, присвячені особливостям роботи в командному рядку Linux. Зокрема, сьогодні це буде переклад статті, автор якої захоплений економією часу через підвищення продуктивності праці.

Якщо вас цікавить робота в командному рядку Linux - ось деякі з наших матеріалів на цю тему:

  • [ +114 ] Найкорисніші прийоми роботи в командному рядку Linux
  • [ +70 ] 10 прийомів роботи в терміналі Linux, про які мало хто знає
  • [+65 ] Дивно корисний інструмент: lsof
  • [ +32 ] Linux: перенаправлення
  • [ +29 ] PDF-версія статей про Bash-скрипти

Прийоми роботи в командному рядку Linux та економія часу

Вам коли-небудь доводилося бачити, як колега використовує якісь прості команди Linux для вирішення завдань, вирішення яких займає кілька рядків? Мабуть, коли подібне траплялося, ви тільки могли сказати собі: «Ну нічого ж собі! Я не знав, що це можна зробити так просто».

У цьому матеріалі я покажу вам деякі професійні прийоми роботи в командному рядку Linux, які заощадять вам багато часу і в деяких випадках позбавлять поганого настрою. Мало того, що ваші друзі або колеги скажуть: Ну треба ж!, дивлячись на вас. Ці прийоми, крім того, допоможуть вам збільшити особисту продуктивність, так як вам знадобиться вводити менше команд і навіть менше клацань мишею.

Не можна сказати, що ці поради щодо Linux призначені тільки для початківців. Цілком можливо, що навіть досвідчені користувачі знайдуть тут щось корисне, те, про що вони не знали незважаючи на те, що користувалися Linux багато років. Linux вивчають з урахуванням досвіду. Тут згодиться і свій досвід, і досвід інших людей.

Перш ніж ми почнемо, хочеться відзначити, деякі з наведених тут методів залежить від налаштування командної оболонки.

0. Автозавершення команд за допомогою клавіші Tab

Я почну з чогось цілком очевидного, але дуже важливого: з автозавершення команд за допомогою клавіші Tab.

Коли ви починаєте набирати щось у терміналі Linux, ви можете натиснути клавішу Tab, після чого буде виведена підказка, що містить набір варіантів продовження введення, що починаються з щойно введених символів.

Наприклад, збираючись скопіювати файл з ім'ям my_best_file_1.txt , можна просто ввести cp m і натиснути Tab для того, щоб побачити можливі варіанти продовження команди.


Використання клавіші Tab для автозавершення введення

Клавішу Tab можна використовувати для автозавершення команд.

1. Перехід до останньої робочої директорії

Уявіть, що ви працювали в директорії, до якої не так вже й просто дістатися, а потім перейшли в іншу директорію, розташовану зовсім в іншому місці. Потім ви зрозуміли, що вам потрібно повернутись до попередньої директорії. В цьому випадку достатньо скористатися наступною командою:

Cd -
Вона дозволить вам опинитися в останній робочій директорії. Тепер у подібних ситуаціях вам не потрібно більше вводити довгі шляхи, або користуватися копіюванням та вставкою.


Просте перемикання між директоріями

2. Повернення до домашньої директорії

Цей прийом теж дуже очевидний. Ви можете використовувати наведену нижче команду для того, щоб повернутися в домашню директорію з будь-якого місця:

Cd ~
Однак, до домашньої директорії можна повернутися ще швидше - за допомогою команди cd.

У більшості сучасних дистрибутивів Linux оболонка попередньо налаштована саме таке сприйняття команди cd. Це заощадить вам кілька натискань клавіш на клавіатурі.


Найшвидший спосіб переходу в домашню директорію

3. Виведення на екран вмісту директорії

Можливо, ви поставите питання про те, в чому полягає тонкість використання команди для виведення вмісту директорії. Всі знають, що для цієї мети служить команда ls-l.

Але в тому-то й справа. Практично всі використовують команду ls -l для виведення вмісту директорій, тоді як те саме можна зробити за допомогою наступної команди:

Ll
Працездатність цієї команди залежить від дистрибутива Linux і від налаштування оболонки, але ймовірно, що ви зможете скористатися їй у більшості дистрибутивів.


Використання команди ll замість команди ls -l

4. Виклик кількох команд в одному рядку

Уявіть, що потрібно послідовно виконати кілька команд. Напевно, ви вводите одну команду, потім чекаєте, коли вона завершиться, далі – вводите наступну?

У подібній ситуації корисним виявиться роздільник команд; (крапка з комою). При такому підході можна ввести кілька команд в одному рядку. При цьому, на відміну від звичайного введення команд, для виконання наступної команди не слід чекати завершення попередньої.

Command_1; command_2; command_3

5. Виконання кількох команд в одному рядку та умова на успішне завершення попередньої команди

Щойно ми розглянули спосіб виклику кількох команд у одному рядку. Це заощаджує час. Але якщо вам потрібно, скажімо, при викликі двох команд, щоб наступна команда була виконана тільки в тому випадку, якщо попередня завершиться без помилок?

Уявіть собі, що хочете зібрати код, а потім, якщо збирання виявилося успішним, викликати make ?

У подібній ситуації можна використовувати роздільник &&. Цей роздільник дозволяє гарантувати, що наступна команда буде виконана лише в тому випадку, якщо попередня успішно відпрацює.

Command_1 && command_2
Ось гарний приклад використання &&:

Sudo apt update && sudo apt upgrade

6. Простий пошук та використання раніше введених команд

Уявіть собі, що ви, кілька хвилин або кілька годин тому, вводили довгу команду, і вам знову потрібна ця команда. Причому проблема полягає в тому, що згадати точно цю команду ви не можете.

У подібній ситуації вас урятує зворотний пошук. Ця методика дозволяє проводити пошук в історії команд за ключовим словом. Тут достатньо використовувати комбінацію клавіш Ctrl + R для запуску зворотного пошуку і ввести щось, що стосується команди. Система перегляне історію команд та покаже команди, які відповідають введеному запиту.

Ctrl+R search_term
За замовчуванням показано лише один результат. Для того, щоб побачити більше результатів, що відповідають запиту, вам потрібно буде використовувати комбінацію клавіш Ctrl + R знову і знову. Щоб вийти з режиму зворотного пошуку, натисніть Ctrl + C .


Зворотній пошук з історії команд

Зверніть увагу, що в деяких оболонках Bash для перебору результатів пошуку можна користуватися клавішами Page Up і Page Down .

7. Розблокування терміналу після випадкового натискання Ctrl+S

Можливо, ви звикли користуватися комбінацією клавіш Ctrl+S для збереження файлів. Але якщо натиснути ці кнопки в терміналі Linux, ви його заблокуєте.

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

8. Переміщення до початку або кінця рядка

Уявіть собі, що ви вводите довгу команду і десь посередині розумієте, що повинні щось змінити на її початку. Ймовірно, ви використовуєте клавіші-стрілки для того, щоб спочатку переміститися на початок рядка, а потім повернутися до кінця.

Звичайно, в подібній ситуації можна використовувати клавіші Home і End, але, як варіант, за допомогою комбінації клавіш Ctrl+A можна перейти на початок рядка, а за допомогою комбінації Ctrl+E – у кінець.


Переміщення до початку або кінця рядка

Мені такий спосіб здається зручнішим, ніж використання клавіш Home та End, особливо коли я працюю на ноутбуці.

9. Читання лог-файлів у режимі реального часу

Коли вам потрібно проаналізувати файли журналів, в які, під час аналізу, пише дані якийсь додаток, ви можете використовувати команду tail з опцією -f .

Tail -f path_to_Log
Крім того, ви можете використовувати команду grep у її звичайному вигляді для відображення лише тих рядків, які вас цікавлять:

Tail-f path_to_log | grep search_term
Також тут можна використовувати опцію F . Це призведе до того, що утиліта tail продовжить працювати навіть у тому випадку, якщо лог-файл, що переглядається, буде видалений. При такому підході, якщо файл знову буде створено, tail продовжить виводити дані з нього на екран.

10. Читання стислих лог-файлів без їх розпакування

Серверні журнали зазвичай стиснуті за допомогою gzip для збереження місця на диску. Це може призвести до деяких незручностей під час аналізу логів розробниками або системними адміністраторами. Вам може знадобитися використовувати команду scp для копіювання файлу в свою локальну директорію, а після цього витягти файл з архіву для того, щоб його переглянути, так як у вас може не бути дозволу на запис туди, де зберігається файл, що вас цікавить.

Тут на допомогу приходить група команд, ім'я яких починається з літери «z». Ці команди є альтернативою звичайним командам, які використовуються для роботи з файлами журналів. Серед них - less, cat, grep, та інші.

Отже, використовуючи команди zless, zcat, zgrep і подібні до них, вам не доведеться явно розпаковувати стислі файли. Подробиці про ці команди можна переглянути.

До речі, коли я розповів про ці «секретні» команди колезі, мені дісталася чашка кави.

11. Використання команди less для читання файлів

Якщо вам потрібно переглянути файл, особливо великий, можна спробувати команду cat, але набагато краще пошукати щось інше. Справа в тому, що cat виведе на екран весь файл, що не так вже й зручно.

Для перегляду файлів можна скористатися редакторами на зразок Vi або Vim, що працюють у терміналі, але якщо вам просто потрібно прочитати файл, дуже доречним буде команда less.

Less path_to_file
Під час сеансу роботи з less можна шукати потрібні фрагменти тексту за ключовими словами, переміщатися сторінками, виводити дані з номерами рядків тощо.

12. Повторне використання останнього елемента з попередньої команди за допомогою!

У багатьох ситуаціях дуже доречним є можливість використання аргументу попередньої команди.

Припустимо, вам потрібно створити директорію, а потім перейти в неї. Тут можна скористатися опцією! $, вводячи команду переходу після команди створення директорії.


Застосування!$ для використання аргументу останньої команди

Ще краще те саме робиться за допомогою поєднання клавіш Alt +. (крапка). Крапку можна використовувати кілька разів для перебору опцій останньої команди.

13. Використання попередньої команди у поточній команді за допомогою!!

За допомогою!! можна викликати усю попередню команду. Цей прийом виявляється особливо корисним, коли вам потрібно виконати команду і виявляється, що її виконання потрібні привілеї суперпользователя. Наприклад, на малюнку нижче показано ситуацію, в якій команда sudo!! дозволяє заощадити чимало часу.


Скористайтеся! для підстановки останньої команди як аргумент

14. Використання псевдонімів для виправлення помилок уведення

Можливо, ви вже знайомі з командою alias. Її можна використовувати для виправлення помилок у введених командах.

Наприклад, може статися так, що ви часто вводите gerp замість grep . Якщо зі шкідливою звичкою впоратися ніяк не вдається, запишіть псевдонім у файл bashrc наступним чином:

Alias ​​gerp=grep
Тепер вам не доведеться перенабирати цю команду, якщо ви введете її ім'я неправильно.

15. Копіювання та вставка в терміналі Linux

Ця порада дещо неоднозначна, тому що вона залежить від дистрибутива Linux та від терміналу.

Але зазвичай команди копіювання та вставки можна викликати так:

  • Виділіть текст, який потрібно скопіювати, та клацніть правою кнопкою миші для його вставки (працює в Putty та інших SSH-клієнтах для Windows).
  • Виділіть текст, який потрібно скопіювати, після чого клацніть центральною кнопкою миші (колесом прокручування) для того, щоб його вставити.
  • Використовуйте комбінації клавіш Ctrl+Shift+C для копіювання, та Ctrl+Shift+V для вставки.

16. Завершення роботи команди чи процесу

Можливо, те, що я хочу порадити, цілком очевидно, однак, все одно про це розповім. Якщо команда виконується на передньому плані і ви хочете вийти з неї, можете натиснути клавіші Ctrl + C для того, щоб її зупинити.

17. Використання команди yes для автоматизації інтерактивних команд чи скриптів

Якщо вам доводиться працювати з деякими командами або скриптами, які передбачають взаємодію з користувачем, і ви знаєте, що вводитимете Y у відповідь на кожне питання програми, можете автоматизувати цей процес за допомогою команди yes . Робиться це так:

Yes | command_or_script

18. Очищення вмісту файлу без видалення файлу

Якщо ви бажаєте очистити вміст текстового файлу, не видаляючи сам файл, можете використати таку команду:

> filename

19. З'ясування наявності в директорії файлів, які містять певний текст

Командний рядок Linux підтримує багато способів пошуку інформації. Однак, якщо вам просто потрібно дізнатися, чи є в якійсь директорії файли, які містять певний текст, ви можете скористатися такою командою:

Grep -Pri Search_Term path_to_directory
Однак я раджу всім, кому потрібен пошук у Linux, розібратися як слід із командою find.

20. Виклик довідки для будь-якої команди

Хочу завершити цей матеріал одним дуже очевидним, проте дуже важливим «трюком», який полягає у виклику довідки для команди або інструменту командного рядка.

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

Command_tool --help

Я навмисно не включив у цей матеріал команди на зразок fuck, тому що вони не з тих стандартних засобів, які можна знайти буквально всюди. Те, про що я тут розповів, може принести користь під час роботи практично з усіма дистрибутивами Linux та оболонками командного рядка без необхідності встановлення нових програм.

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

Screen дозволяє відключитися від SSH, зберігши завдання, що виконуються на віддаленому сервері.

Для встановлення на Ubuntu потрібно виконати команду

$ sudo apt-get install screen

Після цього потрібно запустити screen:

$ screen

Після запуску ви побачите або запрошення командного рядка, або «екран привітання», натиснувши SPACE або ENTER в якому ви так само потрапите в shell. При цьому всі команди будуть запущені вже усередині screen'у.

Для того, щоб вийти зі screen'а (вийти, а не від'єднатися) достатньо вийти зі всіх відкритих в ньому оболонок, або ж, натиснути комбінацію клавіш Ctl-a \, і відповісти «y» на запитання «чи ви хочете вийти» .

Від'єднатися від поточного скріна, не закриваючи та не завершуючи сесії, можна комбінацією Ctrl-a d.

Підключення до screen

Якщо на машині вже є запущена screen-сесія, і ви хочете приєднатися до неї, то

  1. якщо сесія одна, досить просто команди: $ screen –x
  2. якщо сесій кілька, то: подивитися список запущених screen'ів можна командою screen -ls: $ screen -ls 2763.pts-0.debian (Detached) 2743.pts-0.debian (Detached) 2 Sockets in /var/run/screen/S-diesel.

    Вибираємо потрібний нам screen, та приєднуємося до нього:

    Screen -x 2762.pts-0.debian

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

    $ screen -S "job1"

    де job1 - це назва нашої «іменованої» сесії. Тепер в -ls ми побачимо набагато зрозуміліше:

    $ screen -ls There are screens on: 2762.pts-0.debian (Detached) 2795.job1 (Detached) 2743.pts-0.debian (Detached) 3 Sockets in /var/run/screen/S-diesel.

    і зможемо приєднатися до сесії job1, просто вказавши її ім'я:

    $ screen -x job1

Перемикання між вікнами screen

Як ви вже зрозуміли, сесії зберігаються навіть у той час, коли ви відключені від сервера, і все, що в них запущено, продовжує виконуватися. Втім, на цьому можливості screen'у не вичерпуються. Іноді, при роботі з ssh, дуже хочеться, щоб було відкрито відразу кілька терміналів, при цьому коннектуватися кілька разів облом - особливо якщо коннекті потрібно через кілька серверів. У цьому теж може допомогти screen. Просто натисніть Ctrl-ac, і відкриється ще один шелл. Переміщатися між відкритими шеллами можна або через Ctrl - a<Цифра>, де<Цифра>- Номер відкритого шелла, починаючи з нуля, або Ctrl - an / Ctrl - ap - вперед назад. Отримати список відкритих вікон - консолей (і переключитися на потрібну), можна комбінацією клавіш Ctrl - a; щоб задати нормальне ім'я (а не просто нудний «bash») для якогось нитка вікна, перейдіть в нього і натисніть Ctrl - a A (регістр має значення), потім в запрошенні введіть ім'я.

Моніторинг виконання команди

Якщо відкрито кілька вікон, корисною можливо стежити за активністю в одному з них. Наприклад, якщо ви запустили «довгограючу» команду та цікаво дізнатися, коли вона завершиться. Переходимо у вікно з цією командою, тиснемо Ctrl - a m, бачимо напис типу такий: "Window 0 (bash) is now being monitored for all activity". Коли щось у вікні зміниться, screen подасть звуковий сигнал, а у списку вікон після номера з'явиться символ @.

Прокручування екрана в screen

Для перегляду виводу команди, який пішов вище за межі вікна, потрібно натиснути Ctrl-a [

Це перемкне screen у Copy mode. Щоб вийти з цього режиму, просто натисніть Esc.

Конфігурація screen

Конфігурується screen за допомогою файлу ~/.screenrc у вашому домашньому каталозі. Наприклад, можна написати туди:

Caption always "%(= 45)%(+b w)Screen: %n | %h %=%t %c" hardstatus alwayslastline "%-Lw%(= BW)%50>%n%f* -)%+Lw%<"

Це дасть вам весь час видимий список відкритих вікон та іншу корисну інформацію внизу екрана.

Також при запуску Screen за замовчуванням виконуються команди із файлу /etc/screenrc та файла.screenrc з домашнього каталогу користувача. Багато команд, які можна використовувати у файлах конфігурації, були розглянуті в таблицях вище в полі «Текстова команда». Нижче наведено приклад конфігурації Screen з файлу.screenrc:

# Вимкнути вивід ліцензійної інформації при старті Screen startup_message off # Відкрити оболонку для роботи chdir screen -t Work # Відкрити оболонку для керування конфігурацією chdir /etc screen -t Configuration # Відкрити оболонку для перегляду логів chdir /var/log screen -t Logs # Вибрати перше вікно після старту select 0

Цей досить простий конфігураційний файл відкриває три вікна з іменами Work, Configuration, Logs, відповідно в особистому каталозі користувача, в каталозі /etc і каталозі /var/log . Після запуску на екрані буде перше вікно з ім'ям Work. На малюнку 1 представлений приклад роботи Screen із цим файлом конфігурації.

Завершення Screen

Якщо з якоїсь причини сесія screen перестає відповідати, її можна завершити. Для цього потрібно підключитися до потрібної сесії, потім натиснути Ctrl-a і ввести команду: quit.

Screen завершить роботу цієї сесії, примусово закривши всі вікна.

Робота зі Screen

Одна з основних можливостей Screen - створення та керування декількома консольними вікнами, або текстовими програмами в одному єдиному вікні терміналу. Одночасно на екрані терміналу може бути лише одне з вікон (кілька їх можливо тільки у випадку якщо вони ділять екран терміналу на частини). Screen дозволяє швидко перемикатися між вікнами, зберігати та пізніше повертатися до текстової сесії та відкривати доступ до неї іншим користувачам. Плюс до цього Screen дозволяє давати вікнам заголовки, відстежувати активність у кожному вікні та обмінюватися вмістом вікон за допомогою копіювання та вставки. До того ж, Screen дозволяє перепризначати клавіші, керувати настроюванням емуляції терміналу і вирішувати ще багато невеликих завдань, пов'язаних з текстовими вікнами, в яких може і не бути постійної необхідності, але які можуть допомогти виконанню адміністративної роботи в окремі моменти часу.

На малюнку зображений Screen із трьома іменованими вікнами (Work, Configuration, Logs) і відкритий у ньому текстовим редактором Vim, з прикладом файлу конфігурації Screen.

Перший запуск

Screen може бути запущений за допомогою консольної команди screen, але перш за все перевіримо, чи встановлено Screen у вашій системі за допомогою наступної команди:

$ which screen /usr/bin/screen

Якщо команда повернула шлях як у прикладі вище, можна відразу починати користуватися, інакше Screen може бути встановлений стандартними засобами підтримки пакетів вашої операційної системи, або завантажено з офіційного сайту http://www.gnu.org/software/screen/.

Тепер ми можемо запускати Screen, для чого просто набираємо:

$ screen

Після запуску на екран може з'явитися інформація про версію та ліцензію (при розгляді конфігурації ми розглянемо, як можна скасувати виведення даного повідомлення) і в цьому випадку необхідно натиснути клавішу «Пробіл» або «Введення», після чого ми потрапляємо в, на перший погляд, звичайну , текстова оболонка. Слід зазначити, що у командному рядку відразу можна вказати команду для запуску певного додатка, наприклад, для запуску top треба набрати:

$ screen top

Добре, тепер Screen запущений, але, на перший погляд, немає ніяких зовнішніх змін - ми можемо працювати в запущеній оболонці, або використовувати top. для себе керуючі команди, що починаються з комбінації клавіш Ctrl + a.

Цю керуючу комбінацію клавіш можна змінити через файли конфігурації (які ми розглянемо нижче), але у всіх прикладах розглядатиметься лише конфігурація за замовчуванням. Таким чином, всі клавіатурні команди Screen складаються з двох клавішних комбінації - керуючої Ctrl + a і безпосередньо клавіші, або клавішної комбінації, що представляє команду. Практично кожна команда також має текстовий аналог, який можна виконати, або через файл конфігурації, або, виконавши наступну команду:

В даному випадку ми повинні виконати дві клавіатурні комбінації спочатку, натиснувши Ctrl + a і потім клавішу двокрапки. При цьому Screen виведе в нижній частині екрана запрошення для введення команди у вигляді двокрапки. Ту ж саму команду, яку ми щойно виконали за допомогою клавішної комбінації, можна виконати через конфігураційний файл за допомогою текстової команди colon , що може, наприклад, знадобитися для виведення запрошення про введення команд при старті або перепризначення комбінації клавіш, що викликають це запрошення. Нижче, як і в прикладі вище, для кожної клавішної комбінації я писатиму відповідні їм ключові слова, які можна використовувати у файлах конфігурації, або вводити за допомогою Ctrl+a та:.

Тут може виникнути закономірне питання - а що, якщо програмі потрібно безпосередньо передати комбінацію клавіш Ctrl + a, яка вже використовується в Screen як службова? Наприклад, така сама комбінація використовується бібліотекою редагування командного рядка readline для виконання переходу на початок рядка. Для цього випадку в Screen передбачена наступна команда:

Управління вікнами

У попередньому розділі ми навчилися запускати Screen та вивчили основний шаблон для всіх клавішних команд. Настав час розібратися з командами для керування вікнами. При запуску Screen створює одне вікно (якщо тільки в конфігурації не вказано створення відразу кількох вікон) і надає йому номер 0. Нове вікно з командною оболонкою можна створити за допомогою команди:

КЛАВИШНА КОМБІНАЦІЯ Текстова команда ОПИС
Ctrl+a c screen Створити нове вікно

При цьому Screen створить нове вікно і надасть йому наступний по порядку номер. У нашому випадку новим вікном буде вікно з номером 1.

Тепер у нас вже є два текстові вікна, з яких поточним є щойно створене вікно з номером 1, а вікно з номером 0 знаходиться у фоновому режимі. Але, слід зазначити, що навіть якщо вікно знаходиться у фоновому режимі, воно може сприймати виведення запущеного в ньому програми, якби воно було поточним. Наприклад, ми могли б запустити у вікні 0 процес, який виводить додаткову інформацію через певні проміжки часу (наприклад це може бути команда tail -f) і потім переключитися у вікно 1 для роботи в текстовому редакторі. Через якийсь час, якщо ми захочемо подивитися, що відбувається у вікні 0, ми можемо перейти в це вікно і побачити весь висновок працюючого там процесу. Потім можна перейти назад у вікно редагування.

У попередньому параграфі я описав приклад з перемиканням між вікнами, але поки що не сказав які команди для цього використовуються. Розглянемо докладніше команди, які найчастіше використовуються для управління вікнами:

КЛАВИШНА КОМБІНАЦІЯ Текстова команда ОПИС
Ctrl+a w windows Виводить список номерів та заголовків всіх вікон у нижньому рядку екрана
Ctrl+a « windowlist Виводить інтерактивний список номерів та заголовків всіх вікон, з якого можна вибрати віконце для перемикання
Ctrl+a Номер вікна select Вибір вікна за номером. Наприклад, команда Ctrl + a та 0 робить поточним вікно з номером 0
Ctlr + a n next Перейти на наступне по порядку вікно, або на перше вікно, якщо ми знаходилися в останньому вікні
Ctrl+a p prev Перейти на попереднє вікно, або на останнє вікно якщо ми знаходилися в першому вікні
Ctrl+a select Вивести запрошення введення номера вікна для перемикання
Ctrl+a Ctrl+a other Перейти на останнє використане вікно
Ctrl+a N number Показати номер та заголовок поточного вікна
Ctrl+a A title Встановити заголовок поточного вікна
Ctrl+a k kill Примусове закриття вікна, наприклад, якщо програма не вдається закрити звичайним способом

При закритті якогось із вікон номери інших вікон не змінюються і в нумерації з'являються «дірки», які пізніше можуть бути заповнені новими вікнами. Хоча Screen має команду для зміни номера вікна, вона тут не розглядається і залишається для самостійного вивчення. У випадку, якщо всі вікна закриті, Screen завершує свою роботу і виводить повідомлення:

Робота з текстом

Вище ми навчилися запускати Screen та керувати вікнами - створювати їх, перемикатися від вікна до вікна, привласнювати імена та закривати. Тепер розглянемо роботу з вмістом вікон - копіювання та вставку текстового вмісту одного вікна в інше, моніторинг вікон, збереження текстової копії екрана та інші завдання:

КЛАВИШНА КОМБІНАЦІЯ Текстова команда ОПИС
Ctrl+a M monitor Увімкнути/вимкнути моніторинг активності для поточного вікна. Коли моніторинг увімкнено і у вікні, що знаходиться у фоновому режимі, виводиться текст, у службовому рядку виводиться інформація про активність.
silence Увімкнути/вимкнути моніторинг відсутності активності для поточного вікна. Коли моніторинг включений і у вікні, що знаходиться у фоновому режимі, деякий період часу не проводиться виведення тексту у службовому рядку, виводиться інформація про відсутність активності.
Ctrl+a h hardcopy Записати текстове зображення поточного вікна у файл hardcopy.номер_вікна у каталозі Screen за замовчуванням.
Ctrl+a H log Увімкнути/вимкнути трасування тексту поточного вікна у файл screenlog.номер_вікна в каталозі Sccreen за замовчуванням.
Ctrl+a [ copy Увійти в режим копіювання. Додаткові команди цього режиму наведено нижче.
Ctrl+a ] paste Вставити у вікно текст з регістру за замовчуванням (куди він був скопійований за допомогою команди вище).

У режимі копіювання Screen запускає текстовий редактор, схожий на редактор Vi. Найчастіше використовувані команди редактора:

  • Клавіші керування курсором переміщують курсор по екранному буферу;
  • Клавіша «Пробіл» вказує на початок і кінець регіону для копіювання. При другому натисканні «Пробіл» , зазначений текст копіюється в регістр за замовчуванням, і Screen виходить з режиму копіювання;

Декілька вікон на екрані

За замовчуванням Screen залишає видимим на екрані лише одне логічне вікно, але за бажанням є додаткова нагода розділити екран терміналу на горизонтальні регіони. Таким чином, можна відображати кілька вікон на одному екрані терміналу. Розглянемо докладніше команди для роботи з регіонами екрану:

На малюнку 2 зображено Screen з трьома іменованими вікнами (Work, Configuration, Logs) та розділеним на два регіони екраном. У верхньому регіоні відкрито вікно Work із текстовим редактором Vim та прикладом файлу конфігурації Screen. У нижньому регіоні вікно Configuration з частиною загального конфігураційного файлу /etc/screenrc.

Консольні сесії

І на завершення, ми розглянемо одну з найпопулярніших можливостей Screen. Уявимо таку ситуацію: системний адміністратор, перебуваючи вдома, заходить на віддалений сервер, відкриває кілька вікон, запускає необхідні завдання, потім закриває з'єднання та їде на роботу. На роботі він знову заходить на той же сервер та відновлює відкриті будинки вікна з результатами виконаних завдань. Звучить трохи фантастично? Ні в якому разі! Консольні сесії Screen якраз і призначені для здійснення цього завдання. Вони дозволяють від'єднати від термінала поточну сесію Screen з усіма вікнами та додатками, що виконуються, і потім у будь-який момент часу приєднатися до неї знову. При цьому всі програми, що виконуються під Screen, будуть продовжувати працювати і використовувати свої вікна для виведення інформації. Плюс до всього консольних сесій може бути кілька, але в цій статті ми не будемо на цьому детально зупинятися.

Розглянемо команди від'єднання консольної сесії від терміналу:

КЛАВИШНА КОМБІНАЦІЯ Текстова команда ОПИС
Ctrl+a d detach Від'єднати консольну сесію та залишити її запущеною у фоновому режимі. При цьому Screen пише:
Ctrl+a D D pow_detach Від'єднати консольну сесію, залишити її запущеною у фоновому режимі та надіслати батьківському процесу Screen сигнал HANGUP. При запуску Screen з віддаленого терміналу це означає від'єднання Screen, а потім закриття з'єднання. При цьому Screen пише:
Ctrl+a z suspend Від'єднати консольну сесію та залишити її запущеною як фоновий процес батьківської командної оболонки. У цьому випадку для відновлення сесії крім команд, описаних нижче, можуть бути використані стандартні команди управління фоновими процесами командної оболонки
Ctrl+a Ctrl+ quit Закрити всі вікна сесії і вийти зі Screen. Треба зазначити, що багато дистрибутивів перевизначають клавішну комбінацію для цієї команди, але текстову команду можна використовувати у будь-якому випадку

Щоб приєднатися назад до від'єднаної сесії, або переглянути список доступних сесій, необхідно запустити Screen з одним із наступних ключів:

Що далі?

Screen має величезну кількість різних можливостей і практично неможливо описати їх все в одній статті, тому деяка частина функціональності залишилася «за кадром». Ось деякі можливості/налаштування Screen, які не були розглянуті вище та залишаються для самостійного вивчення:

  • Команди настроювання емуляції терміналу;
  • Розраховані на багато користувачів консольні сесії;
  • Призначення або перепризначення командам клавішних комбінацій;
  • Допоміжні настройки текстових команд. Наприклад, опція -t команди screen, яка використовується як приклад файлу конфігурації;
  • Рідко використовувані команди, наприклад команди, які можна використовувати при налаштуванні запуску Screen - echo та sleep;
  • Змінні середовища, які можуть бути корисними при налаштуванні Screen;
  • Додаткові ключі запуску Screen;

Альтернативи screen

Screen - це програма з великою історією, слід зазначити, що перша версія з'явилася 1987-го року. На даний момент, до Screen, практично, не додається нових можливостей (однієї з причин може бути наявність вже великої їх кількості на даний момент) і проводиться в основному лише виправлення помилок. Якщо комусь не подобається відносна «старість» Screen, або не потрібна така велика кількість можливостей, то можна звернутися до однієї з наступних програм:

  • dtach () — основний акцент розробки цієї програми зроблено на компактність. За аналогією зі Screen вона підтримує можливість роботи з консольними сесіями, але не має інших можливостей Screen.
  • SplitVT (http://www.devolution.com/~slouken/projects/splitvt/) — дозволяє обробити екран терміналу на дві половинки та працювати відразу з двома програмними оболонками.
  • Tmux () – для роботи з консольними сесіями Tmux використовує модель клієнт-сервер.
  • Twin (http://linuz.sns.it/~max/twin/) — спроба створити текстовий віконний інтерфейс аналогічний графічним побратимам.

Вільний переклад: Олексій Дмитрієв
Дата перекладу 19 листопада 2007

Ми говоримо тут про GNU/Linux текстової консолі - а не про те, що з'являється у вікні терміналу або X-window менеджера, або робочого столу. З цього приводу стільки всякої плутанини, що я змушений тривіально сказати: - "Якщо ви, перебуваючи в графічному режимі, натискаєте "Alt-Ctrl-F1" (або "F2" тощо), то ви потрапляєте в текстову консоль" .

0. Про що йдеться?

Завантаження комп'ютера. Ви в текстовій консолі, спостерігаєте за текстом, що швидко пропливає вниз. Ви хочете переглянути шматок цього тексту, що вже промайнув. Ви натискаєте "Shift-PgUp" або "Shift-PgDn", а якщо раніше вже змінювали клавіші за промовчанням (ні-ні, не розкладку клавіатури в Іксах), то будь-які інші клавіші. Цими клавішами ви змушуєте текст переміщатися вгору-вниз екраном. На даний момент ви використовуєте буфер зворотного прокручування (назвемо його буфер прокручування для стислості).

Коли починаєш користуватися цим буфером, то дуже швидко з'ясовуються дві речі:
Тільки частина тексту, що супроводжує завантаження, може бути повернена.
Файл "/var/log/messages" фіксує набагато менше, ніж ви хотіли побачити.

Ви починаєте прочісувати Інтернет, і незабаром попередні результати з'являються: публікації прокручування в Лінуксі дуже давні і простежуються до ранніх 90х років. Однак про все, що було до ядра версії 2.6.x, слід забути.

Справді, слід бути вибірковим у тому, що читаєш: більшість порад, що стосуються версій раніше 2.6.x, швидше за все заплутають вас і відведуть хибним шляхом. Повірте мені - я вбив на це багато часу. Поведінка зворотної прокрутки визначається у файлі "vc.c", неприємному маленькому файлі у вихідниках ядра, причому "vc" позначає "virtual console" (віртуальна консоль).

Зауважте, що при перемиканні консолей буфер прокручування втрачається - таким чином, в поточній консолі доступний повний обсяг цього буфера. (Тут особливо багато завалів інформаційного сміття з часу до ядра 2.6.x).

За замовчуванням розмір буфера дорівнює 32K. Цього вистачає на 4 натискання клавіш зворотного прокручування - кожне натискання прокручує половину екрана, 25 рядків на екран. Виходить близько 50 рядків. І більше ви не отримаєте, навіть якщо у вас 30 чи 50 рядків на екран. Потрібно сказати, що 50 рядків - це мала дещиця того, що пролітає по екрану за час завантаження. У зв'язку з вищевикладеним, постають два питання:

Як збільшити буфер прокручування?

Чому логі не фіксують деякі повідомлення, які ви бачили під час завантаження?

1. Як збільшити буфер зворотного прокручування?

Першим рішенням буде збільшити дефолтний (умовчальний) розмір буфера у вихідниках ядра та перекомпілювати його. Дозвольте припустити, що ви так само не схильні займатися цим, як і я, і пошукати більш гнучке засіб.

І такий засіб є, а називається воно "framebuffer console", для стислості "fbcon". Цей пристрій має файл документації "fbcon.txt"; якщо ви встановлювали документацію до ядра, він у вас є. Вишукуйте його десь у районі "/usr/share" гілки (я не можу вказати точний шлях через різницю в дистрибутивах). Завжди можна завантажити його як одиночний файл.

На цьому місці перепрошую: ми повинні зробити невеликий відступ і трохи поговорити про відеобуфер (framebuffer).

Відеобуфер - це буфер між дисплеєм та відеоадаптером. Його краса в тому, що їм можна маніпулювати: він дозволяє трюки, які не пройшли б, якби адаптер пов'язаний безпосередньо з дисплеєм.

Один з таких трюків пов'язаний із буфером прокручування; виявляється, ви можете "попросити" відеобуфер виділити більше пам'яті буферу прокручування. Це досягається через завантажувальні параметри ядра. Спочатку ви вимагаєте framebuffer (відеобуфер); Потім запитуєте більший буфер прокручування.

Нижченаведений приклад стосується GRUB, але може бути легко адаптований до LILO. У файлі налаштування GRUB - "menu.lst"- знайдіть відповідну ядру строчку, а потім:
Видаліть опцію "vga=xxx", якщо така є.
Додати опцію "video=vesabf" або те, що відповідає вашому "залізу".
Додати опцію "fbcon=scrollback:128".
Після цієї процедури рядок параметрів ядра повинен виглядати приблизно так:
"kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128".

Постає питання, навіщо видаляти опцію "vga=xxx"? Через можливі конфлікти з відео-опцією. На своєму ATI адаптері, я не можу змінити буфер прокручування, якщо "vga=xxx" є у списку. Можливо, у вашому випадку це не так. Якщо вищезазначені опції працюють - добре; але що, якщо ви хочете збільшити кількість рядків, або встановити дрібніший шрифт на екрані? Ви завжди робили це за допомогою опції "vga=xxx" - а вона і зникла. Не переживайте - те саме може бути досягнуто зміною параметрів fbcon, як описано у файлі "fbcon.txt" (але не описано в даній статті). У Ubuntu та Debian є більш зручний спосіб: "dpkg-reconfigure console-setup". Цю команду варто використовувати також тому, що вона ще й коригує "initrd" на ваші нові налаштування.

2. Розширення меж

Опція "fbcon=scrollback:128" дає можливість переміщення по буферу прокрутки на 12-13 екранів. Це приблизно 150 рядків - цілком непогано, Але, можливо, ще недостатньо для перегляду всіх повідомлень. Чи можна поставити більше 128, скажімо, 256? Межа 128 закладена в "vc.c". Якщо хочете більше, редагуйте та компілюйте. Для себе я вирішив, що гра не варта свічок.

Коли я вже зовсім вирішив, що досяг найвищої межі – я цитую з "fbcon.txt":
fbcon=scrollback: [k]
...
The "k" suffix is ​​optional, і буде multiply the "value" by 1024.
(Суфікс "k" є опціональним, і помножить значення "value" у 1024 рази).
Я кинувся перевіряти,.. і, хоч би що думав з цього приводу автор, переконався, що 128 і 128k дають абсолютно однаковий результат. Межа за замовчуванням дорівнює 128KB пам'яті, от і весь оповідь.

Насамкінець зауважте, що застосування розширеного буфера прокручування використовує як пам'ять графічного адаптера, так і буфер в оперативній пам'яті. Якщо ви задовольняєтеся 32KB, ви використовуєте тільки пам'ять відеоадаптера. На практиці, однак, я не помітив жодного уповільнення.

3. Що відсутнє у логах?

У Ubuntu та Debian та інших дистрибутивах всі системні повідомлення зберігаються у файлі "/var/log/messages". Це можна застосувати, навіть якщо сервіс (daemon) протоколювання не старий "syslog", а "syslog-ng" ("ng": "new generation" /нове покоління/).

В обох випадках ви можете переглянути повідомлення, набравши "dmesg" у командному рядку. Це не допомагає: ви ясно бачили під час завантаження повідомлень, яких немає у виведенні команди "dmesg". Як же так?

Це властивість, а чи не помилка! Повідомлення, що протоколюються у файлі, надходять від різних субсистем ОС. Субсистеми, що видають повідомлення у файл протоколу, в термінології syslog позначаються як "facilities" ("кошти" або "послуги"), їх всього 8 штук. У процесі завантаження працюють програми та скрипти, які можуть і не належати до жодного з 8 "коштів". Ми бачимо їх повідомлення, що пробігають екраном, але нічого не буде зафіксовано в лог-файлі!

Наприклад, ви не побачите повідомлень від програм "loadkeys" (openSUSE) або "consolechars" (Ubuntu та Debian), коли відбувається завантаження розкладки клавіатури під час завантаження системи. Інший приклад: коли користуєтеся консольним текстовим редактором, ви можете прокручувати дисплей назад (включаючи кольори), користуючись буфером прокручування. Але те, що робить редактор, ніколи не потрапить до жодного системного протоколу. Причина, зрозуміло, у тому, що ні "loadkeys", ні "consolechars", ні редактор не належать до жодного з 8 "засобів".

Чи можна змінити ситуацію? Звичайно - "просто" переробте та перекомпілюйте ті програми, які ви хочете протоколювати. Допишіть або перепишіть завантажувальні скрипти. Або змусіть систему фіксувати повідомлення ззовні 8 системних засобів.

Тримаю парі, що ви не станете цим займатися. І навіть знаю вашу ймовірну відповідь:
- "З моїх ліг нічого не пропадає". Так Так звичайно...

Якщо вам сподобалася стаття, поділіться нею із друзями:

161 Jane Doh

Я розумію, що Up/Down дасть вам історію команд. Але як ви дивитеся на попередні результати, прокручуючи вгору і вниз?

Я використовував Shift + Page Up / Page Down, Alt + Shift + Up / Down і Page Up / Page Down, але, схоже, нічого з цього не працює.

Це Redhat Linux box.

linux terminal rhel

14 відповідей

SHIFT + Page Up та SHIFT + Page Down . Якщо це не спрацює, спробуйте це, а потім воно має:

Зайдіть у програму терміналу та переконайтеся, що Edit/Profile Preferences/Scrolling/Scrollback/Unlimited
перевіряється.

Точне розташування цієї опції може бути десь іншим, але я бачу, що ви використовуєте Redhat.

SHIFT + Page Up та SHIFT + Page Down є правильними ключами для роботи на віртуальній консолі, але консоль vmware не має цих налаштувань терміналу. Віртуальна консоль має фіксований розмір прокручування назад, схоже, що вона обмежена розміром відеопам'яті відповідно до цієї віртуальної консолі Linux Документація прокручування.

АЛЬТЕРНАТИВА ДЛЯ ОБРОБКИ ЛІНІЇ-ЛІНІЇ

Ctrl+Shift+Up Arrow або Down Arrow

На відміну від Shift + Page Up або Page Down, який прокручує всю сторінку, це допоможе з плавним лінійним прокручуванням, що саме те, що я шукав.

Ще одна альтернатива, яка може бути вже встановлена ​​у вашій системі, - використовувати екран GNU:

# Цей starts screen which adds basic window management in terminals screen # Цей starts the copy mode you can use to scroll [ # Now use the arrows to scroll # To exit copy mode, do

Перегляньте man-екран для більш корисних параметрів (кілька вікон,...)...

Здається, що це не можливо: Arch Linux Wiki не перераховує способів зробити це на консолі (хоча це легко можливо на віртуальному терміналі).

Ctrl - b , потім [ , потім можна використовувати звичайні навігаційні клавіші для прокручування (наприклад, Up Arrow або PgDn). Натисніть q , щоб вийти з режиму прокручування.

© 2022 androidas.ru - Все про Android