3

Иногда я вижу такую команду

find . -name * -exec ls -a {} \;

Меня попросили выполнить это.

Что значит {} \; значит здесь?

1 ответ1

5

\; является ; передается в программу (find) \ escape, предотвращая ее обработку оболочкой (обычно это отдельные команды). Аргумент -exec интерпретирует все как команду вплоть до вставленной ; это заканчивает -exec . Внутри -exec аргумент {} означает "вставить имя файла сюда". Таким образом, если бы файлы были "foo" и "bar", он выполнял бы "ls -a foo", а затем "ls -a bar". Таким образом, все это означает только то, что, поскольку -exec есть.

Часть -name * могла быть обозначена * в кавычках. Если его нет в кавычках, он будет делать очень непредсказуемые вещи, потому что все имена файлов будут вставлены вместо имеющихся у вас * , и эти имена могут плохо сработать с этой командой. Не -name * для более безопасного запуска этой команды (но я не знаю, как вы собираетесь понять, почему это произошло).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .