Как использовать wilcards по команде chown?
Мне нужно использовать подстановочные знаки по команде chown. Пример:
# chown app:demo /opt/app/users/*/demo
Я получаю следующую ошибку:
chown: can not access "/opt/app/users/*/demo" ': No such file or directory
Но не работает. Что я могу сделать?
2 ответа
Решение
Вы вложили свой шаблон в "double quotes"
, которые предотвращают расширение имени файла (также называемое globbing):
Двойные кавычки: "..." запрещает некоторые замены, но разрешает другие. Каждая замена, которая начинается со знака доллара $, выполняется, как и наследие
...
(backtick) подстановка команд. Экранирование обратной косой черты также выполняется. Нет разделения слов или расширения имени файла.
Очевидно, что решение состоит в том, чтобы запустить вашу команду без кавычек, как указал jcbermu:
chown storage:storage_clientes_bitac -R /home/storage/storage/Empresa/*/Bitacoras
Одна важная вещь, которую вы должны помнить, это публиковать команды и сообщения об ошибках дословно, задавая вопросы. Не всем здесь нравятся игры в догадки.
Подстановочные знаки часто проблематичны, когда не в базовом имени
Вы могли бы сделать это
find /opt/app/users/ -name demo -exec chown app:demo \{\} \;