tset(1)

الاسم
tset، reset - تهيئة أو إعادة ضبط حالة الطرفية

موجز
tset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal-type]
reset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal-type]

الوصف

  tset — تهيئة
يهيئ هذا البرنامج الطرفيات.

أولاً، يسترجع tset إعدادات وضع الطرفية الحالية لطرفيتك. يفعل ذلك باختبار متتابع لـ الخطأ المعياري، الإخراج المعياري، الإدخال المعياري و في النهاية “/dev/tty”

للحصول على إعدادات الطرفية. بعد استرجاع هذه الإعدادات، يتذكر tset واصف الملف الذي سيستخدمه عند تحديث الإعدادات.

بعد ذلك، يحدد tset نوع الطرفية التي تستخدمها. يتم هذا التحديد كالتالي، باستخدام أول نوع طرفية يتم العثور عليه.

1. وسيط terminal المحدد في سطر الأوامر.

2. قيمة متغير البيئة TERM.

3. (أنظمة BSD فقط.) نوع الطرفية المرتبط بجهاز الإخراج المعياري للخطأ في ملف /etc/ttys. (على مضيفات System V والأنظمة التي تستخدم تلك الاتفاقية، يقوم getty(8) بهذه المهمة بتعيين TERM وفقًا للنوع الذي يمرره إليه /etc/inittab.)

4. نوع الطرفية المبدئي، “unknown”، غير مناسب لتطبيقات curses.

إذا لم يتم تحديد نوع الطرفية في سطر الأوامر، يتم تطبيق تعيينات خيار -m؛ انظر القسم الفرعي “تعيين نوع الطرفية”. بعد ذلك، إذا بدأ نوع الطرفية بعلامة استفهام (“?”)، يُطلب من المستخدم تأكيد نوع الطرفية. يؤكد الرد الفارغ النوع، أو يمكن إدخال نوع آخر لتحديد نوع جديد. بمجرد تحديد نوع الطرفية، يتم استرجاع وصف الطرفية لهذه الطرفية. إذا لم يتم العثور على وصف طرفية للنوع، يُطلب من المستخدم نوع طرفية آخر.

بمجرد استرجاع وصف الطرفية، إذا تم تمكين الخيار “-w”، قد يقوم tset بتحديث حجم نافذة الطرفية.

    إذا تعذر الحصول على حجم النافذة من نظام التشغيل، ولكن وصف الطرفية (أو البيئة، مثل متغيرات LINES و COLUMNS تحدد ذلك)، استخدم هذا لتعيين مفهوم نظام التشغيل لحجم النافذة. إذا تم تمكين الخيار “-c”، يتم تعيين أحرف المسح للخلف والمقاطعة وقتل السطر (من بين أشياء أخرى كثيرة) ما لم يتم تمكين الخيار “-I”، يتم إرسال سلاسل التهيئة للطرفية والجداولة إلى مخرج الخطأ المعياري، وإذا لم يبدو جهاز الطرفية كطرفية زائفة (كما قد يستخدمها برنامج محاكي طرفية)، ينتظر tset ثانية واحدة في حال تم إصدار إعادة ضبط عتادية. أخيرًا، إذا تغيرت أحرف المسح والمقاطعة وقتل السطر، أو لم يتم تعيينها لقيمها المبدئية، يتم عرض قيمها إلى مخرج الخطأ المعياري.

  reset — إعادة تهيئة
عند استدعائه كـ reset، يضبط tset أوضاع الطرفية إلى قيم “سليمة”: يضبط الأوضاع القانونية (“مطبوخة”) ووضع الصدى، يطفئ أوضاع cbreak والنيء، يشغل ترجمة السطر الجديد و يعيد ضبط أحرف الإدخال الخاصة إلى قيمها المبدئية

قبل تنفيذ تهيئة الطرفية الموصوفة أعلاه. أيضًا، بدلاً من استخدام سلاسل التهيئة للطرفية، يستخدم سلاسل إعادة الضبط للطرفية.

أمر reset مفيد بعد توقف برنامج تاركًا الطرفية في حالة غير طبيعية: قد تضطر إلى كتابة

    <LF>reset<LF>

(حرف تغذية السطر هو عادةً control-J) لجعل الطرفية تعمل، حيث قد لا يعود حرف إرجاع العربة يعمل في الحالة غير الطبيعية. أيضًا، غالبًا لن تعيد الطرفية صدى الأمر.

  ضبط البيئة
