比方说,我在gui文本编辑器中有一个"Quick&Dirty“Perl脚本,并在运行Bash的终端窗口中启动Perl解释器。我可以将Perl脚本复制粘贴到终端&按CTRL来使用Perl执行它。Perl将解释并执行该脚本。
有时,脚本中有一个错误,这使得Perl打印了一个致命的错误并退出,但是剩下的复制粘贴文本被提供给试图执行这个错误的Bash shell;它要么失败(幸运的情况),要么执行但是会做一些不同的事情(不幸的情况)。
例:在Bash提示符下启动Perl,复制粘贴5行脚本:第1行和第2行很好,但是第3行使Perl退出异常,因此第4和第5行由Bash执行。
例如,我只使用Perl & Bash;许多其他交互工具(如Python、fdisk )和其他shell(例如zsh、csh )都会出现问题。
是否有任何方法通知shell,此文本是复制粘贴输入,可以忽略?
比如“如果比用户通常输入的速度更快,那么忽略”?
或者“如果进程完成,那么在读取下一个shell输入之前刷新输入缓冲区”?
[有些工具没有这个问题,例如MySQL cli不会在不正确的输入下退出.]
发布于 2016-02-06 18:24:58
这不是一个答案,但也许这是一个可以接受的解决办法:
alias p='perl; echo hit control-d again; cat > /dev/null'然后,如果您的perl脚本过早退出,您将无害地将其馀部分粘贴到/dev/null;如果perl脚本成功,您将看到友好的提醒并单击control退出cat捕获器。
发布于 2016-02-07 07:47:43
除了杰夫·夏勒的“解决方案/解决方案”之外,正确的解决方案似乎是让环境意识到来自发送方和接收方的复制粘贴,即所谓的“方括号粘贴模式”。
关于https://cirw.in/blog/bracketed-paste,这里有一个简短的片段来解释更多:
总结如下:
它还没有完全可用的巴什,所以我将接受杰夫夏勒的答案,这对我来说很好。
https://unix.stackexchange.com/questions/260395
复制相似问题