这个问题听起来可能很奇怪。但这就是发生的事情,我想找到避免再次发生这种情况的方法。
我无意中将文本文件的内容粘贴到了 Ubuntu 16.04 上的 SSH CLI 中。这台机器用于我的生产设置。我实际上复制了一个日志文件的内容,并打算将其粘贴到其他 SSH 窗口中打开的 nano 编辑器中,但错误地将其粘贴到了命令行界面上。shell 尝试将每一行都作为命令进行处理,并在本地目录中创建了一些垃圾文件。
幸运的是,这并没有造成太大的损失,但我想知道有什么方法可以避免在 Ubuntu 命令行上意外粘贴?或者我可以禁用多行输入的命令行吗?
我使用 PAC ssh 客户端连接到我的远程系统。
答案1
括号内的粘贴可能正是您所需要的。假设您正在运行支持它的终端(例如 xterm、putty、gnome-terminal),并且假设您正在运行 bash shell,您所要做的就是在每个终端中执行此命令:
set enable-bracketed-paste
你甚至可以把这个命令放在 .bashrc 的末尾。从那一刻起,你粘贴粘贴到 shell 中的命令不会立即执行,即使它包含换行符。但是,如果您粘贴一行或多行然后手动按“Enter”,则所有行都将被执行 - 因此,如果您错误地粘贴了某些内容并且不想执行它,则必须按“Ctrl-C”而不是“Enter”。
注意事项 1:在 shell 中运行的任何程序都将启用带括号的粘贴。许多程序不理解它。因此,如果您运行cat
然后粘贴单词hello
,您将看到^[[200~hello^[[201~
。这可能不是您想要的。
警告 2:某些程序(例如vi
或emacs -nw
)将禁用括号内粘贴在它们运行结束后才会生效,即使在它们运行前已打开。您可以通过在每个提示符下启用括号内粘贴来解决此问题。一种方法是重新定义$PS1
以包含转义序列$'\e[?2004h'
。这可能有点深奥。
答案2
按照原文建议括号粘贴模式邮政,
在 zsh 上(使用 Oh-my-zsh)你可以使用安全粘贴插入,该功能已默认启用(ls ~/.oh-my-zsh/plugins | grep safe-paste
)。
在 Bash 上 放enable-bracketed-paste
,好像从 v4.4 开始。
也可以看看: