2012-03-10 39 views
1

這裏的示例代碼:

user$ touch file.txt 
user$ mate !$ 

「龍虎鬥」正在呼叫的TextMate文本編輯器,而第二個命令打開先前創建file.txt的。這是什麼!$語法?什麼!做? $做什麼?

回答

2

這是一個在各種shell歷史擴展或歷史替換中調用的shell特性。

以感嘆號開頭的單詞被先前執行的命令中的單詞替換。哪些詞和哪些命令,取決於詞的其餘部分。

在這個特定的例子中,美元符號指的是命令的最後一個單詞,並且由於在'!'之間沒有其他字符,和'$'被引用的命令是前一個,所以!$被替換爲prevoius命令的最後一個參數。

其他命令和單詞說明符存在於shell之間。

2

!$在Bash shell中引用上一個命令中的最後一個單詞,這裏是file.txt

$借用正則表達式和ed/vi命令語法,意思是「last」。

0

您可以在shell的文檔中找到它。

不幸的是,shell文檔通常不會顯示!$字符在一起,這使得搜索!$不必要的困難。 (該!引入了歷史替換;在$修改它,使得它指的只是最後一個字。)

對於tcsh,man tcsh或訪問this page並搜索「歷史替換」。

對於bash,man bash並搜索「歷史擴展」,或info bash或訪問bash manual,特別是在history expansionevent designators的章節。

相關問題