قيادة يونيكس بسيطة، ما هو {} و\؛ إلى عن على
سؤال
ومع هذه المجموعة من الأوامر، ما هي {} و\؛ أحرف؟
find . -name '*.clj' -exec grep -r resources {} \;
المحلول
الرجل يجد . (خاص الجزء حول -exec
)
عند استخدام -exec
لتشغيل أمر على كل من العثور على الملفات، يتم استبدال {}
مع اسم كل ملف وجدت، ويتم إنهاء الأمر قبل \;
في المثال الخاص بك، كل الملفات وجدت تحت الدليل الحالي (.
)، مطابقة *.clj
اسم سيكون على المدى قيادة grep -r resources
عليها (للعثور على resources
السلسلة إذا كان موجودا في كل من هذه الملفات).
وانها فعلا زائدة إلى حد ما، منذ -r
هو لالدلائل البحث بشكل متكرر، وهذا ما find
تقوم به بالفعل.
نصائح أخرى
في بحث، المعلمة -exec الاستيلاء على بقية المعلمات حتى سمسم. (الفاصلة المنقوطة) التي لابد من هرب، وبالتالي \ ؛. في غضون هذه الفترة، {} يتم استبدال اسم الملف الذي يجري تفتيشه.
والنظر في هذا الأمر البديلة التي أجد أسهل للفهم:
find . -name *.clj | xargs grep -r resources
وسلسلة الأحرف "{}" سيتم استبدال الملف الحالي يتم معالجتها. ومنقوطة هرب إنهاء حجة الأمر للخيار -exec.
ويتم استبدال {}
سلسلة في find
من مسار الملف الحالي.
ويستخدم الفاصلة المنقوطة لإنهاء الأمر قذيفة يتذرع بها فائدة find
.
لا بد من هرب، أو نقل، لذلك لن يتم تفسيرها من قبل شركة شل، ولأن ;
هو واحد من الأحرف الخاصة التي يستخدمها قذيفة (شركات القائمة).
وانظر أيضا: لماذا مائل ومنقوطة المطلوب مع خيار الأمر العثور على -exec؟