Linux Shell Scripting

أشرطة تقدم Bash: ثلاث طرق فعّالة

Spread the love

مؤشرات التقدم لا تقدر بثمن لتوفير تغذية راجعة بصرية أثناء العمليات الطويلة، مما يوفر للمستخدمين مؤشراً واضحاً لتقدم المهمة. في حين أن 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 يوفر أقصى قدر من التخصيص.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *