أمر Pipe وGrep وSort في Linux/Unix مع أمثلة

⚡ ملخص ذكي

تقوم أوامر الأنابيب و grep و sort في أنظمة Linux و Unix بربط وتصفية النصوص: يقوم الأنبوب بتغذية مخرجات أمر واحد إلى الأمر التالي، ويبحث grep عن الأنماط، ويقوم sort بترتيب الأسطر، بينما تقوم المرشحات بتحويل البيانات بينها.

  • 🔗 يضخ: يقوم رمز الأنبوب | بتمرير مخرجات أمر واحد كمدخلات للأمر التالي.
  • 📄 الاستدعاء: يعرض الأمر cat عند تمريره إلى less أو pg أو more ملفًا طويلًا شاشة واحدة في كل مرة.
  • 🔍 سيطرة: يبحث الأمر grep في ملف عن الأسطر التي تطابق سلسلة نصية أو نمطًا معينًا.
  • 🎚️ خيارات grep: تقوم علامات مثل -v و -c و -n و -i و -l بعكس وحساب وترقيم وتجاهل حالة الأحرف وعرض قائمة الملفات.
  • 🔤 فرز: يقوم أمر الفرز بترتيب أسطر الملف، مع استخدام -r و -n و -f للترتيب العكسي والرقمي وغير الحساس لحالة الأحرف.
  • 🧪 المرشحات: تقوم أوامر التصفية مثل grep و sort و awk و sed و wc بمعالجة المدخلات الموجهة وإنتاج المخرجات.
  • 🤖 مساعدة الذكاء الاصطناعي: يمكن للمساعدين الذين يعملون بالذكاء الاصطناعي وبرنامج GitHub Copilot إنشاء وشرح مسارات البيانات باستخدام pipe و grep و sort.

أوامر الأنابيب، والبحث، والفرز في لينكس ويونكس مع أمثلة

تُعد الأنابيب، و grep، و sort من بين الأدوات الأكثر استخدامًا في لينكس تُتيح لك هذه الأدوات استخدام سطر الأوامر، لأنها تُمكّنك من ربط الأوامر الصغيرة في سير عمل واحد فعّال. تشرح هذه الصفحة كل أداة منها بأمثلة عملية، ثم تُبيّن كيفية ربطها معًا باستخدام المرشحات.

ما هو الأنبوب في لينكس؟

الأنبوب هو أمر في نظام لينكس يسمح لك باستخدام أمرين أو أكثر بحيث تُستخدم مخرجات أحد الأوامر كمدخلات للأمر التالي. باختصار، تُغذّي مخرجات كل عملية العملية التالية مباشرةً، تمامًا مثل خط الأنابيب. يرمز للأنبوب بالرمز '|'.

تساعدك الأنابيب على دمج أمرين أو أكثر في وقت واحد وتشغيلها بالتتابع. يمكنك استخدام أوامر قوية تُنجز مهامًا معقدة بسرعة فائقة.

دعونا نفهم هذا بمثال.

عند استخدام الأمر 'cat' لعرض ملف يمتد على عدة صفحات، ينتقل المؤشر بسرعة إلى الصفحة الأخيرة من الملف، ولن ترى المحتوى الموجود في المنتصف.

ولتجنب ذلك، يمكنك توجيه مخرجات الأمر 'cat' إلى 'less'، والذي يعرض لك طول تمرير واحد فقط من المحتوى في كل مرة.

cat filename | less

سيوضح الرسم التوضيحي ذلك. يُظهر الرسم البياني أدناه كيف يمرر الأنبوب مخرجات أمر ما إلى الأمر التالي.

رسم تخطيطي لأنبوب لينكس يمرر مخرجات أمر ما كمدخلات لأمر آخر.

أوامر "pg" و"المزيد".

بدلاً من استخدام "less"، يمكنك أيضاً استخدام الأمر pg أو more:

cat Filename | pg

or

cat Filename | more

يمكنك بعد ذلك عرض الملف على شكل أجزاء يسهل قراءتها والتمرير لأسفل ببساطة عن طريق الضغط على مفتاح الإدخال. تُظهر لقطة الشاشة أدناه ملفًا مُقسّمًا إلى صفحات باستخدام الأمر "المزيد".

تم توجيه أمر cat إلى الأمر more، حيث يتم عرض ملف طويل صفحةً تلو الأخرى.

الأمر "grep".

لنفترض أنك تريد البحث عن معلومات معينة، مثل الرمز البريدي، في ملف نصي.

يمكنك تصفح المحتوى يدويًا بنفسك لـ tracاستخدم المعلومات. الخيار الأفضل هو استخدام البقرى يقوم هذا الأمر بفحص المستند بحثًا عن المعلومات المطلوبة وعرض النتيجة بالتنسيق الذي تريده.

بناء الجملة:

grep search_string

دعونا نرى ذلك عملياً. تُظهر لقطة الشاشة أدناه نتيجة البحث.

أمر grep للبحث في ملف العينة عن الكلمتين Apple و Eat

هنا، بحث الأمر grep في الملف 'sample' عن الكلمتين 'Apple' و'Eat'. يمكن استخدام الخيارات التالية مع هذا الأمر.

خيار الوظيفة
-v إظهار كافة الأسطر التي لا تطابق السلسلة التي تم البحث عنها
-c يعرض فقط عدد الأسطر المطابقة
-n يظهر السطر المطابق ورقمه
-i يتطابق مع الأحرف الكبيرة والصغيرة
-l يظهر فقط اسم الملف مع السلسلة

لنجرب الخيار "-i" على نفس الملف المستخدم أعلاه. تُظهر لقطة الشاشة أدناه النتيجة غير الحساسة لحالة الأحرف.

