Как работает эта функция bash для удаления всех файлов, кроме некоторых?

Я нашел следующий сценарий на commandlinefu.com (пример больше не в сети):

rmbut() { 
    local x=("$@")
    IFS=, rm -rf *[!"${x[*]}"] 
}

Он удаляет все файлы и каталоги, кроме тех, которые указаны в командной строке.

Не могли бы вы объяснить следующее:

  • Что происходит в первой строке? $ @ означает все аргументы, но почему он заключен в круглые скобки?
  • Я читал о IFS , но никогда не использовал его, как он здесь используется?
  • Что достигается с помощью * [! "$ {X [*]}"] ? Я не могу понять, как разбить его на то, что я знаю.

5
задан Paŭlo Ebermann 29 August 2011 в 17:32
поделиться