执行命令而无需按Enter键。 这有时会很危险......
为什么会这样,我该如何预防?
答案 0 :(得分:12)
因为您粘贴了新的行字符。它有时可能很有用,例如,您可以一次复制/粘贴许多命令(长多行脚本)。
好吧,我从未想过要阻止这种特殊行为。这是正常的和预期的。 WYPIWYG - 你粘贴的是你得到的东西。
答案 1 :(得分:9)
您正在粘贴一个或多个换行符。除了简单地不复制和粘贴换行符之外,你可以做一些事情来解决这个问题:
对于单行命令,首先输入“#”,这样命令就会被注释掉。然后,您可以返回并编辑它。
使用bash(看似鲜为人知的)编辑并执行命令功能。要调用它,如果使用emacs键绑定(默认值),则可以点击CTRL-x
CTRL-e
,如果使用vi键绑定,则可以点击ESC v
。这将调用包含当前命令行的文本编辑器。然后,您可以粘贴到编辑器中,然后编辑命令。保存并退出后,将执行编辑器保存的命令(如果要中止注释掉所有行或完全清除缓冲区)。您可以设置与FCEDIT
或EDITOR
环境变量一起使用的编辑器。
答案 2 :(得分:3)
防止执行的一种快速方法是键入注释字符#,然后粘贴命令。
我经常这样做,因为我在复制时抓住手指并抓住无关的角色。
当您在注释字符后粘贴时,该命令位于历史记录缓冲区中,您可以对其进行编辑,取消注释并运行它。
---回复评论
你是对的,这只适用于单行命令。如果剪贴板中有多行文件,则可以通过sed管道剪贴板数据。
愚蠢的bash技巧#400万和一个:
prompt:$ xclip -o -selection clipboard | sed --regexp-extended 's/^(.*)$/# \1;/'
会转过来:
for i in *.JPG;
do echo mv $i ${i/.JPG/.jpg};
done;
进入这个:
# for i in *.JPG;
# do echo mv $i ${i/.JPG/.jpg};
# done;
这真的不值得努力,但有点乐趣;>