grep -i إجراء بحث غير حساس لحالة الأحرف عن الحرف a

باستخدام الخيار '-i'، قام grep بتصفية السلسلة 'a' (غير حساسة لحالة الأحرف) من جميع الأسطر.

أمر "الفرز".

يساعد هذا الأمر في فرز محتويات الملف أبجديًا.

صيغة هذا الأمر هي:

sort Filename

انظر إلى محتويات ملف، كما هو موضح باستخدام الأمر cat أدناه.

يُظهر الأمر cat محتويات الملف abc غير المصنفة

يؤدي تشغيل أمر الفرز إلى ترتيب تلك الأسطر أبجديًا، كما هو موضح أدناه.

أمر الفرز لترتيب محتويات الملف abc أبجديًا

توجد أيضًا امتدادات لهذا الأمر، وهي مدرجة أدناه.

خيار الوظيفة
-r Reverseفرز s
-n فرز عدديا
-f فرز غير حساس لحالة الأحرف

يوضح المثال أدناه الفرز العكسي للمحتويات في الملف "abc".

الأمر sort -r يقوم بترتيب محتويات الملف abc عكسيًا

ما هو المرشح؟

يحتوي نظام لينكس على العديد من أوامر التصفية مثل awk و grep و sed و spell و wc. يأخذ عامل التصفية مدخلات من أمر واحد، ويقوم ببعض المعالجة، ثم يُخرج مخرجات.

عند تمرير أمرين عبر مسار البيانات، يتم تمرير الناتج "المُصفّى" للأمر الأول إلى الأمر التالي. يوضح الرسم البياني أدناه كيفية دمج المرشح في مسار البيانات.

مخطط لمرشح لينكس يستقبل المدخلات عبر الأنابيب، ويعالجها، وينتج المخرجات

دعونا نفهم هذا بمساعدة مثال. لدينا الملف التالي 'sample'، الموضح أدناه باستخدام الأمر cat.

يعرض أمر cat محتويات الملف النموذجي قبل التصفية.

نريد تمييز الأسطر التي لا تحتوي على الحرف 'a' فقط، ولكن يجب أن تكون النتيجة بترتيب عكسي. ولتحقيق ذلك، يمكن استخدام الصيغة التالية:

cat sample | grep -v a | sort -r

دعونا نلقي نظرة على النتيجة، الموضحة في لقطة الشاشة أدناه.

تم تمرير الأمر cat عبر الأمر grep -v والأمر sort -r، مما أدى إلى ظهور أسطر بترتيب عكسي بدون الحرف a

الأسئلة الشائعة

يُرسل رمز الأنبوب (|) مُخرجات أمرٍ ما مباشرةً إلى أمرٍ آخر، رابطًا بينهما. أما رمزا إعادة التوجيه (> و <) فيربطان أمرًا بملف، إما بكتابة المُخرجات إلى ملف أو بقراءة المُدخلات منه. تربط الأنابيب الأوامر، بينما تربط إعادة التوجيه الأوامر بالملفات.

يرمز grep إلى Global Regular Expression Print (طباعة التعبير النمطي العالمي). يقوم هذا الأمر بفحص ملف أو مدخلات سطرًا بسطر، ويطبع كل سطر يطابق النمط المحدد. وقد استُمد اسمه من أمر g/re/p في محرر النصوص القديم ed، والذي كان يقوم بنفس عملية البحث.

يحتوي الأمر sort على خيار -u الذي يقوم بفرز الملفات وإزالة الأسطر المكررة في خطوة واحدة: sort -u file. يمكنك أيضًا تمرير الأمر sort إلى الأمر uniq، كما في sort file | uniq، لأن uniq يزيل فقط الأسطر المكررة المتجاورة.

يُنهي الأمر `cat sample | grep -va | sort -r > result.txt` عملية المعالجة بإعادة التوجيه، حيث يكتب الناتج النهائي في ملف. لعرض الناتج على الشاشة وحفظه في الوقت نفسه، استخدم الأمر `tee` بدلاً من ذلك.

يبحث الأمر grep داخل الملفات عن الأسطر التي تطابق نمطًا نصيًا محددًا. أما الأمر find فيحدد موقع الملفات والمجلدات نفسها حسب الاسم أو الحجم أو النوع أو التاريخ. باختصار، ينظر grep إلى محتويات الملفات، بينما يبحث find عن الملفات في جميع أنحاء شجرة المجلدات.

يقرأ الأمر tee من قناة ويكتب البيانات إلى الشاشة وإلى ملف واحد أو أكثر في آن واحد، على سبيل المثال grep error log | tee errors.txt. يتيح لك هذا حفظ المخرجات الوسيطة دون إيقاف مسار البيانات.

بإمكان مساعدي الذكاء الاصطناعي اقتراح سلسلة الأوامر المناسبة من طلب مكتوب بلغة إنجليزية بسيطة، وشرح علامات grep أو sort غير المألوفة، واكتشاف الأخطاء في مسار البيانات. كما تقوم أدوات التعلم الآلي بفحص مخرجات سجلات البيانات لتحديد الحالات الشاذة التي قد لا يلاحظها الفرز اليدوي.

نعم. مساعد الطيار جيثب يمكن إنشاء مسارات تجمع بين cat و grep و sort من تعليق قصير يصف ما تحتاجه، وإكمال الأوامر أثناء الكتابة. Revاطلع على أي مسار مقترح مقابل بيانات العينة، وخاصة الخيارات التي تعيد ترتيب الأسطر أو تحذفها.

تلخيص هذه التدوينة بـ: