Давним-давно такі слова як “hot keys” та “keyboard shortcuts” мені не завжди вдавалося перекласти на російську без втрати обличчя. Якось, я написавши “клавіатурні скорочення”, чим одразу ж привернувши косі погляди й викликавши сміливі медичні фантазії… Але ніби зараз заведено говорити та писати “гарячі клавіші”. Про них і поговоримо.
Ця нотатка – шпаргалка по Лінуксові оболонці Bash та суміжним компонентам. Частина команд, що наводяться нижче, належати до бібліотеки Readline, частина — до сигналів Linux, проте такі подробиці нам тут не важливі. Якщо вам доводиться часто мати справу з терміналом в Linux (і ви не змінювали Bash на інший шелл), то буде корисно використовувати ці скорочення на благо собі. Текст написань для користувачів-початківців, але хто знає — може й ви знайдете в ньому щось нове та корисне для себе.
Для зручності будемо вважати, що за умовчанням під терміналом ми розуміємо стандартну в настільній редакції Ubuntu програму “Термінал Gnome”.
Вкладки
У програмі “Термінал Gnome” передбачені вкладки, які працюють аналогічно вкладкам у веббраузер або файловому менеджері. Іншими словами, якщо вам потрібно кілька терміналів, зовсім не обов’язково відчиняти кілька вікон. Достатньо одного вікна з кількома вкладками. Нижче наведені гарячі клавіші, що належать до вкладок:
Ctrl+Shift+T – відкрити нову вкладку;
Ctrl+Shift+W або Ctrl+D — закрити поточну вкладку (або весь термінал, якщо вкладка одна);
Ctrl+Shift+N – відкрити нове вікно термінала з поточного.
Згодом ви можете опинитися у ситуації, коли вкладок стане справді багато, і тоді виникне питання навігації між ними. Вам потрібні такі клавіші:
Ctrl+PgDn — перейти на наступну (праворуч) вкладку;
Ctrl+PgDn – перейти на попередню (ліворуч) вкладку;
Ctrl+Shift+PgDn — зсунути вкладку справа;
Ctrl+Shift+PgUp — Зсунути вкладку вліво.
Alt+1 — Перейти до першої вкладки. Підставте іншу цифру для потрібної вкладки. Цей спосіб дозволяє «дотягнутися» максимум до десятої вкладки.
Навігація
Три комбінації, що дуже часто використовуються, для копіювання та вставки тексту, а також скасування команди, що виконується:
Ctrl+Shift+С — копіювання у буфер обміну;
Ctrl+Shift+V – вставка з буфера обміну;
Ctrl+C — переривання виконуваної команди або очищення потокового рядка.
Щоб виділити потрібний текст у терміналі, вам потрібно скористатися мишею. Проте, у програмі “Термінал Gnome” є вбудований засіб пошуку тексту, який дозволяє шукати як за звичайним фрагментом, так і за регулярним виразом:
Ctrl+Shift+F — виклик вбудованого пошуку за будь-яким текстом у терміналі.
Якщо команда в терміналі занадто довга, або ви зробили друкарську помилку на початку і не відразу це помітили, ви можете повернутися в початок рядка. А потім знову до кінця. Ось як це зробити:
Ctrl+A – переміститися на початок рядка;
Ctrl+E — Перемістити до кінця рядка.
У терміналі Linux можна переміщатися всередині рядка також за словами й окремими символами (в останньому випадку, це аналогічно використанню клавіш з бічними стрілками):
Ctrl+F – переміститися на 1 символ уперед;
Ctrl+B – переміститись на 1 символ назад;
Alt+F – переміститися до наступного слова;
Alt+B — Перейти до початку попереднього слова.
Управління командами та процесами
Попередні команди стосувалися навігації по терміналу та рядком введення команди. Далі варто розглянути команди що керують Bash, за допомогою яких можна запускати, зупиняти, ставити на паузу та відновлювати команди та процеси. Ви вже знаєте, що запущений у терміналі процес можна перервати за Ctrl+C, але корисно також знати деякі нюанси.
У терміналі Linux ви можете не лише завершувати програми повністю, а й ставити їх на паузу. Потім виконання програми можна відновлювати, причому, як з поверненням інтерактивної командного рядка, так і без неї:
Ctrl+Z – призупинення процесу;
команда bg – відновлення процесу із поверненням командного рядка (процес продовжує виконання у фоні);
команда fg — відновлення процесу, в якому він утримує командний рядок в собі (процес виконується на передньому плані).
Процеси також можна припиняти та відновлювати. Запустіть будь-яку команду, наприклад htop
, і натисніть Ctrl+Z. Спершу буде здаватися, що команда завершилася, але вона буде знаходитись у списку запущених процесів (ps -a
) і з’явиться знову після введення команди fg.
Якщо повторити експеримент із графічним додатком, наприклад, ввівши команду firefox
, то можна буде використовувати для його пожвавлення як fg
, так і bg
. За будь-якого варіанту додаток залишиться закріпленим за потоковим терміналом: якщо ви закриєте його, воно також завершиться.
Після припинення процесу firefox у терміналі робоче середовище Gnome вважатиме, що програма «не відповідає».
Існує й інший тип «призупинення»: тимчасове припинення виведення виконуваної команди. Як консольний, так і графічний додаток може бути запущений у терміналі, в який буде виводитись поточна діагностична інформація. Іноді буває дуже зручно тимчасово припинити постійне виведення повідомлень без завершення програми. Для цього знадобляться такі клавіші:
Ctrl+S – припинити оновлення виводу команди;
Ctrl+Q – відновити виведення команди.
Історія команд
Bash вміє запам’ятовувати усі введені вами команди. Поки термінал запущено, вони зберігаються в оперативній пам’яті комп’ютера, а при виході з термінала записуються у довгострокове сховище у файлі ~/.bash_history
.
Якщо ви знаєте, що вводили потрібну вам команду раніше, пошукайте її в історії:
Вивести історію команд;
history
Якщо ви пригадуєте хоча б частину команди, пошук можна уточнити:
Приклад уточнювального пошуку з історії команд.
history | grep <частина команди>
Кожна команда в історії має номер. Введіть цей номер, поставивши спочатку оклик, і Bash виконає відповідну команду:
!151
– виконати команду під номером 151 з історії;
!151:
– показати команду номер 151, але не виконувати її;
!!
– повторно виконати останню команду.
Bash має інтерактивний режим пошуку з історії команд. Натисніть Ctrl+R та почніть набирати частину команди. Bash сам запропонує вам перший варіант. Якщо він не підходить, натискайте Ctrl+R, щоб вибрати варіанти. Коли потрібний варіант буде знайдено, натисніть клавішу Enter.
Цікаво, що ця клавіша введення має два аналоги – замість Enter можна натиснути Ctrl+M або Ctrl+J.
Найпростіший спосіб пересуватися по історії команд – стрілки “вгору” та “вниз” на клавіатурі. Вони теж мають дублікати:
Ctrl+P – вивести попередню команду;
Ctrl+N – вивести наступну команду.
Редагування команд
Саме час розглянути засоби редагування команд – вони у Bash дуже просунуті. Зручне переміщення на початок і кінець рядка, вибіркове видалення символів та слів – це лише частина можливостей, які можуть стати в пригоді користувачеві. За редагування команд відповідають такі комбінації клавіш:
Ctrl+U – видалити весь текст ліворуч від курсора;
Ctrl+K – видалити весь текст праворуч від курсора;
Ctrl+W – видалити 1 слово або параметр ліворуч від курсора;
Ctrl+D – видалення поточного символу (аналогічно Del);
Ctrl+H – видалення попереднього символу (аналогічно Backspace);
Alt+D — видалити праворуч від курсора до найближчого пробілу;
Alt+Backspace – видалити всі зліва від курсора до найближчого пробілу;
Alt+T – змінити місцями потокове слово з попереднім;
Esc+T — поміняти місцями два попередні слова;
Tab – Автодоповнення команди після введення її перших символів.
Ще одна цікава деталь: Bash має власний буфер обміну, який працює незалежно від стандартного буфера (як ми пам’ятаємо, копіювання за Ctrl+Shift+C, вставка за Ctrl+Shift+V). Це важливо, оскільки перші три команди з попереднього списку мають додаткові функції: вони не просто видаляють частину тексту, а копіюють його в окремий буфер обміну Bash. Тому буде справедливо уточнити:
Ctrl+U — вирізати та помістити у буфер обміну весь текст ліворуч від курсора;
Ctrl+K — вирізати та помістити у буфер обміну весь текст праворуч від курсора;
Ctrl+W – вирізати та помістити у буфер обміну 1 слово або параметр зліва від курсора;
До речі, для вставки скопійованого тексту спрацює комбінація Ctrl+Y.
Насамкінець
Звичайно, вище я описав не всі гарячі клавіші: їх набагато більше, і повний опис містив би купу бородатої екзотики, успадкованої з давніх університетських годин UNIX. У будь-якому випадку, не забувайте про man bash
(наприклад, там є чудовий розділ Commands for Moving) та про bind -P
.
Якщо помітили помилки чи неточності, будь ласка, залишіть коментар чи напишіть листа на поштову адресу [email protected]