जीएनयू खोजने के लिए आदमी पेज:
-exec command ; [...] The string `{}' is replaced by the current file name being processed everywhere it occurs in the arguments to the command, not just in arguments where it is alone, as in some versions of find. Both of these constructions might need to be escaped (with a `\') or quoted to protect them from expansion by the shell.
यह आदमी find
(GNU खोज) 4.4.2 से है।
अब मैंने इसे बैश और डैश के साथ परीक्षण किया, और दोनों को {}
नकाबपोश होने की आवश्यकता नहीं है । यहाँ एक सरल परीक्षण है:
find /etc -name "hosts" -exec md5sum {} \;
क्या कोई शेल है, जिसके लिए मुझे वास्तव में ब्रेसिज़ की आवश्यकता है? ध्यान दें, कि यह इस बात पर निर्भर नहीं करता है कि क्या फ़ाइल में रिक्त है (बैश से आह्वान किया गया है):
find ~ -maxdepth 1 -type d -name "U*" -exec ls -d {} \;
/home/stefan/Ubuntu One
यह पाया जाता है कि यदि मिली फ़ाइल एक सब-डिले के पास जाती है:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d {}' \;
ls: cannot access /home/stefan/Ubuntu: No such file or directory
ls: cannot access One: No such file or directory
जिसके द्वारा हल किया जा सकता है:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d "$0"' {} \;
के विपरीत:
find ~ -maxdepth 3 -type d -name "U*" -exec bash -c 'ls -d "{}"' \;
/home/stefan/Ubuntu One
लेकिन यह वह बात नहीं है जो मैन पेज के बारे में बात कर रहा है? तो कौन सा शेल {}
एक अलग तरीके से व्यवहार करता है?