如何避免在 ubuntu 命令行上粘贴多行文本?

如何避免在 ubuntu 命令行上粘贴多行文本?

这个问题听起来可能很奇怪。但这就是发生的事情,我想找到避免再次发生这种情况的方法。

我无意中将文本文件的内容粘贴到了 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:某些程序(例如viemacs -nw)将禁用括号内粘贴在它们运行结束后才会生效,即使在它们运行前已打开。您可以通过在每个提示符下启用括号内粘贴来解决此问题。一种方法是重新定义$PS1以包含转义序列$'\e[?2004h'。这可能有点深奥。

答案2

按照原文建议括号粘贴模式邮政,

在 zsh 上(使用 Oh-my-zsh)你可以使用安全粘贴插入,该功能已默认启用(ls ~/.oh-my-zsh/plugins | grep safe-paste)。

在 Bash 上 enable-bracketed-paste好像从 v4.4 开始

也可以看看:

相关内容