غالبًا ما يكون من المرغوب إدخال نوع الطرفية ومعلومات حول قدرات الطرفية في بيئة الصدفة. يتم ذلك باستخدام الخيار -s.

عند تحديد الخيار -s، تُكتب الأوامر لإدخال المعلومات في بيئة الصدفة إلى المخرجات القياسية. إذا انتهى متغير البيئة SHELL بـ “csh”، فالأوامر لـ csh(1)، وإلا فهي لـ sh(1). أوامر csh تضبط وتلغي ضبط متغير الصدفة noglob، تاركة إياه غير مضبوط. السطر التالي في ملفات .login أو .profile سيهيئ البيئة بشكل صحيح:

    eval `tset -s options ... `

  تعيين نوع الطرفية
عندما لا تكون الطرفية موصلة بشكل ثابت في النظام (أو معلومات النظام الحالية غير صحيحة) فإن نوع الطرفية المستمد من ملف /etc/ttys أو متغير البيئة TERM غالبًا ما يكون شيئًا عامًا مثل network أو dialup أو unknown. عند استخدام tset في سكريبت بدء التشغيل، غالبًا ما يكون من المرغوب تقديم معلومات حول نوع الطرفية المستخدمة على هذه المنافذ.

خيارات -m تعين من مجموعة شروط معينة إلى نوع طرفية، أي لإخبار tset “إذا كنت على هذا المنفذ بسرعة معينة، خمن أنني على ذلك النوع من الطرفيات”.

تتكون وسيطة الخيار -m من نوع منفذ اختياري، وعامل اختياري، ومواصفة سرعة باود اختيارية، وحرف نقطتين اختياري (“:”) ونوع طرفية. نوع المنفذ هو سلسلة (محددة إما بالعامل أو حرف النقطتين). قد يكون العامل أي مجموعة من “>” و “<” و “@” و “!”؛ “>” تعني أكبر من، “<” تعني أصغر من، “@” تعني يساوي و “!” تعكس معنى الاختبار. تُحدد سرعة الباود كرقم وتُقارن بسرعة مخرج الخطأ القياسي (الذي يجب أن يكون طرفية التحكم). نوع الطرفية هو سلسلة.

إذا لم يُحدد نوع الطرفية في سطر الأوامر، تُطبق تعيينات -m على نوع الطرفية. إذا تطابق نوع المنفذ وسرعة الباود مع التعيين، يحل نوع الطرفية المحدد في التعيين محل النوع الحالي. إذا تم تحديد أكثر من تعيين واحد، يُستخدم أول تعيين قابل للتطبيق.

على سبيل المثال، اعتبر التعيين التالي: dialup>9600:vt100. نوع المنفذ هو dialup، العامل هو >، مواصفة سرعة الباود هي 9600، ونوع الطرفية هو vt100. نتيجة هذا التعيين هي تحديد أنه إذا كان نوع الطرفية هو dialup، وسرعة الباود أكبر من 9600 باود، فسيُستخدم نوع طرفية vt100.

إذا لم تُحدد سرعة باود، سيطابق نوع الطرفية أي سرعة باود. إذا لم يُحدد نوع منفذ، سيطابق نوع الطرفية أي نوع منفذ. على سبيل المثال، -m dialup:vt100 -m :?xterm سيجعل أي منفذ dialup، بغض النظر عن سرعة الباود، يطابق نوع الطرفية vt100، وأي نوع منفذ غير dialup يطابق نوع الطرفية ?xterm. لاحظ، بسبب علامة الاستفهام البادئة، سيُستفسر من المستخدم على منفذ مبدئي عما إذا كانوا يستخدمون فعليًا طرفية xterm.

لا يُسمح بأحرف فراغ في وسيطة الخيار -m. أيضًا، لتجنب مشاكل مع الأحرف الفوقية، يُقترح وضع وسيطة الخيار -m بأكملها ضمن علامتي اقتباس مفردة، وأن يُدرج مستخدمو csh حرف شرطة مائلة عكسية (“\”) قبل أي علامات تعجب (“!”).

الخيارات
الخيارات هي كما يلي:

-c  ضبط أحرف التحكم والأوضاع.

-e ch
    ضبط حرف المسح إلى ch.

