有没有办法快速(例如通过键盘快捷方式等)引用它写入到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的路径,然后编写一个为您构建该配置文件的工具)。