
我一直在嘗試安裝 Nagios 軟體包,並在指南上偶然發現了這些奇怪的 bash 擴展這裡。有人可以幫助我理解擴充的含義嗎?維基連結也有助於將來參考。
root@z:~> wget http://mathias-kettner.de/download/check_mk-1.1.7i5.tar.gz
root@z:~> tar zxvf !#:t
root@z:~> chown -R root:root !$:r:r && chmod -R o-w !$:r:r && cd !$:r:r
root@z:~/check_mk-1.1.7i5> ./setup.sh
答案1
這些都是bash
歷史擴展關鍵字。他們從 shell 歷史記錄中選擇一行並重新插入(部分)它(可能在修改後)。您連結到的網站對它們進行了合理的解釋,但它並沒有描述所有這些內容。
tar zxvf !#:t
實際上沒有意義:!#
選擇到目前為止鍵入的行,但tar zxvf
我們不想重複使用其中任何一個。它應該是
tar zxvf !$:t
它選擇上一行的最後一部分 ( !$
),這是給 的 URL wget
,並獲取文件名部分(:t
,代表 tail - 嚴格來說,它是最後一個目錄分隔符 後剩下的內容,/
它恰好與URL 配合得很好)。
然後
chown -R root:root !$:r:r
選擇上一行的最後一部分,刪除檔案副檔名(:r
嚴格來說,它會刪除最後一個後面的所有內容.
,包括.
)兩次,這給了目錄名稱(假設tarball 包含一個與tarball 的基本名稱同名的目錄) )。chmod
和命令cd
以相同的方式進行。