Я хочу удалить все папки и файлы, кроме папки с именем docs.
echo !(docs)
но я получил -bash: !: событие не найдено
?
Я использую терминал mac по умолчанию.
У Вас есть две проблемы:
!(doc)
расширенный шарик и extglob
выключен. Если Ваш удар поддерживает extglob
, можно включить его с:
shopt -s extglob
Расширение истории включено. Для превращения, если выключенный работать
set -H
Причины расширения истории удивительные вещи произойти, когда !
используются. Если Вы не используете расширение истории, можно избежать неожиданностей путем выключения его.
Давайте рассмотрим каталог с этими файлами:
$ ls
docs file1 file2
Теперь, давайте выключим extglob и историю на и выполним Вашу команду:
$ shopt -u extglob; set -H
$ echo !(docs)
bash: !: event not found
Это - точно сообщение об ошибке, что Вы сообщили. Таким образом это, кажется, Ваша ситуация.
Теперь, давайте избежим extglob и выключим расширение истории:
$ shopt -u extglob; set +H
$ echo !(docs)
bash: syntax error near unexpected token `('
Эта ошибка отличается от той, о которой Вы сообщили. Это не Ваша ситуация.
Наконец, давайте выполним Вашу команду с extglob на. Для полноты мы попробуем расширение истории в обеих настройках:
$ shopt -s extglob; set +H
$ echo !(docs)
file1 file2
$ shopt -s extglob; set -H
$ echo !(docs)
file1 file2
Оба из них работают. Таким образом пока Ваша оболочка поддерживает extglob и включила его, Ваша команда должна работать.