man/text
man · Metin İşleme

$ tput

Bölüm 1 · Metin İşleme

bir terminali başlatır veya `terminfo` veritabanını sorgular

Özet

tput [-T tür] yetenek_adı [parametre ...]
tput [-T tür] init
tput [-T tür] reset
tput [-T tür] longname
tput -S
tput -V

Açıklama

tput yardımcı programı, terminale bağlı yeteneklerin ve bilgilerin değerlerini kabuk için kullanılabilir hale getirmek, terminali başlatmak ya da sıfırlamak veya istenen terminal türünün uzun adını döndürmek için terminfo veritabanını kullanır.

Sonuç, sorgulanan yeteneğin türüne bağlıdır:

  • dize: tput, dizeyi standart çıktıya yazar. Sonuna yeni satır karakteri eklemez.
  • tamsayı: tput, ondalık değeri sonuna yeni satır karakteri ekleyerek standart çıktıya yazar.
  • mantıksal: tput yalnızca çıkış kodunu ayarlar. Terminal bu yeteneğe sahipse doğru için 0, sahip değilse yanlış için 1 döndürür ve standart çıktıya hiçbir şey yazmaz.

Standart çıktıda döndürülen bir değeri kullanmadan önce uygulama çıkış kodunu denetlemelidir. Örneğin kabukta $? değeri 0 olmalıdır. Yeteneklerin ve ilgili yetenek adlarının tam listesi için terminfo(5) sayfasına bakın.

Seçenekler

  • -T tür: Terminal türünü belirtir. Normalde bu seçenek gerekmez, çünkü varsayılan değer TERM ortam değişkeninden alınır. -T belirtilirse LINES ve COLUMNS kabuk değişkenleri de yok sayılır.
  • -S: Tek bir tput çağrısında birden fazla yetenek işlenmesine izin verir. Yetenekler komut satırı yerine standart girdiden geçirilmelidir. Her satırda yalnızca bir yetenek adı bulunabilir. Bu seçenek, 0 ve 1 mantıksal ve dize çıkış kodlarının anlamını değiştirir.
  • -V: Programda kullanılan ncurses sürümünü bildirir ve çıkar.

İşlenenler

  • yetenek_adı: terminfo veritabanındaki yeteneği belirtir. termcap desteği derlenmişse yetenek için termcap adı da kabul edilir.
  • parametre: Yetenek parametre alan bir dizeyse, parametreler dizeye yerleştirilir.

Parametrelerin çoğu sayıdır. Yalnızca birkaç terminfo yeteneği dize parametreleri gerektirir; tput, hangilerinin dize olarak geçirileceğine karar vermek için bir tablo kullanır. Normalde ikame işlemi için tparm(3X) işlevi kullanılır. Yetenek için parametre verilmezse tput, ikame yapmadan dizeyi yazar.

Özel İşlenenler

tput aşağıdaki özel işlenenleri destekler:

  • init: Kullanıcının terminali için terminfo girişi varsa terminali başlatır.
  • reset: Terminali sıfırlar. Sıfırlama dizeleri yoksa, varsa başlatma dizelerini kullanır; aksi durumda init ile aynı davranır.
  • longname: Kullanıcının terminali için terminfo girişi varsa terminalin uzun adını yazdırır.

init kullanıldığında şu işlemler yapılır:

  1. Varsa, terminalin başlatma dizeleri terminfo(5) sayfasındaki Sekmeler ve Başlatma bölümünde açıklandığı gibi çıktı olarak verilir.
  2. Girişte belirtilen tüm gecikmeler, örneğin yeni satır gecikmeleri, tty sürücüsünde ayarlanır.
  3. Sekmelerin genişletilmesi, girişteki belirtimlere göre açılır veya kapatılır.
  4. Sekmeler genişletilmiyorsa standart sekmeler ayarlanır; bu her 8 boşlukta bir sekme anlamına gelir.

Bir giriş bu işlemlerden biri için gerekli bilgileri içermiyorsa ilgili işlem sessizce atlanır.

reset kullanıldığında, varsa terminalin sıfırlama dizeleri (rs1, rs2, rs3, rf) çıktı olarak verilir. Sıfırlama dizeleri yoksa ancak başlatma dizeleri varsa başlatma dizeleri çıktı olarak verilir.

longname kullanıldığında, terminalin uzun adı çıktı olarak verilir. Uzun ad, terminfo veritabanındaki terminal tanımının ilk satırındaki son addır; ayrıntılar için term(5) sayfasına bakın.

tput, reset adlı bir bağlantı üzerinden çağrılırsa tput reset ile aynı etkiye sahip olur. Benzer davranış için tset(1) sayfasına bakın.

Örnekler

Terminali TERM ortam değişkenindeki terminal türüne göre başlatır:

tput init

TERM değerini geçersiz kılarak bir AT&T 5620 terminalini sıfırlar:

tput -T5620 reset

İmleci 0. satır, 0. sütuna taşımak için gereken diziyi gönderir:

tput cup 0 0

Geçerli terminal için ekranı temizleme dizisini yazdırır:

tput clear

