سؤال

كيف تقوم بعض البرامج بتحرير ما يتم عرضه على الجهاز (لاختيار مثال عشوائي، البرنامج 'sl')؟أفكر في محطة Linux هنا، وقد يحدث ذلك في أنظمة تشغيل أخرى أيضًا، لا أعرف.لقد اعتقدت دائمًا أنه بمجرد عرض بعض النصوص، فإنها تبقى هناك.كيف يمكنك تغييره دون إعادة رسم الشاشة بأكملها؟

هل كانت مفيدة؟

المحلول

تستفيد العديد من التطبيقات من اللعنات المكتبة، أو بعض اللغات المرتبطة بها.

لإعادة الكتابة على سطر واحد، مثل تحديث معلومات التقدم، يتم استخدام الحرف الخاص "إرجاع"، الذي يتم تحديده غالبًا بواسطة تسلسل الهروب " "، يمكن أن يعيد المؤشر إلى بداية السطر الحالي مما يسمح للإخراج اللاحق بالكتابة فوق ما تم كتابته مسبقًا هناك.

نصائح أخرى

اعتمادًا على المحطة التي ترسل فيها تسلسلات التحكم.التسلسلات الشائعة هي على سبيل المثال esc[;H لإرسال المؤشر إلى موضع محدد (على سبيل المثال.على Ansi، Xterm، Linux، VT100).ومع ذلك، سيختلف هذا باختلاف النوع أو الجهاز الذي يستخدمه المستخدم.سوف تقوم اللعنة (بالاشتراك مع ملفات terminfo) بتغليف هذه المعلومات لك.

جرب هذا shellscript

#!/bin/bash
i=1
while [ true ]
    do
            echo -e -n "\r $i"
            i=$((i+1))
    done

خيارات -n تمنع السطر الجديد ...و يقوم بإرجاع النقل ...تكتب مرارًا وتكرارًا في نفس السطر - بدون تمرير أو أي شيء على الإطلاق

إذا قمت بإنهاء سطر تم إرساله إلى الوحدة الطرفية باستخدام حرف إرجاع (' ') بدلاً من تغذية الأسطر (' ')، فسوف يحرك المؤشر إلى بداية السطر الحالي، مما يسمح للبرنامج بطباعة المزيد من النص فوق ما طبعته من قبل.أستخدم هذا أحيانًا لرسائل التقدم للمهام الطويلة.

إذا كنت بحاجة إلى إجراء المزيد من التحرير الطرفي أكثر من ذلك، فاستخدم ncurses أو البديل منه.

هناك أحرف يمكن إرسالها إلى الجهاز والتي تحرك المؤشر للخلف.ثم يمكن الكتابة فوق النص.

هناك قائمة هنا.لاحظ خطوط "تحريك المؤشر لشيء ما".

NCurses عبارة عن مكتبة مشتركة بين الأنظمة الأساسية تتيح لك رسم واجهات المستخدم على الأجهزة الطرفية الذكية.

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

للبناء على إجابة @Corporal Touchy، هناك مكتبات متاحة ستتعامل مع بعض هذه الوظائف نيابةً عنك مثل اللعنات/ncurses

وأنا أتفق مع دانيو، ncurses هو الطريق للذهاب.وهنا برنامج تعليمي جيد:

http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top