Ctrl + 4 надсилає ^ \
Термінали надсилають символи (а точніше байти), а не ключі. Коли натискається клавіша, яка представляє символ для друку, термінал надсилає цього символу додатку. Більшість функціональних клавіш кодуються як послідовності втечі: послідовності символів, що починаються з символьної цифри 27. Деякі клавіатури форми Ctrl+ characterта кілька функціональних клавіш надсилаються як контрольні символи - в набір символів ASCII , який використовуються всі сучасні комп'ютери використовувати як основу (Unicode, ISO Latin- nі т. д. - це всі супернабори ASCII), 33 символи - це контрольні символи: символи від 0 до 31 та 127. Контрольні символи не друкуються, але призначені для ефекту в програмах; наприклад, символ 10, який є Control-J (зазвичай пишеться ^ J), є символом нового рядка, тому коли термінал відображає цей символ, він переміщує курсор до наступного рядка, а не відображає гліф. Сам символ втечі є керуючим символом, ^ [(значення 27).
Не вистачає символів управління, щоб охопити всі клавіатури Ctrl+ character. Лише букви та символи @[\]^_?
мають відповідний контрольний символ. Коли ви натискаєте Ctrl+ 4або Ctrl+ $(я вважаю, що це Ctrl+ Shift+ 4), термінал повинен вибрати щось для надсилання. Залежно від терміналу та його конфігурації, існує кілька загальних можливостей:
- Термінал ігнорує Ctrlмодифікатор і надсилає символ
4
або $
.
- Термінал надсилає послідовність виходу, що кодує точну клавішу та модифікатори, які були натиснуті.
- Термінал посилає якийсь інший керуючий символ.
Багато терміналів надсилають контрольні символи для деяких клавіш у цифровому рядку:
- Ctrl+ 2→ ^ @
- Ctrl+ 3→ ^ [
- Ctrl+ 4→ ^ \
- Ctrl+ 5→ ^]
- Ctrl+ 6→ ^^
- Ctrl+ 7→ ^ _
- Ctrl+ 8→ ^?
Я не знаю, де виникла ця конкретна конвенція.
Ctrl+ |надсилає той самий символ, тому що це Ctrl+ Shift+, \а термінал надсилає ^ \, натиснули чи ні клавішу зсуву.
^ \ виходить
Сам термінал (точніше, підтримка загального терміналу в ядрі) спеціально інтерпретує кілька контрольних символів. Ця інтерпретація може бути налаштована для відображення різних символів або відключена програмами, які хочуть обробити символів самостійно. Одне відоме таке тлумачення полягає в тому, що ^ M, символ, що надсилається Returnключем, посилає поточну лінію в додаток, якщо термінал знаходиться в приготовленому режимі , в якому програми отримують введення рядок за рядком.
Кілька символів передають сигнали програмі на перший план. ^ C посилає сигнал переривання (SIGINT), який умовно повідомляє програмі припинити, що вона робить, і прочитати наступну команду користувача. Неінтерактивні програми зазвичай виходять. ^ \ посилає сигнал виходу (SIGQUIT), який умовно повідомляє програмі якнайшвидше вийти, нічого не зберігаючи; багато програм не змінюють поведінку за замовчуванням, а це вбити програму негайно¹. Отже, коли ви натискаєте Ctrl+ 4(або що-небудь, що надсилає ^ \ символ) у cat
або bc
, жодне з яких не перекриває поведінку за замовчуванням, програма вбивається.
Сам термінал друкує ^\
частину повідомлення: це візуальне зображення символу, який ви ввели, а термінал знаходиться в приготовленому режимі та з увімкненим відлунням (символи відображаються терміналом, як тільки ви їх набираєте, на відміну від неехо-режим, коли символи надсилаються лише програмі, яка може або не захоче їх відображати). Quit
Частина приходить з Баша: він зауважує , що процес його дитина померла від виходу сигналу, і це її спосіб дати вам знати.
Оболонки обробляють усі загальні сигнали, так що якщо ви введете ^ \ в оболонку, ви не вб'єте сеанс, ви просто отримаєте нове підказку, таке ж, як ^ C.
Ви можете грати з налаштуваннями терміналу за допомогою stty
команди.
¹ І традиційно генерують основний дамп , але сьогодні багато систем відключають це за замовчуванням.