我发现下面的脚本上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