enhance(1) General Commands Manual enhance(1)

enhance - برنامه‌ای برای افزودن قابلیت‌های ویرایش خط فرمان به برنامه‌های شخص ثالث

enhance command [ argument ... ]

برنامه enhance امکانات پیشرفته ویرایش خط فرمان را برای کاربران برنامه‌های شخص ثالثی که به کد منبع آن‌ها دسترسی ندارند فراهم می‌کند. این کار با قرار دادن یک شبه‌ترمینال بین برنامه کاربردی و ترمینال واقعی انجام می‌شود. این برنامه از کتابخانه ویرایش خط فرمان tecla برای خواندن ورودی از ترمینال واقعی استفاده می‌کند، سپس هر خط ورودی تکمیل‌شده را از طریق شبه‌ترمینال به برنامه ارسال می‌نماید. تمام خروجی برنامه نیز بدون تغییر به ترمینال واقعی بازگردانده می‌شود.

هر زمان که برنامه برای بیش از یک‌دهم ثانیه تولید خروجی را متوقف کند، برنامه enhance آخرین خط خروجی ناقص را به عنوان اعلان (prompt) در نظر می‌گیرد و هر خط ورودی ناقصی را که کاربر تایپ کرده است پس از آن دوباره نمایش می‌دهد. توجه داشته باشید که این تاخیر کوچک، که برای کاربر نامحسوس است، برای عملکرد صحیح برنامه ضروری نیست؛ بلکه صرفاً یک بهینه‌سازی است که با هدف جلوگیری از بازنمایش مکرر خط ورودی طراحی شده تا سرعت خروجی کاهش نیابد.

توجه داشته باشید که امکانات ویرایش خط فرمان در سطح کاربر که توسط کتابخانه Tecla ارائه می‌شوند، در صفحه راهنمای tecla(7) مستند شده‌اند.

تنها مشکل عمده‌ای که هنوز حل نشده، نحوه تعامل با برنامه‌هایی است که وضعیت بازتاب (echo) ورودی تایپ‌شده توسط ترمینال کنترلی‌شان را تغییر می‌دهند. به عنوان مثال، برنامه‌هایی که درخواست گذرواژه می‌کنند، مانند ftp و telnet، موقتاً به ترمینال کنترلی خود اعلام می‌کنند آنچه را کاربر تایپ می‌کند بازتاب ندهد. از آنجا که این درخواست به سمت برنامه در شبه‌ترمینال ارسال می‌شود، برنامه enhance راهی برای آگاهی از وقوع آن ندارد و به بازتاب ورودی تایپ‌شده به ترمینال کنترلی خود، در حین تایپ گذرواژه توسط کاربر ادامه می‌دهد.

علاوه بر این، پیش از اجرای برنامه میزبان، برنامه enhance در ابتدا شبه‌ترمینال را روی حالت noecho قرار می‌دهد تا هر آنچه به برنامه ارسال می‌شود به صورت تکراری بازتاب داده نشود. اگر برنامه‌ای که به حالت noecho تغییر وضعیت داده است بعداً به جای بازیابی حالت‌های قبلی ترمینال، بازتاب را به طور صریح بازگرداند، آنگاه پس از آن با هر بار وارد کردن یک خط ورودی جدید، یک نسخه تکراری از آن در خط بعدی نمایش داده خواهد شد.

libtecla.a    -   کتابخانه tecla.
~/.teclarc    -   فایل سفارشی‌سازی شخصی tecla.

tecla(7), libtecla(3)

Martin Shepherd (mcs@astro.caltech.edu)