.\" .TH "TABS" "1" "مه ۲۰۲۵" "ncurses" "دستورات کاربر" .ds n 5 .ie \n(.g .ds `` \(lq .el .ds `` `` .ie \n(.g .ds '' \(rq .el .ds '' '' .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. .de NS .ie n .sp .el .sp .5 .ie n .in +4 .el .in +2 .nf .ft C \" Courier .. .de NE .fi .ft R .ie n .in -4 .el .in -2 .. .SH "نام (NAME)" tabs \- تنظیم یا پاک‌کردن فواصل تب در پایانه (Terminal Tab Stops) .SH "خلاصه دستور (SYNOPSIS)" \fBtabs\fP [\fIگزینه‌ها\fP] [\fIفهرست-تب‌استاپ\fP] .SH "توضیحات (DESCRIPTION)" دستور \fBtabs\fR برای تعیین و بازنشانی فواصل و موقعیت‌های کلید تب (tab stops) در پایانه به کار می‌رود. این برنامه از قابلیت‌های \fBclear_all_tabs\fP و \fBset_tab\fP در terminfo استفاده می‌کند. چنانچه هر یک از این قابلیت‌ها وجود نداشته باشد، \fBtabs\fP قادر به تنظیم یا پاک‌کردن فواصل تب نخواهد بود. پایانه باید به گونه‌ای پیکربندی شده باشد که از تب‌های سخت‌افزاری استفاده کند، به عنوان مثال: .NS stty tab0 .NE .PP همانند \fBclear\fP(1)، دستور \fBtabs\fP نیز خروجی خود را در خروجی استاندارد می‌نویسد. شما می‌توانید خروجی استاندارد را به یک فایل هدایت کنید (که مانع از اعمال فوری تغییر فواصل تب توسط \fBtabs\fP می‌شود)، و سپس با دستور \fBcat\fP محتوای آن فایل را به صفحه نمایش بفرستید تا موقعیت‌های تب در آن لحظه اعمال شوند. .PP این موارد تب‌های سخت‌افزاری هستند که برنامه‌های در حال اجرا در پایانه به سرعت (یا اصلاً) نمی‌توانند آن‌ها را استعلام کنند. کتابخانه Curses و سایر برنامه‌های تمام‌صفحه ممکن است از تب‌های سخت‌افزاری برای بهینه‌سازی خروجی خود به پایانه استفاده کنند. اگر فواصل تب سخت‌افزاری با اطلاعات موجود در پایگاه داده پایانه مغایرت داشته باشد، نتیجه غیرقابل پیش‌بینی خواهد بود. پیش از اجرای برنامه‌های مبتنی بر curses، بهتر است فواصل تب را به مقدار استاندارد بازنشانی کنید: .NS tabs -8 .NE .PP یا از برنامه \fBreset\fP استفاده کنید، زیرا توالی‌های مقداردهی اولیه عادی تضمین نمی‌کنند که فواصل تب بازنشانی شوند. .SH "گزینه‌ها (OPTIONS)" .SS "گزینه‌های عمومی (General Options)" .TP 5 .BI \-T " " "name" نوع پایانه‌ای که \fBtabs\fP باید استفاده کند را مشخص می‌کند. اگر این گزینه داده نشود، \fBtabs\fP از متغیر محیطی \fB$TERM\fP استفاده خواهد کرد. در صورت عدم تنظیم آن، از مدخل \fIansi+tabs\fP استفاده می‌شود. .TP 5 .B \-d گزینه اشکال‌زدایی (دیباگ) که یک خط کش (خط راهنما) به همراه دو خط داده را نمایش می‌دهد. خط اول داده، تب‌استاپ‌های مورد انتظار را با ستاره علامت‌گذاری می‌کند. خط دوم داده، تب‌استاپ‌های واقعی را با ستاره علامت‌گذاری می‌کند. .TP 5 .B \-n این گزینه به \fBtabs\fP می‌گوید گزینه‌ها را بررسی کرده و بخش اشکال‌زدایی را اجرا کند، اما تنظیمات پایانه را تغییر ندهد. .TP 5 \fB\-V\fP نسخه ncurses استفاده شده در این برنامه را گزارش داده و خارج می‌شود. .PP برنامه \fBtabs\fP تنها یک فهرست از فواصل تب را پردازش می‌کند. آخرین گزینه‌ای که فهرستی از تب‌ها را تعریف کند، تعیین‌کننده فهرستی است که اعمال خواهد شد. .SS "فهرست‌های ضمنی (Implicit Lists)" از یک عدد تکی به عنوان گزینه استفاده کنید، مثلاً \*(``\fB\-5\fP\*('' تا فواصل تب در بازه مشخص‌شده تنظیم شوند (در این حالت ۱، ۶، ۱۱، ۱۶، ۲۱ و غیره). تب‌ها تا لبه راست صفحه نمایش تکرار می‌شوند. .PP از \*(``\fB\-0\fP\*('' برای پاک‌کردن همه تب‌ها استفاده کنید. .PP از \*(``\fB\-8\fP\*('' برای تنظیم تب‌ها در فاصله استاندارد (۸ تایی) استفاده کنید. .SS "فهرست‌های صریح (Explicit Lists)" یک فهرست صریح می‌تواند پس از گزینه‌ها تعریف شود (که در آن از کاراکتر \*(``\-\*('' استفاده نمی‌شود). مقادیر موجود در فهرست باید صعودی و بزرگ‌تر از صفر باشند. این مقادیر با کاما یا فاصله از هم جدا می‌شوند، برای مثال: .NS tabs 1,6,11,16,21 .br tabs 1 6 11 16 21 .NE .PP از علامت \*(``+\*('' برای در نظر گرفتن یک عدد به عنوان مقدار افزایشی نسبت به مقدار قبلی استفاده کنید، مثلاً: .NS tabs 1,+5,+5,+5,+5 .NE .PP که معادل همان مثال 1,6,11,16,21 است. .SS "فواصل تب از پیش تعریف‌شده (Predefined Tab-Stops)" استاندارد POSIX چندین فهرست از پیش تعریف‌شده برای فواصل تب تعیین کرده است: .TP 5 .B \-a زبان اسمبلی، IBM S/370، قالب اول .br 1,10,16,36,72 .TP 5 .B \-a2 زبان اسمبلی، IBM S/370، قالب دوم .br 1,10,16,40,72 .TP 5 .B \-c کوبول (COBOL)، قالب عادی .br 1,8,12,16,20,55 .TP 5 .B \-c2 کوبول (COBOL)، قالب فشرده .br 1,6,10,14,49 .TP 5 .B \-c3 کوبول (COBOL)، قالب فشرده گسترش‌یافته .br 1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67 .TP 5 .B \-f فورترن (FORTRAN) .br 1,7,11,15,19,23 .TP 5 .B \-p زبان PL/I .br 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 .TP 5 .B \-s زبان SNOBOL .br 1,10,55 .TP 5 .B \-u اسمبلی UNIVAC 1100 .br 1,12,20,44 .SS "حاشیه‌ها (Margins)" تعداد کمی از پایانه‌ها قابلیت تغییر حاشیه‌های چپ و راست خود را دارند. برنامه tabs گزینه‌ای برای استفاده از این قابلیت دارد: .TP 5 .BI +m " " "margin" اثر این گزینه به داشتن قابلیت‌های حاشیه در پایانه بستگی دارد: .RS .bP اگر پایانه امکان تنظیم حاشیه چپ را فراهم کند، tabs از آن استفاده کرده و عرض در دسترس برای تب‌استاپ‌ها را تنظیم می‌کند. .bP اگر پایانه قابلیت‌های حاشیه را نداشته باشد، tabs اثر آن را تقلید می‌کند و فواصل تب را در موقعیت مناسب در هر سطر قرار می‌دهد. در این حالت حاشیه چپ پایانه دستکاری نمی‌شود. .RE .IP اگر شناسه \fImargin\fP مشخص نشود، مقدار پیش‌فرض ۱۰ خواهد بود. از \fB+m0\fP برای بازنشانی حاشیه چپ (یعنی بازگشت به لبه سمت چپ نمایشگر پایانه) استفاده کنید. پیش از تنظیم حاشیه چپ، tabs حاشیه را بازنشانی می‌کند تا مشکلاتی که ممکن است هنگام حرکت مکان‌نما پیش از حاشیه چپ فعلی پیش بیاید کاهش یابد. .PP هنگام تنظیم یا بازنشانی حاشیه چپ، ممکن است tabs حاشیه راست را نیز بازنشانی کند. .SH "سازگاری (PORTABILITY)" .PP استاندارد \fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (معروف به POSIX.1-2008) ابزار \fBtabs\fP را شرح می‌دهد. با این وجود: .bP این استاندارد گزینه \fB+m\fP را برای تنظیم حاشیه چپ پایانه توصیف می‌کند. تعداد بسیار کمی از مدخل‌ها در پایگاه داده پایانه، قابلیت‌های \fBsmgl\fP (\fBset_left_margin\fP) یا \fBsmglp\fP (\fBset_left_margin_parm\fP) مورد نیاز برای پشتیبانی از این ویژگی را فراهم می‌کنند. .bP برخلاف ابزار \fBtput\fP(1)، در مشخصات X/Open Curses Issue 7 هیچ معادلی برای این ابزار وجود ندارد. .PP گزینه‌های \fB\-d\fP (دیباگ) و \fB\-n\fP (عملیات صوری / no-op) افزونه‌هایی هستند که در سایر پیاده‌سازی‌ها ارائه نشده‌اند. .PP ابزار \fBtabs\fP نخستین بار در PWB/Unix 1.0 (سال ۱۹۷۷) ظاهر شد. نسخه‌ای تقلیل‌یافته از ابزار \fBtabs\fP در ویرایش هفتم یونیکس و در 3BSD (سال ۱۹۷۹) وجود داشت. نسخه دوم از یک گزینه \*(``\-n\*('' پشتیبانی می‌کرد (تا اولین فاصله تب روی حاشیه چپ تنظیم شود). آن گزینه در POSIX مستند نشده است. .PP ابزار \fBtabs\fP در PWB/Unix که در System III (سال ۱۹۸۰) گنجانده شد، به جای پایگاه داده پایانه از جدول‌های داخلی برای پشتیبانی از نیم‌دوجین نوع پایانه چاپگر (hardcopy) استفاده می‌کرد. همچنین منطق داخلی برای پشتیبانی از حاشیه چپ و قابلیتی برای کپی کردن تنظیمات تب از یک فایل داشت. .PP نسخه‌های بعدی یونیکس، مانند SVr4، پشتیبانی از پایگاه داده پایانه را اضافه کردند، اما جداول داخلی را برای پشتیبانی از چاپگرها حفظ نمودند. در تلاش توسعه‌ای پیشین، راه‌اندازی تب‌استاپ توسط \fBtset\fP (سال ۱۹۸۲) که در \fBtput\fP ادغام شد، از پایگاه داده پایانه بهره می‌برد. .PP گزینه \fB+m\fP در مشخصات Base Specifications Issue 5 (معروف به Unix98 در سال ۱۹۹۷) مستند شده بود و در Issue 6 (معروف به Unix03 در سال ۲۰۰۴) بدون ذکر دلیل حذف گردید، گرچه یک توضیح مقدماتی \fI\*(``and optionally adjusts the margin\*(''\fP در اثر غفلت هنگام حذف باقی مانده است. ابزار مستند شده \fBtabs\fP در Issue 6 و بعد از آن سازوکاری برای تنظیم حاشیه‌ها ندارد. گزینه \fB+m\fP در این پیاده‌سازی با استفاده از قابلیت‌های پایانه به جای جدول‌های داخلی، با ویژگی موجود در SVr4 تفاوت دارد. .PP استاندارد POSIX هیچ محدودیتی روی تعداد فواصل تب مشخص نکرده است. مستندات سایر پیاده‌سازی‌ها بیان می‌کنند که محدودیتی برای تعداد فواصل تب وجود دارد (مثلاً ۲۰ تب در ابزار \fBtabs\fP در PWB/Unix). اگرچه برخی از پایانه‌ها ممکن است تعداد دلخواهی از تب‌ها را نپذیرند، اما در صورت طولانی بودن فهرست، این پیاده‌سازی تلاش خواهد کرد فواصل تب را تا لبه سمت راست صفحه تنظیم کند. .PP بخش \fIRationale\fP در مستندات POSIX به تفصیل روش‌هایی را بررسی می‌کند که کمیته برای بازطراحی ابزارهای \fBtabs\fP و \fBtput\fP مد نظر قرار داده بود، بدون آنکه راه‌حلی بهبودیافته ارائه دهد. این بخش اشاره می‌کند که: .RS 5 .PP هیچ نسخه تاریخی شناخته‌شده‌ای از tabs از قابلیت تنظیم فواصل تب دلخواه پشتیبانی نمی‌کند. .RE .PP با این حال، \fIفهرست‌های صریح (Explicit Lists)\fP شرح داده شده در این صفحه راهنما در PWB/Unix پیاده‌سازی شده بودند. این فهرست‌ها امکان تنظیم فواصل تب دلخواه را فراهم می‌کنند. .SH "همچنین ببینید (SEE ALSO)" \fBinfocmp\fP(1), \fBtset\fP(1), \fBncurses\fP(3NCURSES), \fBterminfo\fP(\*n). .PP این سند مربوط به \fBncurses\fP نسخه 6.4 (patch 20221231) است.