-I  لا تُرسل سلاسل تهيئة الطرفية أو علامات التبويب إلى الطرفية.

-i ch
    ضبط حرف المقاطعة إلى ch.

-k ch
    ضبط حرف قتل السطر إلى ch.

-m mapping
    تحديد تعيين من نوع منفذ إلى طرفية؛ انظر القسم الفرعي “تعيين نوع الطرفية”.

-Q  لا تعرض أي قيم لأحرف المسح والمقاطعة وقتل السطر. عادةً يعرض tset قيم أحرف التحكم التي تختلف عن القيم المبدئية للنظام.

-q  يُعرض نوع الطرفية إلى المخرجات القياسية، ولا تُهيأ الطرفية بأي شكل. الخيار “-” بمفرده مكافئ لكنه قديم.

-r  اطبع نوع الطرفية إلى مخرج الخطأ المعياري.

-s  اطبع تسلسل أوامر الصدفة لتهيئة متغير البيئة TERM إلى المخرج المعياري؛ انظر القسم الفرعي “ضبط البيئة”.

-V  يُبلغ عن إصدار ncurses المُستخدم في هذا البرنامج، ثم يخرج.

-w  غيّر حجم النافذة ليتناسب مع الحجم المُستنتج عبر setupterm(3X). عادةً لا يكون لهذا تأثير، إلا إذا تعذر على setupterm كشف حجم النافذة.

وسائط الخيارات -e و-i و-k قد تُدخل إما كأحرف فعلية أو باستخدام ترميز “القبعة”، أي يمكن تحديد control-h كـ “^H” أو “^h”.

إذا لم يُعطَ أي من -c أو -w، يُفترض كلا الخيارين.

البيئة
يستخدم أمر tset متغيرات البيئة هذه:

الصدفة
    يُخبر tset ما إذا كان سيُهيئ TERM باستخدام صيغة sh(1) أو csh(1).

TERM
    يُشير إلى نوع طرفيتك. كل نوع طرفية متميز، رغم تشابه العديد منها.

TERMCAP
    قد يُشير إلى موقع قاعدة بيانات termcap. إذا لم يكن مسارًا مطلقًا، أي يبدأ بـ “/”، يُزيل tset المتغير من البيئة قبل البحث عن وصف الطرفية.

الملفات

/etc/ttys
    قاعدة بيانات لربط اسم منفذ النظام بنوع الطرفية (إصدارات BSD فقط).

/usr/share/terminfo
    دليل قاعدة بيانات أوصاف الطرفية المجمّعة

القابلية للنقل
لا يُوثق IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008) ولا X/Open Curses Issue 7 الأمرين tset أو reset.

أداة AT&T tput (AIX, HP-UX, Solaris) ضمّنت معالجة وضع الطرفية بالإضافة إلى ميزات قائمة على termcap مثل إعادة ضبط علامات الجدولة من tset في BSD (4.1c)، على الأرجح بقصد جعل tset مهملاً. لكن كل تلك الأنظمة لا تزال توفر tset. في الواقع، الأداة شائعة الاستخدام reset هي دائمًا اسم مستعار لـ tset.

توفر أداة tset توافقًا عكسيًا مع بيئات BSD؛ تحت معظم أنظمة يونكس الحديثة، يمكن لـ /etc/inittab وgetty(8) ضبط TERM بشكل مناسب لكل خط اتصال هاتفي، مما يُلغي أهم استخدام لـ tset. يتصرف هذا التنفيذ مثل tset في 4.4BSD، مع بعض الاستثناءات التي سننظر فيها الآن.

بعض الخيارات مختلفة لأن متغير TERMCAP لم يعد مدعومًا تحت ncurses القائم على terminfo: خيار -S في BSD tset لم يعد يعمل؛ يطبع رسالة خطأ إلى الخطأ المعياري ويتوقف. خيار -s يضبط TERM فقط، وليس TERMCAP.

كانت هناك ميزة غير موثقة في 4.4BSD حيث استدعاء tset عبر رابط باسم “TSET” (أو عبر أي اسم آخر يبدأ بحرف كبير) يضبط الطرفية لاستخدام الأحرف الكبيرة فقط. هذه الميزة حُذفت.

