مؤشرات التقدم لا تقدر بثمن لتوفير تغذية راجعة بصرية أثناء العمليات الطويلة، مما يوفر للمستخدمين مؤشراً واضحاً لتقدم المهمة. في حين أن Bash يفتقر إلى دعم مؤشرات التقدم الأصلي، إلا أن العديد من الأدوات والمكتبات الخارجية توفر حلولاً قوية. يستعرض هذا الدليل ثلاث طرق مميزة: الاستفادة من الأمر pv
، واستخدام الأمر dialog
، واستخدام مكتبة ncurses
.
محتويات
استخدام pv
لمؤشرات التقدم
يتفوق الأمر pv
(عارض الأنابيب) في مراقبة تدفقات البيانات، مما يجعله مثالياً لعرض التقدم في عمليات نقل الملفات أو العمليات المكثفة للبيانات المماثلة. إن بساطته وفعاليته من المزايا المهمة.
التثبيت:
يتوفر pv
بسهولة من خلال معظم مديري حزم توزيعات Linux. قم بالتثبيت باستخدام الأمر المحدد لتوزيعك (مثل، sudo apt-get install pv
على Debian/Ubuntu، sudo yum install pv
على CentOS/RHEL، sudo pacman -S pv
على Arch Linux).
الاستخدام:
التركيب الأساسي بسيط:
pv input_file > output_file
استبدل input_file
باسم ملف المصدر و output_file
باسم الوجهة المطلوبة. سيعرض pv
بشكل ديناميكي شريط تقدم يشير إلى معدل النقل والوقت المتوقع للإكمال.
مثال:
لنسخ ملف كبير (large_file.zip
) مع شريط تقدم:
pv large_file.zip > copied_large_file.zip
تتجاوز مرونة pv
نسخ الملفات. فهو يتكامل بسلاسة مع الأوامر التي تولد تدفقات البيانات. على سبيل المثال، لمراقبة استخراج أرشيف tar:
tar -xvf large_archive.tar | pv > /dev/null
هنا، /dev/null
يتجاهل الملفات المستخرجة، مع التركيز فقط على مراقبة التقدم.
استخدام dialog
لمؤشرات التقدم
يوفر الأمر dialog
مجموعة أوسع من مربعات الحوار التفاعلية، بما في ذلك شريط تقدم متعدد الاستخدامات. وهو يوفر المزيد من التحكم في مظهر الشريط مقارنةً بـ pv
ولا يقتصر على تدفقات البيانات.
التثبيت:
مثل pv
، يتوفر dialog
عادةً عبر مدير حزم التوزيع الخاص بك (مثل، sudo apt-get install dialog
، sudo yum install dialog
، sudo pacman -S dialog
).
الاستخدام:
يستخدم شريط تقدم dialog
الخيار --gauge
. حدد العنوان، والقيمة القصوى (100٪)، والقيمة الحالية. يقوم البرنامج النصي بتحديث القيمة الحالية بشكل متكرر.
مثال:
هذا البرنامج النصي يحاكي عملية ويعرض شريط تقدم:
#!/bin/bash
for i in $(seq 1 100); do
dialog --gauge "Processing..." 10 60 $i
sleep 0.1
done
dialog --infobox "Process complete!" 10 30
يتكرر البرنامج النصي 100 مرة، ويزيد شريط التقدم. sleep 0.1
يضيف تأخيراً للعرض. اجعل البرنامج النصي قابلاً للتنفيذ باستخدام chmod +x your_script.sh
.
الاستفادة من ncurses
لمؤشرات تقدم متقدمة
للحصول على أقصى قدر من التخصيص والتحكم، توفر مكتبة ncurses
مرونة لا تضاهى. ncurses
يتحكم مباشرةً في إخراج المحطة الطرفية، مما يسمح بإنشاء شرائط تقدم مصممة خصيصاً. ومع ذلك، يتطلب هذا النهج فهمًا أعمق للبرمجة ووظائف ncurses
.
التثبيت:
غالبًا ما يتم تثبيت ncurses
مسبقًا. إذا لم يكن كذلك، فقم بالتثبيت باستخدام مدير حزم التوزيع الخاص بك (مثل، sudo apt-get install libncurses5-dev
، sudo yum install ncurses-devel
، sudo pacman -S ncurses
).
الاستخدام:
يقع مثال ncurses
الكامل خارج نطاق هذا الدليل نظرًا لتعقيده. تتضمن العملية تهيئة ncurses
، ورسم الشريط باستخدام وظائف مثل mvprintw
، وتحديثه بشكل متكرر، وأخيراً تنظيف ncurses
. تقوم يدوياً بإدارة موضع المؤشر. توفر العديد من الموارد عبر الإنترنت دروسًا مفصلة حول ncurses
بلغات C أو غيرها؛ يتطلب تكييفها مع Bash عناية دقيقة.
قدمت هذه المقالة ثلاثة نهج لإنشاء شرائط تقدم Bash. اختر الطريقة الأنسب لاحتياجاتك ومهاراتك. pv
مثالي للمهام البسيطة؛ dialog
يوفر المزيد من التحكم؛ و ncurses
يوفر أقصى قدر من التخصيص.