URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 8925
[ Назад ]

Исходное сообщение
"Bash (-exec) "

Отправлено merfi , 12-Ноя-10 10:38 
прошу прощения за совершенно тупой вопрос
вот пример команды
find /path/to/files -type f -exec chmod 0644 {} \;
Все мне понятно в ней (абсолютно)
ищем файлы
find /path/to/files -type f
вот это вот порождает дочерний процесс для выполнени команды chmod
chmod 0644
А вот что это вот означает совершенно запамятовал
{} \;
Что это означает??? Могу предположить что в скобках выполняется подскрипт

Содержание

Сообщения в этом обсуждении
"Bash (-exec) "
Отправлено phpcoder , 12-Ноя-10 11:19 
> А вот что это вот означает совершенно запамятовал
> {} \;

Могу ошибаться, но вместо {} подставляется имя файла, а \; означает конец команды, которую будет -exec исполнять. Здесь точку с запятой приходится экранировать, чтобы шелл не подумал, что это две отдельных команды.



"Bash (-exec) "
Отправлено DeadLoco , 12-Ноя-10 19:41 
> Что это означает??? Могу предположить что в скобках выполняется подскрипт

Чтение манов полностью развеяло бы все ваши непонятки.

в опции "-exec chmod 0644 {} \;"  конструкт "{}" имеет семантику "каждый найденный файл".
Конструкция "\;" означает "конец секции exec". Это делается для того, чтобы точку с запятой можно было использовать внутри вызываемой экзеком команды.


"Bash (-exec) "
Отправлено merfi , 13-Ноя-10 09:33 
>> Что это означает??? Могу предположить что в скобках выполняется подскрипт
> Чтение манов полностью развеяло бы все ваши непонятки.
> в опции "-exec chmod 0644 {} \;"  конструкт "{}" имеет семантику
> "каждый найденный файл".
> Конструкция "\;" означает "конец секции exec". Это делается для того, чтобы точку
> с запятой можно было использовать внутри вызываемой экзеком команды.

Спасибо Большое ! Вы очень помогли


"Bash (-exec) "
Отправлено pavlinux , 27-Ноя-10 22:15 
>> Что это означает??? Могу предположить что в скобках выполняется подскрипт
> Чтение манов полностью развеяло бы все ваши непонятки.
> в опции "-exec chmod 0644 {} \;"  конструкт "{}" имеет семантику
> "каждый найденный файл".

Строка `{} 'заменяется на имя текущего обрабатываемого файла везде,
где он встречается в аргументах команды при -exec


То есть можно вот так

find . -name *.sh -exec sha1sum {} md5sum {} \;