خيارات -A و-E و-h و-u و-v حُذفت من أداة tset في 4.4BSD. لم يُوثق أي منها في 4.3BSD وكلها ذات فائدة محدودة في أحسن الأحوال. خيارات -a و-d و-p غير موثقة أو مفيدة بالمثل، لكنها أُبقيت لأنها تبدو واسعة الاستخدام. يُوصى بشدة بتغيير أي استخدام لهذه الخيارات الثلاثة لاستخدام الخيار -m بدلاً من ذلك. لذلك، خيارات -a و-d و-p محذوفة من ملخص الاستخدام أعلاه.

الأنظمة القديمة جدًا، مثل 3BSD، استخدمت برنامج تشغيل طرفية مختلفًا استُبدل في 4BSD في أوائل الثمانينيات. لاستيعاب هذه الأنظمة القديمة، قدم tset في 4BSD خيار -n لتحديد أن برنامج تشغيل الطرفية الجديد يجب استخدامه. هذا التنفيذ لا يوفر هذا الخيار.

لا يزال من الجائز تحديد الخيارات -e و-i و-k بدون وسائط، رغم أنه يُوصى بشدة بإصلاح هذا الاستخدام لتحديد الحرف صراحةً.

اعتبارًا من 4.4BSD، تنفيذ tset كـ reset لم يعد يستلزم الخيار -Q. أيضًا، التفاعل بين الخيار - ووسيطة terminal في بعض التطبيقات التاريخية لـ tset أُزيل.

خيارا -c و-w غير موجودين في التطبيقات السابقة. لكن، ميزة مختلفة لتغيير حجم النافذة وُفرت في 4.4BSD. في 4.4BSD، يستخدم tset حجم النافذة من وصف termcap لضبط حجم النافذة إذا تعذر على tset الحصول على حجم النافذة من نظام التشغيل. في ncurses، يحصل tset على حجم النافذة باستخدام setupterm(3X)، والذي قد يكون من نظام التشغيل، أو متغيري البيئة LINES وCOLUMNS، أو وصف الطرفية.

الحصول على حجم النافذة من وصف نوع الطرفية شائع في كلا التطبيقين، لكنه يُعتبر مهملاً. استخدامه العملي الوحيد هو للطرفيات المادية. عمومًا، سيبقى حجم النافذة غير مهيأ فقط إذا كانت هناك مشكلة في الحصول على القيمة من نظام التشغيل (وسيظل setupterm يفشل). قد تكون متغيرات البيئة LINES وCOLUMNS مفيدة للالتفاف حول مشاكل حجم النافذة، لكن لها عيب أنه إذا غُير حجم النافذة، يجب إعادة حساب قيمها وإعادة تعيينها. برنامج resize(1) المُوزع مع xterm(1) يساعد في هذا النشاط.

التاريخ
أمر reset الذي كتبه Kurt Shoens ظهر في 1BSD (مارس 1978). ضبط حرفي erase وkill إلى ^H (مسح للخلف) و@ على التوالي. حسن Mark Horton هذا reset في 3BSD (أكتوبر 1979)، مضيفًا أحرف intr وquit وstart/stop وeof بالإضافة إلى تغيير البرنامج لتجنب تعديل أي إعدادات للمستخدم. هذا الإصدار من reset لم يستخدم termcap.

كتب Eric Allman أمر tset متميزًا لـ 1BSD، باستخدام سلف لـ termcap يُسمى ttycap. تشير تعليقات Allman في الكود المصدري إلى أنه بدأ العمل في أكتوبر 1977، واستمر في التطوير على مدى السنوات القليلة التالية. بحلول أواخر 1979، كان قد انتقل إلى termcap وتعامل مع متغير TERMCAP. تشير تعليقات لاحقة إلى أن tset عُدل في سبتمبر 1980 لاستخدام منطق منسوخ من برنامج “reset” في 3BSD عند استدعائه كـ reset. ظهر هذا الإصدار في 4.1cBSD، في أواخر 1982. استمر مطورون آخرون مثل Keith Bostic وJim Bloom في تعديل tset حتى صدر 4.4BSD في 1993.

تطبيق ncurses تم تكييفه بخفة من مصادر 4.4BSD لاستخدام واجهة برمجة تطبيقات terminfo بواسطة Eric S. Raymond <esr@snark.thyrsus.com>.

انظر أيضًا
csh(1), sh(1), stty(1), curs_terminfo(3X), tty(4), terminfo(5), ttys(5), environ

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.