| TABS(1) | دستورات کاربر | TABS(1) |
نام (NAME)
tabs - تنظیم یا پاککردن فواصل تب در پایانه (Terminal Tab Stops)
خلاصه دستور (SYNOPSIS)
tabs [گزینهها] [فهرست-تباستاپ]
توضیحات (DESCRIPTION)
دستور tabs برای تعیین و بازنشانی فواصل و موقعیتهای کلید تب (tab stops) در پایانه به کار میرود. این برنامه از قابلیتهای clear_all_tabs و set_tab در terminfo استفاده میکند. چنانچه هر یک از این قابلیتها وجود نداشته باشد، tabs قادر به تنظیم یا پاککردن فواصل تب نخواهد بود. پایانه باید به گونهای پیکربندی شده باشد که از تبهای سختافزاری استفاده کند، به عنوان مثال:
stty tab0
همانند clear(1)، دستور tabs نیز خروجی خود را در خروجی استاندارد مینویسد. شما میتوانید خروجی استاندارد را به یک فایل هدایت کنید (که مانع از اعمال فوری تغییر فواصل تب توسط tabs میشود)، و سپس با دستور cat محتوای آن فایل را به صفحه نمایش بفرستید تا موقعیتهای تب در آن لحظه اعمال شوند.
این موارد تبهای سختافزاری هستند که برنامههای در حال اجرا در پایانه به سرعت (یا اصلاً) نمیتوانند آنها را استعلام کنند. کتابخانه Curses و سایر برنامههای تمامصفحه ممکن است از تبهای سختافزاری برای بهینهسازی خروجی خود به پایانه استفاده کنند. اگر فواصل تب سختافزاری با اطلاعات موجود در پایگاه داده پایانه مغایرت داشته باشد، نتیجه غیرقابل پیشبینی خواهد بود. پیش از اجرای برنامههای مبتنی بر curses، بهتر است فواصل تب را به مقدار استاندارد بازنشانی کنید:
tabs -8
یا از برنامه reset استفاده کنید، زیرا توالیهای مقداردهی اولیه عادی تضمین نمیکنند که فواصل تب بازنشانی شوند.
گزینهها (OPTIONS)
گزینههای عمومی (General Options)
- -T name
- نوع پایانهای که tabs باید استفاده کند را مشخص میکند. اگر این گزینه داده نشود، tabs از متغیر محیطی $TERM استفاده خواهد کرد. در صورت عدم تنظیم آن، از مدخل ansi+tabs استفاده میشود.
- -d
- گزینه اشکالزدایی (دیباگ) که یک خط کش (خط راهنما) به همراه دو خط داده را نمایش میدهد. خط اول داده، تباستاپهای مورد انتظار را با ستاره علامتگذاری میکند. خط دوم داده، تباستاپهای واقعی را با ستاره علامتگذاری میکند.
- -n
- این گزینه به tabs میگوید گزینهها را بررسی کرده و بخش اشکالزدایی را اجرا کند، اما تنظیمات پایانه را تغییر ندهد.
- -V
- نسخه ncurses استفاده شده در این برنامه را گزارش داده و خارج میشود.
برنامه tabs تنها یک فهرست از فواصل تب را پردازش میکند. آخرین گزینهای که فهرستی از تبها را تعریف کند، تعیینکننده فهرستی است که اعمال خواهد شد.
فهرستهای ضمنی (Implicit Lists)
از یک عدد تکی به عنوان گزینه استفاده کنید، مثلاً “-5” تا فواصل تب در بازه مشخصشده تنظیم شوند (در این حالت ۱، ۶، ۱۱، ۱۶، ۲۱ و غیره). تبها تا لبه راست صفحه نمایش تکرار میشوند.
از “-0” برای پاککردن همه تبها استفاده کنید.
از “-8” برای تنظیم تبها در فاصله استاندارد (۸ تایی) استفاده کنید.
فهرستهای صریح (Explicit Lists)
یک فهرست صریح میتواند پس از گزینهها تعریف شود (که در آن از کاراکتر “-” استفاده نمیشود). مقادیر موجود در فهرست باید صعودی و بزرگتر از صفر باشند. این مقادیر با کاما یا فاصله از هم جدا میشوند، برای مثال:
tabs 1,6,11,16,21 tabs 1 6 11 16 21
از علامت “+” برای در نظر گرفتن یک عدد به عنوان مقدار افزایشی نسبت به مقدار قبلی استفاده کنید، مثلاً:
tabs 1,+5,+5,+5,+5
که معادل همان مثال 1,6,11,16,21 است.
فواصل تب از پیش تعریفشده (Predefined Tab-Stops)
استاندارد POSIX چندین فهرست از پیش تعریفشده برای فواصل تب تعیین کرده است:
- -a
- زبان
اسمبلی، IBM S/370،
قالب اول
1,10,16,36,72 - -a2
- زبان
اسمبلی، IBM S/370،
قالب دوم
1,10,16,40,72 - -c
- کوبول (COBOL)،
قالب عادی
1,8,12,16,20,55 - -c2
- کوبول (COBOL)،
قالب فشرده
1,6,10,14,49 - -c3
- کوبول (COBOL)،
قالب فشرده
گسترشیافته
1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67 - -f
- فورترن (FORTRAN)
1,7,11,15,19,23 - -p
- زبان PL/I
1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 - -s
- زبان SNOBOL
1,10,55 - -u
- اسمبلی UNIVAC 1100
1,12,20,44
حاشیهها (Margins)
تعداد کمی از پایانهها قابلیت تغییر حاشیههای چپ و راست خود را دارند. برنامه tabs گزینهای برای استفاده از این قابلیت دارد:
- +m margin
- اثر این گزینه به داشتن قابلیتهای حاشیه در پایانه بستگی دارد:
- اگر پایانه امکان تنظیم حاشیه چپ را فراهم کند، tabs از آن استفاده کرده و عرض در دسترس برای تباستاپها را تنظیم میکند.
- اگر پایانه قابلیتهای حاشیه را نداشته باشد، tabs اثر آن را تقلید میکند و فواصل تب را در موقعیت مناسب در هر سطر قرار میدهد. در این حالت حاشیه چپ پایانه دستکاری نمیشود.
- اگر شناسه margin مشخص نشود، مقدار پیشفرض ۱۰ خواهد بود. از +m0 برای بازنشانی حاشیه چپ (یعنی بازگشت به لبه سمت چپ نمایشگر پایانه) استفاده کنید. پیش از تنظیم حاشیه چپ، tabs حاشیه را بازنشانی میکند تا مشکلاتی که ممکن است هنگام حرکت مکاننما پیش از حاشیه چپ فعلی پیش بیاید کاهش یابد.
هنگام تنظیم یا بازنشانی حاشیه چپ، ممکن است tabs حاشیه راست را نیز بازنشانی کند.
سازگاری (PORTABILITY)
استاندارد IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (معروف به POSIX.1-2008) ابزار tabs را شرح میدهد. با این وجود:
- این استاندارد گزینه +m را برای تنظیم حاشیه چپ پایانه توصیف میکند. تعداد بسیار کمی از مدخلها در پایگاه داده پایانه، قابلیتهای smgl (set_left_margin) یا smglp (set_left_margin_parm) مورد نیاز برای پشتیبانی از این ویژگی را فراهم میکنند.
- برخلاف ابزار tput(1)، در مشخصات X/Open Curses Issue 7 هیچ معادلی برای این ابزار وجود ندارد.
گزینههای -d (دیباگ) و -n (عملیات صوری / no-op) افزونههایی هستند که در سایر پیادهسازیها ارائه نشدهاند.
ابزار tabs نخستین بار در PWB/Unix 1.0 (سال ۱۹۷۷) ظاهر شد. نسخهای تقلیلیافته از ابزار tabs در ویرایش هفتم یونیکس و در 3BSD (سال ۱۹۷۹) وجود داشت. نسخه دوم از یک گزینه “-n” پشتیبانی میکرد (تا اولین فاصله تب روی حاشیه چپ تنظیم شود). آن گزینه در POSIX مستند نشده است.
ابزار tabs در PWB/Unix که در System III (سال ۱۹۸۰) گنجانده شد، به جای پایگاه داده پایانه از جدولهای داخلی برای پشتیبانی از نیمدوجین نوع پایانه چاپگر (hardcopy) استفاده میکرد. همچنین منطق داخلی برای پشتیبانی از حاشیه چپ و قابلیتی برای کپی کردن تنظیمات تب از یک فایل داشت.
نسخههای بعدی یونیکس، مانند SVr4، پشتیبانی از پایگاه داده پایانه را اضافه کردند، اما جداول داخلی را برای پشتیبانی از چاپگرها حفظ نمودند. در تلاش توسعهای پیشین، راهاندازی تباستاپ توسط tset (سال ۱۹۸۲) که در tput ادغام شد، از پایگاه داده پایانه بهره میبرد.
گزینه +m در مشخصات Base Specifications Issue 5 (معروف به Unix98 در سال ۱۹۹۷) مستند شده بود و در Issue 6 (معروف به Unix03 در سال ۲۰۰۴) بدون ذکر دلیل حذف گردید، گرچه یک توضیح مقدماتی “and optionally adjusts the margin” در اثر غفلت هنگام حذف باقی مانده است. ابزار مستند شده tabs در Issue 6 و بعد از آن سازوکاری برای تنظیم حاشیهها ندارد. گزینه +m در این پیادهسازی با استفاده از قابلیتهای پایانه به جای جدولهای داخلی، با ویژگی موجود در SVr4 تفاوت دارد.
استاندارد POSIX هیچ محدودیتی روی تعداد فواصل تب مشخص نکرده است. مستندات سایر پیادهسازیها بیان میکنند که محدودیتی برای تعداد فواصل تب وجود دارد (مثلاً ۲۰ تب در ابزار tabs در PWB/Unix). اگرچه برخی از پایانهها ممکن است تعداد دلخواهی از تبها را نپذیرند، اما در صورت طولانی بودن فهرست، این پیادهسازی تلاش خواهد کرد فواصل تب را تا لبه سمت راست صفحه تنظیم کند.
بخش Rationale در مستندات POSIX به تفصیل روشهایی را بررسی میکند که کمیته برای بازطراحی ابزارهای tabs و tput مد نظر قرار داده بود، بدون آنکه راهحلی بهبودیافته ارائه دهد. این بخش اشاره میکند که:
هیچ نسخه تاریخی شناختهشدهای از tabs از قابلیت تنظیم فواصل تب دلخواه پشتیبانی نمیکند.
با این حال، فهرستهای صریح (Explicit Lists) شرح داده شده در این صفحه راهنما در PWB/Unix پیادهسازی شده بودند. این فهرستها امکان تنظیم فواصل تب دلخواه را فراهم میکنند.
همچنین ببینید (SEE ALSO)
infocmp(1), tset(1), ncurses(3NCURSES), terminfo(5).
این سند مربوط به ncurses نسخه 6.4 (patch 20221231) است.
| مه ۲۰۲۵ | ncurses |