Why does ^C, ^V и т.д. appear in the терминал when I использовал the Ctrl+character keyboard shortcut?

Sometimes, when copy-pasting text from the output of commands, гll accidently использовал Ctrl+c instead of Ctrl+Shift+c.

So the command-line interprets it схвати ^C...

Why is this? Why does the command-line interpret контроль неудар в лунку схвати ^?

26
задан 1 December 2015 в 07:22

4 ответа

Он фактически не вставляет последовательность символов "^ C". Это только представление для непечатаемых управляющих символов ASCII, таких как:

  • ^C & rarr; ETX (конец текста, посылает сигнал уничтожения), ASCII 0x03
  • ^D & rarr; EOT (конец передачи, ввод прекращается), ASCII 0x04
  • ^H & rarr; BS (Backspace, \b), ASCII 0x08
  • ^J & rarr; LF (перевод строки, \n), ASCII 0x0A
  • ^L & rarr; FF (подача формы, новая страница, очищает терминал), ASCII 0x0C
  • ^M & rarr; CR (возврат каретки, \r), ASCII 0x0D

Это лишь небольшая часть возможных символов управления ASCII, которые можно вставить с помощью клавиатуры; Вы можете найти полный список здесь .

Я думаю, что наиболее важными из них являются Ctrl + C , Ctrl + D и CTRL + L .

35
ответ дан 23 November 2019 в 01:08

Поскольку CTRL + КЛЮЧ комбинации интерпретируются терминалом как непечатаемые символы ASCII, и являющийся непечатаемыми, Вам нужен способ представить их.

конвенция, происходя от терминалы VT с поддержкой ANSI , состоит в том, чтобы представить CTRL + КЛЮЧ комбинация, представляющая CTRL с каре (^) и КЛЮЧОМ с КЛЮЧОМ .

8
ответ дан 23 November 2019 в 01:08

При копировании и вставке в терминал, это - наиболее успешная практика для использования коротких путей , Ctrl + Вставляют и , Сдвиг + Вставляет соответственно.

Это более традиционные короткие пути для терминального использования, хотя Вы отметите, что в X графических средах Ctrl + Вставляют и , Сдвиг + Вставляет , связываются с тем же Ctrl + C и Ctrl + V .

В большинстве терминалов Ctrl + C (представленный ^C) используются для остановки выполнения процесса, следовательно вставляющий с тем коротким путем не будет работать.

Для быстрого копирования и вставки, можно использовать X основной буфер путем выделения любого текста, который Вы хотите скопировать, и затем щелчок средней кнопкой, где Вы хотите вставить его. Никакая клавиатура не требуется.

5
ответ дан 23 November 2019 в 01:08

Вы должны использовать Ctrl + C и не Сдвиг + Ctrl + C , потому что на командной строке, они делают то же самое (и Ctrl + C легче, чем Сдвиг + Ctrl + C ). Это не могло бы быть верно в определенных графических средах, где GUI получает некоторые нажатия клавиш и делает что-то специальное, но если нажатия клавиш действительно отправляются в командную строку, то нет никакого различия. Поэтому, нажимая Ctrl + C может показать ^C капиталом C вместо нижнего регистра C. Командная строка не делает различия, на котором Вы нажали (и верхний регистр, как по-видимому, оценивалось, было легче считать). Это верно для букв; для других символов Сдвиг может иметь эффект.)

Нажатие Ctrl - C отправляет код ASCII, который является 64 ниже положения прописной буквы в таблице ASCII (и 96 меньше, чем положение строчной буквы в таблице ASCII). Так нажатие Ctrl - c (нижний регистр) отправляет код ASCII 3 (который составляет 64 меньше, чем капитал C код ASCII 67). Во многих средах можно держать Высокий звук и затем нажать 3 на цифровой клавиатуре (и затем отпустить клавишу 3 и затем выпустить Высокий звук ключ), и можно получить тот же эффект.

Относительно ^C, ^ является просто известным сокращением от" Ctrl " ключ. Точно так же M-является сокращением от" Высокий звук " ключ. Допустите ошибку, да. M обозначает слово "Meta", которое может быть введено путем содержания Высокого звука и нажатия того независимо от того, что прибывает затем, или иногда путем нажатия Esc (и выпуска Esc ) и затем нажатия того независимо от того, что прибывает затем. статья Википедии о "Клавише CTRL": раздел "Notation" описывает это как "Традиционную нотацию". Это также известно как Нотация Каре ( статья Википедии о нотации , Unix StackExchange Каре: вопрос ryvnf о Нотации Каре).

Относительно последнего вопроса, командный процессор не "интерпретирует" ничего, чтобы быть каре. Другими словами, оболочка ничего не читает и полагает, что это - каре. То, что происходит, - то, что оболочка использует известную нотацию каре для вывода. Как другой пример, Вы видите известный пейджер, "меньше", нотацию каре использования путем выполнения: dd if=/dev/zero bs=64 count=1 | less

("Нано" текстовый редактор также использует нотацию каре в своей справке онлайн, включая полные экраны справки онлайн, показанной после нажатия ^G, иначе Ctrl - g .)

-2
ответ дан 23 November 2019 в 01:08

Другие вопросы по тегам:

Похожие вопросы: