'\" t .\"*************************************************************************** .\" Copyright 2018-2024,2025 Thomas E. Dickey * .\" Copyright 1998-2016,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" $Id: tput.1,v 1.149 2025/11/12 01:05:03 tom Exp $ .TH tput 1 2025-11-11 "ncurses 6.6" "دستورات کاربر" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq .\} .el \{\ .ie t .ds `` `` .el .ds `` ""\" cannot be used in quoted macro argument w/ AT&T troff .ie t .ds '' '' .el .ds '' ""\" cannot be used in quoted macro argument w/ AT&T troff .\} . .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. .SH "نام (NAME)" tput \- راهاندازی پایانه یا پرسوجو از پایگاه داده terminfo .SH "خلاصه دستور (SYNOPSIS)" \fBtput\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] {\fIcap-code\fP [\fIparameter\fP .\|.\|.\&]} .\|.\|. .PP \fBtput\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] [\fB\-x\fP] \fBclear\fP .PP \fBtput\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fBinit\fP .PP \fBtput\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fB\%reset\fP .PP \fBtput\fP [\fB\-v\fP] [\fB\-T\fP \fIterminal-type\fP] \fB\%longname\fP .PP \fBtput\fP [\fB\-v\fP] \fB\-S\fP .PP \fBtput\fP [\fB\-v\fP] \fB\-V\fP .SH "توضیحات (DESCRIPTION)" دستور .B \%tput از کتابخانه و پایگاه داده .I \%term\%info برای در دسترس قرار دادن قابلیت‌ها و اطلاعات خاص هر پایانه در پوسته، راه‌اندازی اولیه یا بازنشانی پایانه، یا گزارش توصیفی از نوع پایانه فعلی (یا مشخص‌شده) استفاده می‌کند. دسترسی به قابلیت‌های پایانه از طریق .IR cap-code انجام می‌شود. .PP صفحه راهنمای \fB\%terminfo\fP(5) قابلیت‌های پایانه را به طور مفصل بررسی کرده و فهرست کاملی از .IR cap-code ‌های استاندارد را ارائه می‌دهد. صفحه راهنمای \fB\%user_caps\fP(5) سایر قابلیت‌های پرکاربرد اما غیراستاندارد را معرفی می‌کند. .PP هنگام بازیابی مقادیر قابلیت‌ها، نتیجه به نوع قابلیت بستگی دارد. .TP 9 \" "Boolean" + 2n بولی (Boolean) .B \%tput در صورتی که پایانه دارای .IR cap-code مربوطه باشد، کد خروج را برابر با .B 0 و در غیر این صورت برابر با .B 1 قرار می‌دهد. .TP عددی (numeric) در صورت تعریف شدن، .B \%tput مقدار ده‌دهی .IR cap-code را به همراه یک خط جدید در جریان خروجی استاندارد می‌نویسد .RB ( \-1 در صورتی که تعریف نشده باشد). .TP رشته‌ای (string) در صورت تعریف شدن، .B \%tput مقدار .IR cap-code را بدون خط جدید پایانی در جریان خروجی استاندارد می‌نویسد. .PP پیش از استفاده از مقدار بازگردانده‌شده در خروجی استاندارد، برنامه باید کد خروج .BR \%tput را بررسی کند تا از 0 بودن آن مطمئن شود؛ بخش \*(``کدهای خروج (EXIT STATUS)\*('' در زیر را ببینید. .SS "عملوندها (Operands)" به‌طور کلی، یک عملوند عبارت است از یک .IR cap-code (کد قابلیت از پایگاه داده پایانه)، یا یک پارامتر برای آن. سه مورد دیگر به طور ویژه توسط .BR \%tput شناسایی می‌شوند: .BR init ، .BR \%reset و .BR \%longname . اگرچه این موارد شبیه به کدهای قابلیت هستند، اما در عمل رفتار ویژه‌ای با آن‌ها می‌شود؛ ما آن‌ها را \*(``شبه‌قابلیت‌ها (pseudo-capabilities)\*('' می‌نامیم. .TP 11n \" "longname" + 2n + adjustment for PDF .I cap-code یک قابلیت از پایگاه داده پایانه را نشان می‌دهد. .IP اگر .I cap-code از نوع رشته‌ای باشد و پارامتر بپذیرد، .B \%tput آرگومان‌های پس از .I cap-code را تا سقف تعداد (ثابت) مورد نیاز قابلیت، به عنوان پارامتر تفسیر می‌کند. .IP بیشتر پارامترها عددی هستند. تنها تعداد معدودی از قابلیت‌های پایانه به پارامترهای رشته‌ای نیاز دارند؛ .B \%tput از یک جدول برای تصمیم‌گیری درباره اینکه کدام‌ها به عنوان رشته ارسال شوند استفاده می‌کند. معمولاً .B \%tput از \fB\%tparm\fP(3X) برای انجام جایگزینی استفاده می‌کند. اگر هیچ پارامتری برای قابلیت ارائه نشود، .B \%tput رشته را بدون انجام جایگزینی می‌نویسد. .TP .B init پایانه را راه‌اندازی اولیه می‌کند. اگر پایگاه داده پایانه موجود باشد و مدخلی برای نوع پایانه کاربر وجود داشته باشد، موارد زیر رخ می‌دهند: .RS .TP 5 (1) .B \%tput تنظیمات حالت‌های پایانه را بازیابی می‌کند. این دستور به طور پیاپی توصیف‌کننده‌های فایل مربوط به .RS .bP جریان خطای استاندارد، .bP جریان خروجی استاندارد، .bP جریان ورودی استاندارد، و .bP .I \%/dev/tty .RE .IP را برای به‌دست آوردن تنظیمات پایانه آزمایش می‌کند. پس از بازیابی آن‌ها، .B \%tput به خاطر می‌سپارد که برای به‌روزرسانی‌های بعدی از کدام توصیف‌کننده استفاده کند. .TP (2) اگر ابعاد پایانه از سیستم‌عامل قابل دریافت نباشد، اما محیط یا مدخل پایگاه داده نوع پایانه آن‌ها را توصیف کرده باشد، .B \%tput تصور سیستم‌عامل از آن‌ها را به‌روزرسانی می‌کند. .TP (3) .B \%tput حالت‌های پایانه را به‌روزرسانی می‌کند. .RS .bP گسترش تب (Tab expansion) طبق مشخصات موجود در مدخل، فعال یا غیرفعال می‌شود، و .bP اگر تب‌ها گسترش نیافته باشند، تب‌های استاندارد (هر ۸ فاصله) تنظیم می‌شوند. .RE .TP (4) اگر قابلیت‌های راه‌اندازی اولیه، که در زیربخش \*(``Tabs and Initialization\*('' از \fB\%terminfo\fP(5) به تفصیل آمده‌اند، موجود باشند، .B \%tput آن‌ها را در جریان خروجی استاندارد می‌نویسد. .TP (5) .B \%tput جریان خروجی استاندارد را تخلیه (flush) می‌کند. .RE .IP اگر مدخلی فاقد اطلاعات لازم برای فعالیتی از فعالیت‌های فوق باشد، آن فعالیت بدون هشدار نادیده گرفته می‌شود. .TP .B reset پایانه را بازنشانی (راه‌اندازی مجدد) می‌کند. یک بازنشانی به دو صورت با راه‌اندازی اولیه تفاوت دارد: .RS .TP 5 (1) .B \%tput حالت‌های پایانه را روی یک وضعیت \*(``معقول (sane)\*('' تنظیم می‌کند: .RS .bP فعال کردن حالت‌های متعارف (\*(``cooked\*('') و بازتاب (echo)، .bP غیرفعال کردن حالت‌های cbreak و خام (raw)، .bP فعال کردن ترجمه خط جدید، و .bP تنظیم هر نویسه ورودی ویژه روی مقادیر پیش‌فرض آن. .RE .TP 5 (2) اگر هر گونه قابلیت بازنشانی برای نوع پایانه تعریف شده باشد، .B \%tput آن‌ها را در جریان خروجی می‌نویسد. در غیر این صورت، .B \%tput از هر گونه قابلیت راه‌اندازی اولیه تعریف‌شده استفاده می‌کند. قابلیت‌های بازنشانی در زیربخش \*(``Tabs and Initialization\*('' از \fB\%terminfo\fP(5) با جزئیات آمده‌اند. .RE .TP .B longname یک مدخل .I \%term\%info پیش از فهرست قابلیت‌های پایانه، با یک یا چند نام آغاز می‌شود که برنامه کاربردی می‌تواند برای ارجاع به آن مدخل از آن‌ها استفاده کند. نام‌ها با نویسه‌های \*(``|\*('' جدا می‌شوند. استاندارد X/Open Curses نام پایانی را \*(``نام طولانی (long name)\*('' می‌نامد، و اشاره می‌کند که ممکن است شامل فاصله‌های خالی (blanks) باشد. .IP کامپایلر .B \%tic در صورتی که نام پایانی شامل فاصله‌های خالی نباشد هشدار می‌دهد، تا با مدخل‌های قدیمی .I \%term\%info که با نام طولانی به عنوان یک ویژگی اختیاری رفتار می‌کردند سازگار باشد. از نام طولانی معمولاً با عنوان فیلد توصیف (description) یاد می‌شود. .IP اگر پایگاه داده پایانه موجود باشد و مدخلی برای نوع پایانه کاربر وجود داشته باشد، .B \%tput توصیف آن را بدون خط جدید پایانی در جریان خروجی استاندارد گزارش می‌دهد. به \fB\%terminfo\fP(5) مراجعه کنید. .PP .I نکته: تغییر مسیر دادن خروجی \*(``\c .B "tput init\c" \*('' یا \*(``\c .B "tput reset\c" \*('' به یک فایل، تنها بخشی از کارهای آن‌ها را ضبط خواهد کرد. تغییرات در حالت‌های پایانه تحت تأثیر تغییر مسیر توصیف‌کننده فایل قرار نمی‌گیرند، چرا که حالت‌های پایانه از طریق \fI\%ioctl\fP(2) تغییر می‌یابند. .SS "نام‌های مستعار (Aliases)" اگر .B \%tput از طریق پیوندی با هر یک از نام‌های .BR clear ، .BR init یا .BR \%reset فراخوانی شود، به گونه‌ای عمل می‌کند که گویی با عملوند (شبه‌)قابلیت مربوطه اجرا شده است. به عنوان مثال، اجرای پیوندی به نام .B \%reset که به .B \%tput اشاره دارد، همان اثری را دارد که \%\*(``\c .B "tput \%reset\c" \*(''. .PP این ویژگی توسط .I \%ncurses 5.2 در سال ۲۰۰۰ معرفی شد. این قابلیت به ندرت استفاده می‌شود. .TP .B \%clear یک برنامه مجزا است، که هم کوچک‌تر بوده و هم با دفعات بیشتری اجرا می‌شود. .TP .B init هم‌نام با برنامه دیگری است که کاربرد گسترده‌ای دارد. .TP .B \%reset توسط ابزار \fB\%tset\fP(1) (همچنین از طریق پیوندی به نام .BR \%reset ) ارائه می‌شود. .SS "اندازه پایانه (Terminal Size)" در کنار شبه‌قابلیت‌ها (مانند .BR init )، دستور .B \%tput با .I cap-code ‌های .B lines و .B cols به طور ویژه رفتار می‌کند: این دستور ممکن است برای به‌دست آوردن اندازه پایانه تابع \fB\%setupterm\fP(3X) را فراخوانی کند. .bP نخست، .B \%tput تلاش می‌کند تا این قابلیت‌ها را از پایگاه داده پایانه به‌دست آورد. این کار معمولاً در شبیه‌سازهای پایانه شکست می‌خورد، زیرا آن‌ها فاقد اندازه پنجره ثابت هستند و در نتیجه این قابلیت‌ها را درج نمی‌کنند. .bP سپس اندازه پایانه را از سیستم‌عامل استعلام می‌کند، که معمولاً کارساز است، مگر اینکه اتصال از طریق یک خط سریال باشد که از \*(``NAWS\*('' (مذاکرات درباره اندازه پنجره) پشتیبانی نکند. .bP در نهایت، متغیرهای محیطی .I LINES و .IR \%COLUMNS را بررسی می‌کند، که ممکن است اندازه پایانه را لغو (override) کنند. .PP اگر گزینه .B \-T مشخص شده باشد، .B \%tput با فراخوانی .BR \%use_tioctl(TRUE) ، متغیرهای محیطی را نادیده گرفته و به سیستم‌عامل (یا در نهایت پایگاه داده پایانه) اتکا می‌کند. .SH "گزینهها (OPTIONS)" .TP 9n \" "-T type" + 2n .B \-S بیش از یک قابلیت را در هر بار فراخوانی .B \%tput بازیابی می‌کند. قابلیت‌ها باید به جای خط فرمان، از طریق جریان ورودی استاندارد به .B \%tput ارسال شوند (بخش \*(``مثالها (EXAMPLES)\*('' در زیر را ببینید). تنها یک .I cap-code در هر خط مجاز است. گزینه .B \-S معنای کدهای خروج .B 0 و .B 1 را تغییر می‌دهد (بخش \*(``کدهای خروج (EXIT STATUS)\*('' در زیر را ببینید). .IP برخی قابلیت‌ها به جای پارامترهای عددی از پارامترهای رشته‌ای استفاده می‌کنند. .B \%tput از یک جدول توکار و وجود پارامترها در ورودی خود برای تصمیم‌گیری در مورد نحوه تفسیر آن‌ها و استفاده از \fB\%tparm\fP(3X) بهره می‌برد. .TP .BI \-T\ type نوع پایانه .RB ( type ) را مشخص می‌کند. معمولاً این گزینه غیرضروری است، زیرا مقدار پیش‌فرض از متغیر محیطی .I TERM گرفته می‌شود. در صورت تعیین این گزینه، متغیرهای محیطی .I LINES و .I \%COLUMNS نیز نادیده گرفته می‌شوند. .TP .B \-v باعث می‌شود که .B \%tput با نمایش جزئیات (verbose) کار کرده و هشدارها را گزارش دهد. .TP .B \-V نسخه .I \%ncurses مرتبط با .B \%tput را گزارش می‌دهد و با وضعیت موفقیت خارج می‌شود. .TP .B \-x از تلاش \%\*(``\c .B "tput clear\c" \*('' برای پاک کردن بافر پیمایش به عقب (scrollback buffer) جلوگیری می‌کند. .SH "کدهای خروج (EXIT STATUS)" به‌طور معمول، باید کدهای خروج .BR \%tput را به صورت زیر تفسیر کرد: .PP .if n .ne 3 .if t .ne 2 .TS Lb Lb Lb Lx. کد خروج معنا در صورت عدم تعیین \-S _ 0 قابلیت بولی یا رشته‌ای موجود است 1 قابلیت بولی یا عددی موجود نیست 2 خطای استفاده یا عدم تعیین نوع پایانه 3 نوع پایانه ناشناخته است 4 کد قابلیت ناشناخته است >4 خطای سیستمی (4 + \fBerrno\fP) .TE .PP هنگامی که از گزینه .B \-S استفاده می‌شود، معنای برخی از کدهای خروج تغییر می‌کند: .PP .if n .ne 4 .if t .ne 3 .TS Lb Lb Lb Lx. کد خروج معنا در صورت تعیین \-S _ 0 تمامی عملوندها تفسیر شدند 1 استفاده نشده 4 برخی عملوندها تفسیر نشدند .TE .SH "متغیرهای محیطی (ENVIRONMENT)" دستور .B \%tput در صورتی که گزینه .B \-T مشخص نشده باشد، تا سه متغیر محیطی را می‌خواند. .TP 9n \" "COLUMNS" + 2n .I COLUMNS عرض صفحه نمایش را بر حسب نویسه‌ها مشخص می‌کند. .TP .I LINES ارتفاع صفحه نمایش را بر حسب نویسه‌ها مشخص می‌کند. .TP .I TERM نوع پایانه را مشخص می‌کند. هر نوع پایانه متمایز است، اگرچه بسیاری از آن‌ها شبیه به یکدیگر هستند. .SH "فایلها (FILES)" .TP .I /usr/share/tabset پایگاه داده مقداردهی اولیه نقاط توقف تب (tab stop) .TP .I /usr/share/terminfo پایگاه داده کامپایل‌شده توصیف پایانه‌ها .SH "قابلیت حمل (PORTABILITY)" در گذر زمان، دستور .B \%tput در .I \%ncurses از دو جنبه مهم با نسخه System\ V تفاوت داشته است که یکی از آن‌ها اکنون عمدتاً جنبه تاریخی دارد. .bP دستور .RB \%\*(`` tput .IR cap-code \*('' در خروجی استاندارد می‌نویسد، که لزوماً نیازی نیست یک دستگاه پایانه باشد. با این حال، عملوندهایی که حالت‌های پایانه را دستکاری می‌کنند ممکن است از خروجی استاندارد استفاده نکنند. .IP عملوندهای .B init و .B \%reset در .IR tput سیستم System\ V از منطق 4.1cBSD .IR tset برای دستکاری حالت‌های پایانه استفاده می‌کنند. این نسخه همان توصیف‌کننده‌های فایل (و .IR \%/dev/tty ) را مانند .I \%ncurses فعلی برای ارتباط با یک دستگاه پایانه بررسی می‌کند، و اگر هیچ‌کدام متصل نباشند، در نهایت یک پایانه با نرخ ۱۲۰۰ باود (baud) را فرض می‌کند. هنگام به‌روزرسانی حالت‌های پایانه، خطاها را نادیده می‌گیرد. .IP تا قبل از .I \%ncurses 6.1 (بخش \*(``تاریخچه (HISTORY)\*('' در زیر را ببینید)، دستور .B \%tput حالت‌های پایانه را تغییر نمی‌داد. این دستور اکنون از طرحی مشابه System\ V استفاده می‌کند و از توابعی مشترک با .B \%tset (و در نهایت بر پایه 4.4BSD .IR tset ) بهره می‌برد. اگر نتواند پایانه‌ای را باز کند (برای نمونه، هنگامی که توسط \fIcron\fP(1) اجرا می‌شود)، .B \%tput با کد خطا خارج می‌شود. .bP دستور .I tput در System\ V فرض می‌کند که نوع یک عملوند .I cap-code عددی است اگر تمام نویسه‌های مقدار آن اعداد ده‌دهی باشند؛ در غیر این صورت، با .I cap-code به عنوان یک قابلیت رشته‌ای رفتار می‌کند. .IP بیشتر پیاده‌سازی‌هایی که از عملوندهای .I cap-code پشتیبانی می‌کنند، از تابع \fB\%tparm\fP(3X) برای بسط پارامترهای آن بهره می‌برند. آن تابع انتظار ترکیبی از پارامترهای عددی و رشته‌ای را دارد، که مستلزم آن است که .B \%tput بداند از کدام نوع استفاده کند. .IP دستور .B \%tput در .I \%ncurses از یک جدول برای تعیین انواع پارامترها برای عملوندهای استاندارد .I cap-code و از یک تابع داخلی برای تحلیل عملوندهای غیراستاندارد .I cap-code استفاده می‌کند. .IP اگرچه این روش قابل اعتمادتر از ابزار System\ V است، اما این تحلیل یک مشکل قابلیت حمل ایجاد می‌کند. یکی از توسعه‌دهندگان OpenBSD تابع کتابخانه‌ای داخلی را از .I \%ncurses اقتباس کرد تا دستور .I tput مبتنی بر .IR termcap در NetBSD را به .IR \%term\%info پورت کند، و آن را طوری تغییر داد تا چندین .I cap-code (و پارامتر) را در خط فرمان تفسیر نماید. برنامه‌های قابل حمل نباید به این ویژگی تکیه کنند؛ .I \%ncurses این قابلیت را برای پشتیبانی از برنامه‌هایی که اختصاصاً برای OpenBSD نوشته شده‌اند ارائه می‌دهد. .PP پیاده‌سازی .I tput در .IR \%ncurses ، برخلاف سایرین، در صورتی که پشتیبانی از .I termcap کامپایل شده باشد، هم کدهای .I termcap و هم کدهای .I \%term\%info را به عنوان .I cap-code می‌پذیرد. با این حال در این حالت، کدهای .I termcap و .I \%term\%info دارای دو مورد ابهام هستند؛ که .I \%ncurses کد .I \%term\%info را فرض در نظر می‌گیرد. .bP کد .I cap-code با عنوان .B dl در .I termcap به معنای .B \%delete_line است اما در .I \%term\%info به معنای .BR \%parm_delete_line . سامانه .I termcap از کد .B DL برای .BR \%parm_delete_line استفاده می‌کند. سامانه .I \%term\%info از کد .B dl1 برای .BR \%delete_line استفاده می‌نماید. .bP کد .I cap-code با عنوان .B ed در .I termcap به معنای .B \%exit_delete_mode است اما در .I \%term\%info به معنای .BR \%clr_eos . سامانه .I termcap از کد .B cd برای .BR \%clr_eos استفاده می‌کند. سامانه .I \%term\%info از کد .B rmdc برای .BR \%exit_delete_mode استفاده می‌نماید. .PP عملوند .BR \%longname ، گزینه .B \-S و ویژگی‌های جایگزینی پارامتر استفاده‌شده در مثال .B cup در زیر، پیش از SVr4 (سال ۱۹۸۹) در .I curses شرکت‌های AT&T/USL پشتیبانی نمی‌شدند. سپس، نسخه 4.3BSD-Reno (سال ۱۹۹۰) پشتیبانی از .BR \%longname را افزود، و در سال ۱۹۹۴، نسخه NetBSD پشتیبانی از ویژگی‌های جایگزینی پارامتر را اضافه کرد. .PP استاندارد IEEE Std 1003.1/The Open Group Base Specifications Issue\ 7 (POSIX.1-2008) تنها عملوندهای .BR clear ، .BR init و .B \%reset را مستند می‌کند. چند نکته جالب توجه از این انتخاب حاصل می‌شود. .bP سامانه .I \%ncurses از .B clear همانند هر .I cap-code استاندارد دیگری پشتیبانی می‌کند. سایر موارد .RB ( init و .BR \%longname ) با قابلیت‌های پایانه متناظر نیستند. .bP دستور .I tput در سیستم‌های مبتنی بر SVr4 مانند سولاریس (Solaris)، IRIX64 و HP-UX، و همچنین سیستم‌های دیگر مانند AIX و Tru64 نیز از عملوندهای استاندارد .I cap-code پشتیبانی می‌کنند. .bP برخی پلتفرم‌ها مانند FreeBSD در دستورات .I tput مربوط به خود، به جای کدهای قابلیت .I \%term\%info کدهای .I termcap را می‌شناسند. از سال ۲۰۱۰، دستور .I tput در NetBSD از کدهای .I \%term\%info استفاده می‌کند. پیش از آن، این سیستم (مانند FreeBSD) کدهای .I termcap را می‌شناخت. .IP از سال ۲۰۲۱، سیستم‌عامل FreeBSD از .B tput مربوط به .I \%ncurses استفاده می‌کند که برای هر دو سامانه .I \%term\%info (که ابتدا بررسی می‌شود) و .I termcap (به عنوان جایگزین پشتیبان) پیکربندی شده است. .PP از آنجا که (ظاهراً) تمامی سیستم‌های یونیکس \fIدارای گواهی‌نامه رسمی (certified)\fP از مجموعه کامل کدهای قابلیت پشتیبانی می‌کنند، دلیل مستندسازی تنها تعداد معدودی از آن‌ها ممکن است در ابتدا مشخص نباشد. .bP استاندارد X/Open Curses Issue\ 7 دستور .B tput را به شکل متفاوتی مستند می‌کند، یعنی همراه با .I cap-code و سایر ویژگی‌های به‌کاررفته در این پیاده‌سازی. .bP به عبارت دیگر، دو استاندارد برای .IR tput وجود دارد: پوزیکس (POSIX، یک زیرمجموعه) و X/Open Curses (پیاده‌سازی کامل). پوزیکس برای پرهیز از پیچیدگی‌های گنجاندن X/Open Curses و پایگاه داده قابلیت‌های پایانه، تنها یک زیرمجموعه را مستند کرده است. .bP گرچه مسلماً نوشتن برنامه‌ای برای .I tput بدون استفاده از .I curses امکان‌پذیر است، اما هیچ سیستمی با پیاده‌سازی .I curses ابزار .IR tput ی ارائه نمی‌دهد که همزمان از .I cap-code ‌های استاندارد پشتیبانی نکند. .PP استاندارد X/Open Curses Issue\ 7 (سال ۲۰۰۹) نخستین نسخه‌ای است که ابزارها را مستند می‌کند. با این حال، این بخش از X/Open Curses از رویه‌های رایج و عملی (یعنی رفتار .I curses در System\ V) پیروی نمی‌کند. .bP این استاندارد کد خروج ۴ را به \*(``عملوند نامعتبر (invalid operand)\*('' اختصاص می‌دهد، که ممکن است معنایی مشابه با \*(``قابلیت ناشناخته (unknown capability)\*('' داشته باشد. برای مثال، کد منبع .I xcurses در سولاریس در این مورد از اصطلاح \*(``invalid\*('' استفاده می‌کند. .bP این استاندارد کد خروج ۲۵۵ را به یک متغیر عددی اختصاص می‌دهد که در پایگاه داده .I \%term\%info مشخص نشده باشد. این امر احتمالاً یک خطای مستندسازی است، که در آن مقدار \*(``\-1\*('' نوشته‌شده در خروجی استاندارد (که نشان‌دهنده یک قابلیت عددی غایب یا لغوشده است) با یک کد خروج (بدون علامت) اشتباه گرفته شده است. .PP پیاده‌سازی‌های مختلف System\ V (مانند AIX، HP-UX، Solaris) از همان کدهای خروجی .I \%ncurses استفاده می‌کنند. .PP سامانه .I curses در NetBSD کدهای خروجی را مستند می‌کند که نه با .I \%ncurses و نه با X/Open Curses مطابقت دارند. .SH "تاریخچه (HISTORY)" بیل جوی (Bill Joy) در جریان توسعه 4BSD در اکتبر ۱۹۸۰ دستوری به نام .I tput نوشت. این نسخه اولیه تنها صفحه را پاک می‌کرد و در توزیع‌های رسمی عرضه نشد. .PP سیستم System\ V دستور .I tput متفاوتی را توسعه داد. .bP نسخه SVr2 (سال ۱۹۸۴) یک .I tput ابتدایی ارائه کرد که پارامتر را با تک‌تک نام‌های قابلیت‌ها بررسی می‌کرد و مقدار متناظر را برمی‌گرداند. این نسخه از .I tput برای قابلیت‌های پارامتردار از تابع \fB\%tparm\fP(3X) استفاده نمی‌کرد. .bP نسخه SVr3 (سال ۱۹۸۷) آن را با برنامه‌ای گسترده‌تر جایگزین کرد که پشتیبانی آن از عملوندهای .B init و .B \%reset (بیش از نیمی از برنامه)، ویژگی .B \%reset ابزار .I tset در BSD (نوشته اریک آلمن / Eric Allman) را در خود گنجانده بود. .bP نسخه SVr4 (سال ۱۹۸۹) راه‌اندازی اولیه رنگ‌ها را با استفاده از قابلیت‌های .B \%orig_colors .RB ( oc ) و .B \%orig_pair .RB ( op ) در منطق .B init خود افزود. .PP کیث بوستیک (Keith Bostic) دستور .I tput در BSD را برای گنجاندن در 4.3BSD-Reno (سال ۱۹۹۰) بازطراحی کرد، و با پذیرش برخی پارامترهای نام‌گذاری‌شده برای (شبه‌)قابلیت‌های .IR \%term\%info : .BR clear ، .BR init ، .BR \%longname و .BR \%reset ، کاری کرد که از رابط کاربری .I tput در System\ V پیروی کند. با این حال، چون او تنها .I termcap را در دسترس داشت، کدهای .I termcap را برای سایر قابلیت‌ها می‌پذیرفت. همچنین، .I tput بوستیک در BSD برخلاف .I tset قبلی BSD، حالت‌های پایانه را تغییر نمی‌داد. در همان زمان، بوستیک یک اسکریپت پوسته به نام \*(``clear\*('' افزود که از .I tput برای پاک کردن صفحه استفاده می‌کرد. این موارد به پیاده‌سازی \*(``مدرن\*('' BSD از .I tput تبدیل شدند. .PP منشأ پیدایش دستور .B \%tput در .I \%ncurses فراتر از هر دو سیستم System\ V و BSD، در بسته .I \%mytinfo نوشته راس ریج (Ross Ridge) قرار دارد که در دسامبر ۱۹۹۲ در .I comp.sources.unix منتشر شد. برنامه ریج نسبت به برنامه BSD، استفاده پیشرفته‌تری از قابلیت‌های پایانه به عمل می‌آورد. اریک ریموند (Eric Raymond) از آن برنامه .I tput (و بخش‌های دیگر .IR \%mytinfo ) در ژوئن ۱۹۹۵ در .I \%ncurses استفاده کرد. ریموند با گنجاندن بخش‌های مربوط به قابلیت‌های پایانه تقریباً بدون تغییر، بهبودهایی در نحوه مدیریت پارامترهای خط فرمان اعمال نمود. .PP پیش از .I \%ncurses 6.1 (سال ۲۰۱۸)، ابزارهای .B \%tset و .B \%tput آن با یکدیگر تفاوت داشتند. .bP دستور .B \%tset مؤثرتر بود و حالت‌های پایانه و نویسه‌های ورودی ویژه را بازنشانی می‌کرد. .bP از سوی دیگر، مجموعه‌ابزار قابلیت‌های پایانه در .BR \%tset برای بازنشانی پایانه محدودتر بود؛ این برنامه تنها معادل‌های .B \%reset_1string .RB ( rs1 )، .B \%reset_2string .RB ( rs2 ) و .B \%reset_file .RB ( rf ) را داشت، و فاقد ویژگی‌های به‌روزرسانی حاشیه‌ها و نقاط توقف تب در .B \%tput بود. .PP برنامه .I \%reset به‌طور سنتی به دلیل توانایی در بازنشانی حالت‌های پایانه و نویسه‌های ورودی ویژه، یک نام مستعار برای .B \%tset بوده است. .PP از زمان انتشار .I \%ncurses 6.1، ویژگی‌های \*(``بازنشانی (reset)\*('' در این دو برنامه (عمدتاً) یکسان شده‌اند. دو تفاوت جزئی باقی مانده است: .bP هنگام صدور بازنشانی، برنامه .B \%tset بررسی می‌کند که آیا دستگاه شبیه به یک شبه‌پایانه (pseudoterminal) است یا خیر (مانند آنچه ممکن است توسط یک برنامه شبیه‌ساز پایانه استفاده شود)، و اگر نباشد، یک ثانیه صبر می‌کند مبادا با یک پایانه سخت‌افزاری در ارتباط باشد. .bP این دو برنامه رشته‌های راه‌اندازی اولیه پایانه را در جریان‌های متفاوتی می‌نویسند؛ یعنی خطای استاندارد برای .B \%tset و خروجی استاندارد برای .BR \%tput . .SH "مثالها (EXAMPLES)" .TP .B "tput init" راه‌اندازی اولیه پایانه با توجه به نوع پایانه مشخص‌شده در متغیر محیطی .IR TERM . اگر سیستم در هنگام ورود به طور مطمئن پایانه را راه‌اندازی نکند، این دستور می‌تواند پس از صادر کردن (export) متغیر محیطی .I TERM در فایل .I \%$HOME/.profile گنجانده شود. .TP .B "tput \-T5620 reset" بازنشانی یک پایانه AT&T 5620، با نادیده گرفتن نوع پایانه در متغیر محیطی .IR TERM . .TP .B "tput cnorm" تنظیم مکان‌نما بر روی وضوح و دید عادی (normal visibility). .TP .B "tput home" انتقال مکان‌نما به سطر ۰، ستون ۰: گوشه بالا سمت چپ صفحه نمایش، که معمولاً به عنوان موقعیت \*(``آغازه (home)\*('' مکان‌نما شناخته می‌شود. .TP .B "tput clear" پاک کردن صفحه نمایش: نوشتن مقدار قابلیت .B \%clear_screen در جریان خروجی استاندارد. .TP .B "tput cols" گزارش تعداد ستون‌های مورد استفاده توسط نوع پایانه فعلی. .TP .B "tput \-Tadm3a cols" گزارش تعداد ستون‌های مورد استفاده توسط یک پایانه ADM-3A. .TP .B "strong=\(gatput smso\(ga normal=\(gatput rmso\(ga" تنظیم متغیرهای پوسته بر روی مقادیر قابلیت‌ها: .B strong و .BR normal به ترتیب برای شروع و پایان دادن به حالت برجسته (stand-out) برای پایانه. می‌توان از این‌ها برای نمایش اعلان خط فرمان (prompt) استفاده کرد. .IP .EX .RS 14 printf "${strong}Username:${normal} " .RE .EE .TP .B "tput hc" مشخص کردن این موضوع از طریق کد خروج که آیا پایانه یک دستگاه چاپ روی کاغذ (hard copy) است یا خیر. .TP .B "tput cup 23 4" انتقال مکان‌نما به سطر ۲۳، ستون ۴. .TP .B "tput cup" گزارش مقدار قابلیت .B \%cursor_address .RB ( cup ) (مورد استفاده برای جابه‌جایی مکان‌نما)، بدون جایگزین کردن هیچ پارامتری. .TP .B "tput longname" گزارش توصیف پایگاه داده .I \%term\%info از نوع پایانه مشخص‌شده در متغیر محیطی .IR TERM . .TP .B "tput \-S" پردازش چندین قابلیت به صورت یکجا. گزینه .B \-S می‌تواند به شکل مفیدی همراه با \*(``here document\*('' پوسته استفاده شود. .IP .EX .nf .RB $\ "tput \-S <\ clear .RB >\ "cup 10 10" .RB >\ bold .RB >\ ! .fi .EE .IP دستورات فوق، صفحه نمایش را پاک می‌کنند، مکان‌نما را به موقعیت (10, 10) می‌برند و حالت پررنگ (bold / روشنایی مضاعف) را فعال می‌کنند. .TP .B "tput clear cup 10 10 bold" انجام همان اقدامات نشان داده شده در مثال قبلی با \%\*(``\c .B "tput \-S\c" \*(''. .SH "همچنین ببینید (SEE ALSO)" \fB\%clear\fP(1), \fB\%stty\fP(1), \fB\%tabs\fP(1), \fB\%tset\fP(1), \fB\%curs_termcap\fP(3X), \fB\%terminfo\fP(5), \fB\%user_caps\fP(5)