قيادة يونيكس بسيطة، ما هو {} و\؛ إلى عن على

StackOverflow https://stackoverflow.com/questions/447048

  •  22-07-2019
  •  | 
  •  

سؤال

ومع هذه المجموعة من الأوامر، ما هي {} و\؛ أحرف؟

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؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top