Как удалить все файлы в каталоге и оставить.env?

Два подхода:

  1. Отредактируйте /etc/sudoers, чтобы разрешить пользователю выполнять sudo -u minecraft, или конкретно sudo -u minecraft /home/minecraft/server/start.sh, без пароля.
  2. Сделайте sudo -u minecraft sleep 0в своем скрипте перед командой tmux. Это попросит вас ввести пароль. Последующие команды sudoв течение следующих нескольких минут не будет требовать пароль.
0
02.10.2020, 09:16
1 ответ

Если вы установите параметры оболочки extglobи dotglobв оболочке bashс помощью

shopt -s extglob dotglob

, то шаблон example/!(.env)будет соответствовать всем именам в каталоге example, отличном от .env.

Обратите внимание, что нам нужно установить dotglob, чтобы разрешить шаблонам подстановки соответствующие скрытые имена.

Использование

rm -f example/!(.env)

попытается удалить эти совпадающие имена.

Если этот шаблон расширится до слишком большого количества имен, вы получите сообщение об ошибке "слишком длинный список аргументов". Запуск его в простом цикле был бы альтернативным решением :

.
for name in example/!(.env); do rm -f "$name"; done

Связанный вопрос:

1
18.03.2021, 23:01

Теги

Похожие вопросы