如何将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
,光标位于末尾。您可以使用常用的光标键等对其进行编辑。例如,您可以编辑日期25
,20
然后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