Вместо того, чтобы изменять точку ввода и т. д., вы можете создать псевдо--терминал (PTY)и перенаправить ввод и вывод через него, чтобы программа не знала об этом. что что-то изменилось :на самом деле, есть несколько программ, которые делают именно то, что (часто называюттерминальными мультиплексорами.)
Как вы, вероятно, знаете, вы можете отключиться от сеанса на одном терминале и снова подключиться к нему где-то еще, используя мультиплексор, такой как tmux
, но вы также можете в любое время настроить передачу стандартного ввода или вывода. Например, если у меня есть оболочка, работающая внутри панели tmux
, и я отправлю команду pipe-pane 'cat >>~/test.txt'
(, взятую из справочной страницы ), на tmux
, стандартный вывод теперь будет добавлен к ~/test.txt
без изменения что-нибудь внутри панели сеанса.
Продолжая упоминание Жилем о переписке:
The correspondence is that the numeric code of the control character is the numeric code of the printable character (letter or punctuation symbol) minus 64, which corresponds to setting a bit to 0 in base 2.
Вы можете увидеть это вascii(7)
. Посмотрите на восьмеричные числа:
Oct Dec Hex Char Oct Dec Hex Char
────────────────────────────────────────────────────────────────────────
000 0 00 NUL '\0' (null character) 100 64 40 @
001 1 01 SOH (start of heading) 101 65 41 A
002 2 02 STX (start of text) 102 66 42 B
003 3 03 ETX (end of text) 103 67 43 C
004 4 04 EOT (end of transmission) 104 68 44 D
005 5 05 ENQ (enquiry) 105 69 45 E
006 6 06 ACK (acknowledge) 106 70 46 F
007 7 07 BEL '\a' (bell) 107 71 47 G
010 8 08 BS '\b' (backspace) 110 72 48 H
011 9 09 HT '\t' (horizontal tab) 111 73 49 I
012 10 0A LF '\n' (new line) 112 74 4A J
013 11 0B VT '\v' (vertical tab) 113 75 4B K
014 12 0C FF '\f' (form feed) 114 76 4C L
015 13 0D CR '\r' (carriage ret) 115 77 4D M
016 14 0E SO (shift out) 116 78 4E N
017 15 0F SI (shift in) 117 79 4F O
020 16 10 DLE (data link escape) 120 80 50 P
021 17 11 DC1 (device control 1) 121 81 51 Q
022 18 12 DC2 (device control 2) 122 82 52 R
023 19 13 DC3 (device control 3) 123 83 53 S
024 20 14 DC4 (device control 4) 124 84 54 T
025 21 15 NAK (negative ack.) 125 85 55 U
026 22 16 SYN (synchronous idle) 126 86 56 V
027 23 17 ETB (end of trans. blk) 127 87 57 W
030 24 18 CAN (cancel) 130 88 58 X
031 25 19 EM (end of medium) 131 89 59 Y
032 26 1A SUB (substitute) 132 90 5A Z
033 27 1B ESC (escape) 133 91 5B [
034 28 1C FS (file separator) 134 92 5C \ '\\'
035 29 1D GS (group separator) 135 93 5D ]
036 30 1E RS (record separator) 136 94 5E ^
037 31 1F US (unit separator) 137 95 5F _
...
077 63 3F ? 177 127 7F DEL
Авторские права и лицензия на таблицу.
^H
соответствует символу возврата, ^M
возврату каретки, ^J
новой строке, ^I
табуляции, ^[
экрану и т. д.
Символ ^ обозначает клавишу управления. ^[ производит ESCAPE или ASCII 27. Заглавные буквы в этом контексте обычно не имеют значения, и ^A означает то же, что и ^a, а именно клавишу управления, нажатую одновременно с клавишей «a».
^[^@ означает ESCAPE, за которым следует Control -@ (в зависимости от раскладки клавиатуры, вам может потребоваться одновременно нажать Shift или Alt -Gr, чтобы произвести "@" ).
^X^[q означает управление -x, за которым следует ESCAPE, за которым следует q.
^[[1;5C означает ESCAPE, за которым следует строка символов «[1;5C». Для меня это выглядит как последовательность управления терминалом, которая изменяет свойства текста, такие как цвет, жирность, курсив и так далее.
Я не знаю, стандартизировано ли использование ^ для обозначения клавиши управления, но это описано на странице Википедии . Создание ASCII 27 путем ввода ^[, вероятно, было впервые введено терминалами DEC, такими как VT100, и к настоящему времени может стать стандартом.