在bash中快速引用stdout(即上一个命令的输出)?

时间:2012-07-11 02:34:32

标签: bash shell unix command-line readline

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

例如,如果我这样做:

which rails

然后它返回/usr/local/bin/rails然后我想在textmate中打开该文件,我可以像这样重新输入输出:

mate /usr/local/bin/rails

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

注意:我知道我可以mate $(which rails),但我特意想参考stdout。

2 个答案:

答案 0 :(得分:4)

我使用带有历史记录参考的反引号:

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

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

$ e `!!`

并且您始终可以绑定到热键(请参阅bind命令的bash手册页和readline support)。

另外,如果你可以使用剪切缓冲区(在X应用程序中用鼠标选择),那么下面这样的热键可能会有用:

$ e $(xclip -out)

该命令将使用命令行中的剪切缓冲区中的任何内容启动上面的编辑器。如果只需双击即可选择多个路径,则可以非常快速地编辑选定的路径。

答案 1 :(得分:-1)

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

mate `which rails`

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