Іноді, коли копіюємо вставлення тексту з виводу команд, я випадково використовую Ctrl+ cзамість Ctrl+ Shift+ c.
Тож командний рядок трактує це як ^C...
Чому це? Чому командний рядок інтерпретує controlвведення як ^?
Іноді, коли копіюємо вставлення тексту з виводу команд, я випадково використовую Ctrl+ cзамість Ctrl+ Shift+ c.
Тож командний рядок трактує це як ^C...
Чому це? Чому командний рядок інтерпретує controlвведення як ^?
Відповіді:
Він фактично не вставляє символьну послідовність "^ C". Це лише представлення для недрукованих символів управління ASCII, таких як:
^C → ETX (Кінець тексту, надсилає сигнал вбивства), ASCII 0x03^D → EOT (Кінець передачі, завершує вхід), ASCII 0x04^H→ BS (Backspace, \b), ASCII 0x08^J→ LF (Line feed, \n), ASCII 0x0A^L → FF (Форма подачі, нова сторінка, очищає термінал), ASCII 0x0C^M→ CR (повернення каретки, \r), ASCII 0x0DЦе лише невеликий витяг можливих символів управління ASCII, який можна вставити за допомогою клавіатури; повний список ви можете знайти тут .
Я думаю, що найважливіші з них пам’ятати - Ctrl+ C, Ctrl+ Dі Ctrl+ L.
Оскільки комбо CTRL+ KEYінтерпретується терміналом як недруковані символи ASCII, і будучи тими, що не друкуються, потрібен спосіб їх представлення.
Конвенція, що випливає з терміналів VT з підтримкою ANSI , полягає у зображенні комбінації CTRL+, що KEYпредставляє CTRLз caret ( ^) та KEYз KEY.
Під час копіювання та вставки в термінал найкраще використовувати ярлики Ctrl+ Insertта Shift+ Insertвідповідно.
Це більш традиційні скорочення для використання терміналів, хоча ви зауважте, що в графічному середовищі X Ctrl+ Insertі Shift+ Insertприв’язані до того самого Ctrl+ Cі Ctrl+ V.
У більшості терміналів Ctrl+ C(представлені символом ^C) використовуються для зупинки виконання процесу, отже, вставлення з цим ярликом не працюватиме.
Для швидкого копіювання та вставлення ви можете використовувати основний буфер X, виділяючи текст, який ви хочете скопіювати, а потім клацніть середнім клавішею, куди потрібно вставити його. Клавіатура не потрібна.
^Cабо подібні з’являються при натисканні CTRL + C (або CTRL + інша літера). Справа не в тому, як правильно скопіювати та вставити речі в термінал, на що ваша відповідь була б чудовою.
Вам слід використовувати Ctrl+, Cа не Shift+ Ctrl+ C, оскільки в командному рядку вони роблять те саме (і Ctrl+ Cпростіше, ніж Shift+ Ctrl+ C). Це може бути неправдою в певних графічних середовищах, коли графічний інтерфейс фіксує деякі натискання клавіш і робить щось особливе, але якщо натискання клавіш справді відправляються в командний рядок, то різниці немає. Ось чому натискання кнопки Ctrl+ Cможе показувати ^ C як велику літеру, замість малій літери C. Командний рядок не відрізняє, за яким натисканням ви натискали (а великі регістри, мабуть, вважаються легшими для читання). Це стосується листів; для інших символів це Shiftможе мати ефект.)
Натискання Ctrl- Cнадсилає код ASCII, який знаходиться на 64 нижче позиції великої літери в таблиці ASCII (і на 96 менше, ніж позиції малої літери в таблиці ASCII). Тож натискання Ctrl- c(малі літери) надсилає код ASCII 3 (що на 64 менше, ніж капітальний Cкод ASCII 67). У багатьох середовищах ви можете утримувати Altта натискати 3на цифровій клавіатурі (а потім відпустити 3клавішу, а потім відпустити Altклавішу), і ви можете отримати той же ефект.
Щодо ^ C, ^ - це просто відома стенограма для Ctrlклавіші " ". Аналогічно, M- - це скорочення для Altклавіші " ". Помилка, так. M означає слово "Meta", яке можна ввести, утримуючи Altі натискаючи все, що йде далі, або іноді, натискаючи Esc(і відпускаючи Esc), а потім натискаючи все, що йде далі. Стаття Вікіпедії про "Контрольний ключ": розділ "Позначення" описує це як "Традиційне позначення". Це також відоме під назвою Caret Notation ( стаття Вікіпедії про позначення карет , Unix StackExchange: питання ryvnf про нотатку карет ).
Щодо останнього питання, командна оболонка не "інтерпретує" нічого, щоб бути каретою. Іншими словами, шкаралупа нічого не читає і вважає, що це карета. Що відбувається, це те, що оболонка використовує відомі позначення карет для виведення. Як інший приклад, ви можете бачити відомий пейджер "менше", використовуючи позначення карет, запустивши:dd if=/dev/zero bs=64 count=1 | less
(Текстовий редактор "nano" також використовує позначення карет у своїй онлайн-довідці, включаючи повні екрани онлайн-довідки, показані після натискання ^ G, ака Ctrl- g.)
^як символу для "керування" датується ще до графічних часів, коли термінали були лише текстовими, і я вважаю, ще до того, коли у нас були картки та папір, терміналів немає. Мені б хотілося дізнатись, чому символом було обрано каре.