البرمجة

مشكلة توجيه نتائج ls في سكريبت الشل

عند استخدام أمر “ls” في سكريبت الشل لتوجيه النتائج إلى ملف نصي باستخدام التوجيه “>”، فإنه يكتب فقط اسم الملف الذي يحتوي على النتائج في الملف النصي، ولا يكتب النتائج الفعلية (أي اسماء الملفات).

في سكريبتك، عندما تقوم بتشغيل الأمر:

bash
ls -1r rrr* > /tmp/memo.txt

يقوم السكريبت بتشغيل “ls” مع الخيارات “-1r” (لإظهار كل ملف في سطر منفصل وترتيبهم بالترتيب العكسي)، ثم يقوم بتحويل النتائج إلى الملف “/tmp/memo.txt”.

لكن المشكلة هي أن “ls” لا يكتب أسماء الملفات إلى الملف “/tmp/memo.txt”، بل يكتب فقط اسم الملف “/tmp/memo.txt” نفسه. هذا هو السبب في ظهور “/tmp/memo.txt” فقط في الملف النصي.

لحل هذه المشكلة وكتابة أسماء جميع الملفات المطابقة إلى الملف النصي، يمكنك استخدام الحل الآتي:

bash
#!/bin/bash ls -1r rrr* >> /tmp/memo.txt

باستخدام “>>” بدلاً من “>”, يتم إضافة النتائج إلى نهاية الملف “/tmp/memo.txt” بدلاً من استبداله. وبالتالي، سيتم إضافة أسماء جميع الملفات المطابقة إلى الملف النصي بدلاً من استبدالها بالاسم “/tmp/memo.txt” فقط.

بعد تشغيل السكريبت، يمكنك تنفيذ:

bash
cat /tmp/memo.txt

سترى جميع أسماء الملفات المطابقة مثلما توقعت.

المزيد من المعلومات

بالطبع، دعني أوضح المزيد من المعلومات لمساعدتك في فهم السياق بشكل أفضل.

عندما تستخدم أمر “ls” في سكريبت الشل، فإن الأمر الذي تمر به يقوم بعرض قائمة بأسماء الملفات المطابقة للنمط الذي حددته (في حالتك، “rrr*”). ومن ثم، يتم توجيه هذه القائمة إلى الملف الذي حددته باستخدام علامة التوجيه “>”.

باستخدام “>”، يتم استبدال محتوى الملف الموجه إليه بالنتائج التي تم إنشاؤها من قبل “ls”. لكن في حالتك، تم استبدال المحتوى السابق للملف “/tmp/memo.txt” بالاسم “/tmp/memo.txt” نفسه.

وهذا يعني أن النتيجة النهائية هي ملف نصي يحتوي فقط على اسم الملف “/tmp/memo.txt”، وليس على أسماء الملفات الفعلية التي تمثل النتائج المطلوبة.

لحل هذه المشكلة، يمكنك استخدام علامة التوجيه “>>” بدلاً من “>”, والتي تضيف النتائج إلى نهاية الملف بدلاً من استبداله. وبالتالي، ستتم إضافة أسماء جميع الملفات المطابقة إلى الملف النصي بدلاً من استبدالها بالاسم “/tmp/memo.txt” فقط.

أيضًا، يمكنك استخدام أمر “cat” لعرض محتوى الملف “/tmp/memo.txt” بعد تنفيذ السكريبت، وسترى جميع أسماء الملفات المطابقة كما توقعت.

بهذه الطريقة، يمكنك الحصول على النتائج المرجوة وكتابة جميع أسماء الملفات المطابقة إلى الملف النصي بشكل صحيح وكامل.

مقالات ذات صلة

زر الذهاب إلى الأعلى

هذا المحتوى محمي من النسخ لمشاركته يرجى استعمال أزرار المشاركة السريعة أو تسخ الرابط !!