2012-07-11 41 views
8

有没有办法快速(例如通过键盘快捷方式等)引用它写入stdout的前一个命令输出的输出?在bash中快速引用标准输出(即前一个命令的输出)?

例如,如果我这样做:

which rails 

,并返回/usr/local/bin/rails,然后我想打开TextMate的这个文件,我可以重新输入类似这样的输出:

mate /usr/local/bin/rails 

但有没有办法快速引用输出而不必重新输入?

注意:我知道我只能做mate $(which rails),但我特别希望引用标准输出。

+2

不,它已经没有Bash那么多了。它可能在终端的回滚缓冲区中可用(例如,“屏幕”)。 – 2012-07-11 02:41:18

+0

'mate $(!!)'也许。 – ephemient 2012-07-11 03:28:30

+0

!!只有输入,而不是输出,输出不存储在除终端缓冲区外的任何地方。 – pizza 2012-07-11 03:58:00

回答

-1

你总是可以在反引号运行命令:

mate `which rails` 

我不得不说,虽然这感觉有点,呃,有风险的。如果你的PATH被篡改,那么返回的轨道不是你真正需要的版本呢?如果它不返回什么?因此,注意关闭所有这些错误情况,或者以某种方式避免它们(例如,从配置文件读取rails的路径,并编写一个为您构建该配置文件的工具)。

4

我使用反引号与历史参考:

$ which rails 
/usr/local/bin/rails 
$ mate `!!` 

其实,我的编辑器(脚本启动gvim)化名为e,所以看起来更短:

$ e `!!` 

,你可以随时绑定到热键(请参见bind命令的bash手册页和readline support)。

另外,如果你可以使用剪切缓冲区(在X应用程序鼠标选择),一个热键类似下面的可能是有用的:

$ e $(xclip -out) 

该命令将启动编辑器如上面无论在命令行中的剪切缓冲区中。由于只需双击就可以选择多条路径,因此可以快速编辑选定的路径。

相关问题