5 أوامر سطر واحد في Bash تجعلني أعود دائماً إلى طرفية لينكس
إذا كنت تقضي معظم وقتك في موجه الأوامر (Terminal) وتبحث دائماً عن طرق لتحسين مهاراتك، فأنت بالتأكيد تحب تعلم طرق جديدة لحل المشكلات لأنها تفتح أمامك مفاهيم لم تكن تتخيلها من قبل. إليك خمسة أوامر "سطر واحد" (One-liners) أستخدمها لحل المشكلات الشائعة، والتي قد تقدم لك بعض الحيل والمفاهيم الجديدة.
1. إنشاء المجلدات باستخدام التوسيع بالقوسين (Brace Expansions)
هذه الحيلة تقلل من طول الأوامر ويمكن تطبيقها في سيناريوهات متعددة وليس فقط مع أمر واحد.
هذا الأمر سيقوم بإنشاء هيكل مجلدات كالتالي:
├── bar/
└── baz/
يقوم المعامل --parents (أو -p) بالتأكد من إنشاء المجلدات الأب أولاً. السحر هنا يكمن في الأقواس المتعرجة {}، ففي Bash تُعرف هذه الخاصية بـ Brace Expansions، حيث يتعامل النظام مع الأمر وكأنك كتبت أمر mkdir مرتين منفصلتين لكل مجلد.
2. حساب عدد الأسطر أو الكلمات من ملفات متعددة
أحياناً تحتاج إلى حساب عدد أسطر البرمجة في مشروعك أو عدد الكلمات في ملاحظاتك. دمج قراءة الملفات في مسار واحد هو الحل الأمثل.
cat **/*.go | wc --lines
# حساب عدد الكلمات في الملاحظات
cat **/*.org | wc --words
wc. لو قمنا بتنفيذ wc --words **/*.org بشكل مباشر، سنحصل على مئات النتائج المنفصلة لكل ملف على حدة.
3. مقارنة مخرجات عمليتين (Process Substitutions)
جميعنا يعرف أمر diff الذي يقارن بين ملفين، ولكن ماذا لو أردت مقارنة مخرجات أمرَين بدلاً من ملفين؟ هنا يأتي دور استبدال العمليات (Process Substitutions).
يتيح لك هذا الأسلوب تنفيذ أي أمرين وتمرير مخرجاتهما (كمسارات لملفات مؤقتة) إلى أمر مثل diff. يمكنك أيضاً أخذ لقطة أساسية لمجلد ومقارنته لاحقاً لاكتشاف أي تغييرات حدثت فيه:
4. مراقبة مخرجات الأوامر بشكل حي (Watch)
أداة watch بسيطة للغاية: فهي تقوم بتشغيل أمر معين كل ثانيتين لتتمكن من مراقبة أي تغييرات. يمكننا دمجها مع الحيلة السابقة لمراقبة التغييرات في مجلد ما بشكل شبه فوري:
بما أن أمر watch يستخدم sh افتراضياً (والذي لا يدعم استبدال العمليات الخاص بـ Bash)، كان يجب علينا تشغيل الـ diff صراحةً عبر bash -c لتفعيل هذه الخاصية والحصول على تحديثات حية للتغييرات.
5. استخراج النصوص بين أنماط محددة باستخدام Grep
أداة grep تبحث عن السطور بالكامل، لكن أحياناً تريد فقط الجزء الذي يطابق النمط. على سبيل المثال، استخراج محتوى وسم HTML محدد:
يعتمد هذا الأمر على التعابير النمطية (Regex):
- -o: لإرجاع الجزء المطابق فقط من السطر.
- -P: لاستخدام التعابير النمطية المتوافقة مع لغة Perl.
- (?<=<p>) و (?=</p>): هي تقنيات Lookbehind و Lookahead للتأكد من وجود الوسم قبل وبعد النص المراد استخراجه دون تضمين الوسم نفسه في النتيجة.
هذه الأوامر قد تبدو مخصصة لحالات معينة، ولكنها تقدم رؤى وأساليب يمكن تطبيقها على نطاق واسع في استخدامك اليومي لطرفية لينكس، مما يرفع من إنتاجيتك بشكل كبير!
إرسال تعليق
تذكر قبل كتابه اى تعليق قول الله تعالى: مَا يَلْفِظُ مِنْ قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ [ق:18]؟