是什么导致终端中的复制/粘贴有时执行命令?

课程

在终端中粘贴某些命令时,有时会自动执行该命令(就像按下“ Enter”键一样),有时则不会。

我使用Linux已有很长时间了,在许多发行版的各种控制台中都粘贴了数千条命令,但我仍然无法确定我要粘贴的命令是否会自动执行。

是什么触发了这种行为?

智商安德烈亚斯

正是您要复制的文本中的返回字符触发了自动执行。

让我们举一个不同的例子,一次复制所有这些行并将它们粘贴到您的终端中:

echo "Hello";
echo "World";

如果您在终端中查看,您将不会看到以下内容:

$ echo "Hello";
echo "World";

您会看到以下内容(可能还会有一行显示World):

$ echo "Hello";
Hello
$ echo "World";

第一行不是等待所有输入被粘贴,而是执行(并且出于相同的原因,第二行可能也可能不这样做)。这是因为RETURN两行之间有一个字符。

当您按下ENTER键盘上的键时,您要做的就是发送ASCII值为的字符13您的终端会立即检测到该字符,并且知道该字符具有执行到目前为止输入内容的特殊说明。

当存储在计算机上或打印在屏幕上时,该RETURN字符与字母,数字或符号的任何其他字母一样。可以像其他常规字符一样,使用退格键将该字符删除或将其复制到剪贴板。

唯一的区别是,当您的浏览器看到该字符时,它知道与其打印可见的字符,还不打印一个可见的字符,并且具有特殊的说明将下一组文本下移到下一行。由于这个原因,RETURN字符和SPACE字符(ascii 32)以及其他一些很少使用的字符被称为“非打印字符”。

有时,当您从网站上复制文本时,仅复制文本而不复制末尾的内容是很困难的(并且页面样式常常使复制变得更加困难)。


实验时间!

在下面,您将找到两个可以说明问题的命令,您可以对其进行“练习”。在光标之前向右开始echo拖动,直到高亮显示在箭头正前方:

echo "Wait for my signal...";<- End cursor here right after the semicolon

现在尝试第二个命令。在光标之前echo先开始光标,然后向下拖动直到光标在第二行上,但就在<-箭头的前面复制它,然后将其粘贴到您的终端中:

echo 'Go go go!';
<- End cursor here right before the arrow

根据您的浏览器,选择的文本可能超过两行,甚至看不到。但是,当您将其粘贴到终端中时,您会发现它执行了该行,因为它RETURN在复制的文本中找到了一个字符。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在终端中执行命令后,有时我无法执行其他命令

在VBA中复制粘贴数据的“正确”方法是什么?

在从文件复制粘贴和执行命令之前,在命令行中一一创建要使用的路径

创建新的宏(快捷方式)以在集成终端中复制粘贴并执行代码

复制粘贴到终端?

无法在macOS终端中执行命令,为什么?

在终端启动(macOS)时执行命令

打开终端时自动执行命令

!是什么意思!在Shell中执行命令之前?

没有终端输出的执行命令

执行复制粘贴时搜索栏不起作用

终端中的Python脚本执行命令

从Netlogo在终端中执行命令

无法在Android Studio中执行复制粘贴

是什么导致此Python代码有时失败?

打开新终端并在此新终端上执行命令给定集合的命令结构是什么?

粘贴命令时停止终端自动执行

终端重新启动时在特定的终端选项卡中执行命令

Vim跨终端复制粘贴

如何防止用户在复制粘贴操作时立即将带有无效字符的文本复制粘贴到输入文本字段中?

确实,批处理文件有时需要中断才能正确执行命令吗?

Windows之间的gVim复制粘贴有什么问题?

#include和复制粘贴之间有什么区别?

在zsh中复制粘贴

复制粘贴的图像存储在 Jupyter Notebook 中的什么位置?

在InteliJ中复制粘贴时如何导入类?

在VSCode IDE中打开新的集成终端时自动执行命令

执行命令时如何隐藏终端输出?

在sudo提示输入密码时,将复制粘贴输入锁定到终端