Geçerli terminal için sütun sayısını yazdırır:

tput cols

450 terminali için sütun sayısını yazdırır:

tput -T450 cols

Geçerli terminal için belirginleştirme modunu başlatan ve sonlandıran kabuk değişkenlerini ayarlar:

bold=`tput smso`
offbold=`tput rmso`
echo "${bold}Lütfen adınızı yazın: ${offbold}\c"

Geçerli terminalin hard-copy terminal olup olmadığını çıkış kodu üzerinden belirtir:

tput hc

İmleci 23. satır, 4. sütuna taşımak için gereken diziyi gönderir:

tput cup 23 4

Parametre yerleştirmeden imleç hareketi için terminfo dizesini gönderir:

tput cup

TERM ortam değişkeninde belirtilen terminal türü için terminfo veritabanındaki uzun adı yazdırır:

tput longname

Tek bir çağrıda birkaç yeteneği işler:

tput -S <<!
clear
cup 10 10
bold
!

Bu son örnek ekranı temizler, imleci 10,10 konumuna taşır ve kalın modu açar. Liste, tek başına bir satırda yer alan ünlem işaretiyle sonlandırılır.

Dosyalar

  • /usr/share/terminfo: Derlenmiş terminal tanım veritabanı.
  • /usr/share/tabset/*: Bazı terminaller için terminale çıktı verilmeye uygun biçimdeki sekme ayarları. Bunlar kenar boşluklarını ve sekmeleri ayarlayan kaçış dizileridir. Daha fazla bilgi için terminfo(5) sayfasındaki Sekmeler ve Başlatma bölümüne bakın.

Çıkış Kodları

-S seçeneği kullanılırsa tput, her satırdaki hataları denetler. Hata bulunursa çıkış kodunu 4 artı hatalı satır sayısı olarak ayarlar. Hata bulunmazsa çıkış kodu 0 olur.

-S kullanıldığında hangi satırın başarısız olduğuna dair ayrı bir gösterge verilmez; bu nedenle çıkış kodu 1 görünmez. Çıkış kodları 2, 3 ve 4 olağan anlamlarını korur.

-S kullanılmazsa çıkış kodu yetenek türüne bağlıdır:

  • mantıksal: Doğru için 0, yanlış için 1 döndürülür.
  • dize: Yetenek bu terminal türü için tanımlanmışsa 0 döndürülür ve değer standart çıktıya yazılır. Tanımlanmamışsa 1 döndürülür ve standart çıktıya hiçbir şey yazılmaz.
  • tamsayı: Yetenek tanımlanmış olsun veya olmasın her zaman 0 döndürülür. Yetenek bu terminal türü için tanımlanmamışsa standart çıktıya -1 yazılır.
  • diğer: reset veya init ilgili dosyaları bulamazsa çıkış kodu 4 + errno olarak ayarlanır.

Diğer tüm çıkış kodları hata belirtir.

Teşhisler

tput aşağıdaki hata durumlarında ilgili çıkış kodlarını ayarlar:

Çıkış kodu Anlam
0 Sayısal bir yetenek bu terminal türü için terminfo(5) veritabanında belirtilmemiş olabilir. Örneğin tput -T450 lines veya tput -T2621 xmc.
1 Hata mesajı yazdırılmaz; ayrıntı için çıkış kodları bölümüne bakın.
2 Kullanım hatası.
3 Bilinmeyen terminal türü veya eksik terminfo veritabanı.
4 Bilinmeyen terminfo yeteneği.
>4 -S seçeneğinde hata oluştu.

Taşınabilirlik

longname ve -S seçenekleri ile cup örneğinde kullanılan parametre ikamesi özellikleri, BSD curses veya SVr4 öncesindeki AT&T/USL curses tarafından desteklenmez.

X/Open yalnızca clear, init ve reset işlenenlerini belgeler. Bu uygulamada clear, yetenek adı desteğinin bir parçasıdır. Solaris, IRIX64 ve HPUX gibi SVr4 tabanlı sistemlerdeki diğer tput uygulamaları ile AIX ve Tru64 gibi sistemler de yetenek adı işlenenlerini destekler.

FreeBSD ve NetBSD gibi bazı platformlar, ilgili tput komutlarında terminfo yetenek adları yerine termcap adlarını tanır.

Yetenek adı işlenenlerini destekleyen çoğu uygulama, parametreleri genişletmek için tparm işlevini kullanır. Bu işlev sayısal ve dize parametrelerinin karışımını bekler ve tput uygulamasının hangi türü kullanacağını bilmesini gerektirir. Bu uygulama standart yetenek adı işlenenleri için bunu belirlemek üzere bir tablo, standart dışı yetenek adı işlenenlerini analiz etmek için de dahili bir kütüphane işlevi kullanır. Diğer uygulamalar, yalnızca basamak içeren bir işlenenin sayı olarak kullanılmasının amaçlandığını tahmin edebilir.

Ayrıca Bakınız

clear(1), stty(1), tabs(1), terminfo(5), curs_termcap(3X)

Bu belge, ncurses sürüm 5.7'yi (yama 20081102) tanımlar.

tput(1)