无法弄清楚这是否可行,但确实很方便。我想获取bash命令的输出并以交互方式使用它来构建Bash中的下一个命令贝壳。一个简单的例子可能如下:
> find . -name myfile.txt
/home/me/Documents/2015/myfile.txt
> cp /home/me/Documents/2015/myfile.txt /home/me/Documents/2015/myfile.txt.bak
现在,我可以这样做:
find . -name myfile.txt -exec cp {} {}.bak \;
or
cp `find . -name myfile.txt` `find . -name myfile.txt`.bak
or
f=`find . -name myfile.txt`; cp $f $f.bak
我知道。但有时候你需要做一些比添加文件名扩展更复杂的事情,而不是参与$ {f %% txt} .text.bak等等它会更容易和更快(因为你复杂性更高)更多信息)只需将最后一个命令的结果弹出到交互式shell命令行中,并使用emacs风格的编辑键来执行您想要的操作。
那么,有没有办法将命令的结果传回交互式shell并将其挂在那里。或者将它直接管道到剪切/粘贴缓冲区并用快速ctrl-v恢复它?
答案 0 :(得分:4)
键入M-C-e
扩展当前命令行,包括命令替换,就地:
$ $(echo bar)
现在键入M-C-e
会将您的行更改为
$ bar
(M-C-e
是Readline函数shell-expand-line
的默认绑定。)
对于您的具体示例,您可以从
开始$ cp $(find . -name myfile.txt)
以shell-expand-line
扩展为
$ cp /home/me/Documents/2015/myfile.txt
然后您可以使用
进一步扩充$ cp /home/me/Documents/2015/myfile.txt
从这里开始,您有很多选项可以完成命令行。其中两个更简单
!#:1.txt
)扩展到目标文件名。/home/me/Documents/2015/myfile.txt{,.bak}
)。 答案 1 :(得分:2)
如果您使用的是Mac,则可以使用pbcopy
将命令的输出放入剪贴板,以便将其粘贴到下一个命令行中:
find . -name myfile.txt | pbcopy
在X显示屏上,您可以使用xsel --input --clipboard
(或--primary
或可能的其他选择名称执行相同的操作,具体取决于您的窗口管理器)。您也可以使用xclip
,它的工作方式类似。