在bash中快速引用标准输出(即前一个命令的输出)?

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

例如,如果我这样做:

which rails 

并返回/usr/local/bin/rails然后我想打开文本中的文本,我可以重新input这样的输出:

 mate /usr/local/bin/rails 

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

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

我使用反引号历史参考:

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

实际上,我的编辑器(一个启动gvim的脚本)被别名为e ,所以它看起来更短:

 $ e `!!` 

并且你总是可以绑定到一个热键(参见bash手册页的bind命令和readline support )。

另外,如果您可以使用剪切缓冲区(在X应用程序中使用鼠标进行选择),则类似于以下内容的热键可能会很有用:

 $ e $(xclip -out) 

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

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

 mate `which rails` 

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