2012-07-11 140 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) 

該命令將啓動編輯器如上面無論在命令行中的剪切緩衝區中。由於只需雙擊就可以選擇多條路徑,因此可以快速編輯選定的路徑。

相關問題