Answers:
正是您要复制的文本中的返回字符触发了自动执行。
让我们举一个不同的例子,一次复制所有这些行并将它们粘贴到您的终端中:
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
在复制的文本中找到了一个字符。
其他答案已经很好地回答了这个问题,但是我想我也将分享一个解决方案,以防止如果您在Windows上使用PuTTY时意外发生-请参阅/server/731022/prevent-accidental有关在Linux中粘贴文本的命令的执行的详细信息,请参阅。
{
在粘贴之前输入(带空格),然后以结束}
。它对粘贴命令的工作没有影响,但是会阻止shell在关闭该块之前执行它。在此处描述[ gnu.org/software/bash/manual/html_node/Command-Grouping.html]