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