这在某种程度上是我上一个问题的后续:将多个命令粘贴到终端在用户输入时停止
将以下内容粘贴到终端可以按预期工作:
(
echo test1
# some comment
echo test2
)
但是按向上箭头重复该命令会给出以下明显错误的命令:
( echo test1 echo test2; )
粘贴不带注释的相同内容并按向上箭头会给出预期的命令:
(echo test1; echo test2)
一个简单的解决方法是在每行之前添加;
注释。
但为什么会这样呢?这是一个错误吗?
我用的是bash。 gnome-terminal 和 tilix 中的行为相同。
答案1
问题不在于你粘贴到哪里,而在于你从哪里粘贴。此外,如果您使用 Windows,您将永远不知道复制了什么以及将粘贴什么(空格、奇怪的行结尾、类似 xml 的格式以及所有这些使 CP 操作在 win10 中成为痛苦的东西)。
如果您需要粘贴要在终端中运行的代码,那么它fc
是您最好的朋友。它的作用是打开你的编辑器(在$EDITOR
变量中配置),例如 vim,并允许你格式化最后一个命令并在退出时执行它。通过这种方式,您可以粘贴您需要的任何内容并在运行之前对其进行修改,这也有助于清理您的输入。如果您需要对上一个命令进行大量更改,则非常好。
正如评论中的某人所说,将代码粘贴到终端中直接执行从来都不是一个好主意,并且可能会导致代价高昂的错误。