我發現下面的腳本上commandlinefu.com(例子中是不在線了):這個bash函數是如何移除除了一些文件之外的所有文件的?
rmbut() {
local x=("[email protected]")
IFS=, rm -rf *[!"${x[*]}"]
}
它刪除所有的文件和目錄,但指定的命令行上的人。
你能解釋下:
- 什麼是第一行發生了什麼?
[email protected]
表示所有參數,但它爲什麼放在圓括號內? - 我已閱讀關於
IFS
但從未實際使用過它,它在這裏有什麼用處? - 用
*[!"${x[*]}"]
實現了什麼?我無法理解如何將它分解成我知道的東西。
你確定那些是「local x ..」行上的括號(),或者它們是大括號{}或括號[]。它有所作爲。另外,從函數的外觀來看,它只是刪除除函數參數指定的基本名之外的所有文件。 – kvista 2011-01-26 13:48:34
是的,括號是正確的。這是函數的目的,很明顯,我想知道爲什麼^^ – 2011-01-26 14:00:18