如何输出到剪贴板并粘贴到 bash tty 中?

如何输出到剪贴板并粘贴到 bash tty 中?

如何将ls输出放入 bash tty 剪贴板中,然后如何将其粘贴到命令提示符中?或者,如何将命令的输出直接放入命令提示符中,以便我可以自由编辑它?

答案1

您也许可以使用 bash 的 readline 来执行您想要的操作,-i它提供了要编辑的初始输入-e。例如,使用date而不是ls因为它更容易看到:

$ read -ei "$(date)" && $REPLY
Mon Jul 25 13:42:47 CEST 2016

现在您已得到如图所示的字符串Mon Jul 25 13:42:47 CEST 2016,光标位于末尾。您可以使用常用的光标键等对其进行编辑。例如,您可以编辑日期2520然后echo在开头添加一个,给出

echo Mon Jul 20 13:42:47 CEST 2016

当您按回车键时,读取的行将被放置在变量中REPLY,然后您可以执行该变量。这有点脆弱,因为回复被空格等分割。您可以添加引号和评估:

$ read -ei "$(date)" && eval "$REPLY"

然后,如果您编辑该行,像以前一样更改 25,并插入需要带空格参数的命令,例如:

date +%s -d 'Mon Jul 20 13:42:47 CEST 2016'

你会得到正确的答案1469014967。一如既往,要小心 eval。

答案2

如何将 ls 输出放入 bash tty 剪贴板中?

如果在桌面环境中运行,我更喜欢使用 X11 剪贴板:

somecommand | xclip -i

这样,就可以使用终端仿真器xclip -o在所有其他应用程序中使用 和 将输出粘贴到命令行上。

如果您在终端多路复用器内运行,例如多路复用器或者屏幕,他们都提供复制和粘贴。如果您在服务器上,这非常有用。

最后,有一些方法可以操纵 readline 拉环,甚至与 X11/OSX 剪贴板同步。优点是可以Ctrl-Y在提示中使用粘贴。缺点是它是仅限 this-bash-session 的解决方案。

如何将命令的输出直接放在命令提示符中以便我可以自由编辑它?

如果您想使用命令的输出作为争论,使用子 shell:

echo "ls output: $(somecommand)"

然后,按下之前Enter, 按<Alt-Ctrl-e>。这将在提示中展开子 shell,以便您可以根据自己的喜好对其进行编辑。

如果你想执行命令的输出,将其重定向到一个文件,编辑并执行它。将输入解释为 shell 命令可能非常危险(例如,rm -rf /$var$var为空时),因此最好仔细检查该文件并保留它。

somecommand > exec.sh
$EDITOR exec.sh
bash exec.sh

相关内容