三击选择文本和鼠标选择并将单词复制到终端之间的区别

三击选择文本和鼠标选择并将单词复制到终端之间的区别

我注意到当我三击(使用鼠标)从网站中选择文本(或命令),然后使用Ctrl+ Alt+将其粘贴到我的终端中v,然后使用命令运行立即(即它自动输入Enter密钥),但如果我选择(使用鼠标)和复制相同的命令并使用Ctrl++将其粘贴到终端中Altv它不会自动运行代码,而只是粘贴并等待输入在代码运行之前请先从我这里获取。

哪种机制可以做到这一点?因为我宁愿在运行命令之前先查看要运行的命令,但我注意到每次使用时都会自动完成此操作三击选择一个单词。

答案1

三击选择整行,包括末尾的换行符1。输入的是换行符(Unicode U+0A)Enter,因此 shell 会将其解释为应该执行命令2

当你单击并拖动要选择行,通常不会选择末尾的换行符,除非将鼠标拖到下一行,或者除非您选择多行(当然,它们之间包括多个换行符)。

我知道的最佳解决方法是将命令复制粘贴到文本编辑器(例如 Gedit)中,查看它,然后将其复制粘贴到终端中。

以下是一些无害的命令,您可以尝试以不同的方式复制粘贴:

echo 1
echo 2
echo 3
true true
echo hello world
echo "$(whoami)"

脚注

  1. 据我了解,线被定义为细绳以换行符终止。
  2. 根据我的经验,大多数 shell 无法区分输入的字符串和粘贴的字符串。

答案2

在此处输入图片描述在此处输入图片描述

这两个都是通过拖动而不是三次单击来选择的。区别在于,在后者中,我拖动到下一行。您可以看到换行符被表示为文本中实际上不存在的额外空格。使用三次单击,您始终会看到后者。

您可能想要执行以下任一操作:

  • 在编辑器中编辑当前命令行(CtrlX CtrlE是 bash 的默认快捷方式),然后粘贴到编辑器中。
  • 切换到 zsh 之类的 shell,即使有换行符,它也不会在粘贴时执行命令。这是粘贴的文本,尚未执行:

    在此处输入图片描述

相关内容