有时,当从命令输出中复制粘贴文本时,我会意外地使用Ctrl+c而不是Ctrl+ Shift+ c。
因此命令行将其解释为^C
......
这是为什么?为什么命令行将输入解释control为^
?
答案1
它实际上并没有插入字符序列“^C”。这只是不可打印的 ASCII 控制字符的表示,例如:
^C
→ ETX(文本结束,发送终止信号),ASCII 0x03^D
→ EOT(传输结束,终止输入),ASCII 0x04^H
→ BS (退格键,\b
), ASCII 0x08^J
→ LF(换行,\n
),ASCII 0x0A^L
→ FF(换页,新页面,清除终端),ASCII 0x0C^M
→ CR(回车符\r
),ASCII 0x0D
这只是可以使用键盘插入的 ASCII 控制字符的一小部分;您可以找到完整列表这里。
我认为需要记住的最重要的是Ctrl+ C、Ctrl+D和Ctrl+ L。
答案2
因为CTRL+KEY组合被终端解释为不可打印的 ASCII 字符,而由于这些不可打印的字符,您需要一种方法来表示它们。
该公约源于具有 ANSI 支持的 VT 终端,是用插入符号 ( ) 和来表示CTRL+KEY组合。CTRL^
KEYKEY
答案3
当从终端复制和粘贴时,最佳做法是分别使用快捷方式Ctrl+Insert和Shift+ Insert。
这些是终端使用的更传统的快捷方式,但您会注意到在 X 图形环境中Ctrl+Insert和Shift+与相同的+和+Insert绑定。CtrlCCtrlV
在大多数终端中,Ctrl+ C(用 表示^C
)用于暂停某个进程的执行,因此使用该快捷方式粘贴将不起作用。
为了快速复制和粘贴,您可以利用 X 的主缓冲区,突出显示要复制的任何文本,然后在要粘贴的位置单击鼠标中键。无需键盘。
答案4
你应该使用Ctrl+C而不是Shift+ Ctrl+ C,因为在命令行上,它们的作用相同(并且Ctrl+C比Shift+ Ctrl+更容易C)。在某些图形环境中,GUI 会捕获某些击键并执行一些特殊操作,但这可能并非如此,但如果击键确实发送到命令行,则没有区别。这就是为什么按Ctrl+C可能会将 ^C 显示为大写 C,而不是小写 C。命令行不会区分您按的是哪个(并且大写字母可能被认为更容易阅读)。对于字母来说确实如此;对于其他字符,可能Shift会有影响。)
按Ctrl-C键会发送比大写字母在 ASCII 表中的位置低 64 个字符的 ASCII 代码(比小写字母在 ASCII 表中的位置低 96 个字符)。因此,按Ctrl- c(小写)键会发送 ASCII 代码 3(比大写字母C的 ASCII 代码 67 小 64 个字符)。在许多环境中,您可以按住数字键盘Alt然后按下3(然后松开该3键,再松开该Alt键),您可能会得到相同的效果。
关于 ^C,^ 只是“ ”键的众所周知的简写Ctrl。同样,M- 是“ ”键的简写Alt。呃,是的。M 代表单词“Meta”,可以通过按住Alt并按下接下来的键来输入,或者有时通过按下Esc(并释放Esc)然后按下接下来的键来输入。 维基百科关于“控制键”的文章:“符号”部分将其描述为“传统符号”。这也称为插入符号(维基百科关于插入符号的文章,Unix StackExchange:ryvnf 关于插入符号的问题)。
关于最后一个问题,命令 shell 不会将任何东西“解释”为插入符号。换句话说,shell 不会读取任何东西,并认为它是插入符号。实际发生的情况是,shell 使用众所周知的插入符号表示法进行输出。再举一个例子,您可以通过运行以下命令查看众所周知的分页程序“less”使用插入符号表示法:dd if=/dev/zero bs=64 count=1 | less
Ctrl(“nano”文本编辑器还在其在线帮助中使用插入符号,包括按下 ^G(又名- )后显示的全屏在线帮助g。)