0
Нужна помощь в понимании этой сложной Unix найти команд и ее работу:неясная Unix найти команду синтаксис понимания
find . \(\! -user xx -exec chown -- xx '{}' + -false \) -o \
\(\! -group root -exec chgrp -- root '{}' + \) -o \
\(! -perm 700 -exec chmod -- 700 '{}' + -exec false \; \)
Кроме того, я ищу в частности, цели -False предиката. Я предполагаю, что я смешал как GNU и не GNU найти синтаксис
Спасибо [perreal] (http://stackoverflow.com/users/390913/perreal), но все же я не мог понять цель ** - false ** и ее значение короткого замыкания. Что делать, если я не использую его в приведенном выше коде? Кроме того, опция «-o» просто объединяет каждую отдельную команду здесь? если да, то для чего ** - или ** и ** - a **? –
Поскольку или, как логический оператор, оценивается как true, если любой из его аргументов истинен, большинство языков программирования останавливают оценку и возвращают true (что называется коротким замыканием). Чтобы предотвратить это, вы можете заставить каждый аргумент возвращать 'false' и, следовательно, оценивать все' или ''ed термины. – perreal
В этом случае мы могли бы использовать опцию ** - a ** (AND) вместо ** - o ** (OR), которая будет строго оценивать все без цели короткого замыкания (** - false **) ?? Кроме того, я надеюсь, что опции ** - o ** и ** - или ** являются одним и тем же в команде ** find ** –