GNU/Linux >> Belajar Linux >  >> Linux

Manfaat Tujuan Ny Untuk Keluar dari Urutan Melalui Tput?

Di '.*rc people orang ' file yang saya lihat online atau dalam berbagai kode, saya cenderung melihat banyak orang yang secara manual menggunakan urutan pelarian ANSI daripada menggunakan tput .

Saya memahami bahwa tput lebih universal/aman, jadi ini membuat saya bertanya-tanya:

Apakah ada alasan obyektif seseorang harus menggunakan urutan pelarian sebagai pengganti tput ? (Portabilitas, ketahanan terhadap kesalahan, terminal yang tidak biasa…?)

Jawaban yang Diterima:

tput dapat menangani ekspresi (misalnya di sgr dan setaf ) yang menurut shell-scripter kurang dari dapat digunakan. Untuk mendapatkan gambaran tentang apa yang terlibat, lihat output dari infocmp dengan -f (pemformatan) opsi diterapkan. Berikut adalah salah satu contoh menggunakan string tersebut dari deskripsi terminfo xterm:

xterm-16color|xterm with 16 colors,
        colors#16,
        pairs#256,
        setab=E[
                %?
                        %p1%{8}%<
                        %t%p1%{40}%+
                %e
                        %p1%{92}%+
                %;%dm,
        setaf=E[
                %?
                        %p1%{8}%<
                        %t%p1%{30}%+
                %e
                        %p1%{82}%+
                %;%dm,
        setb=
                %p1%{8}%/%{6}%*%{4}%+E[%d%p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m,
        setf=
                %p1%{8}%/%{6}%*%{3}%+E[%d%p1%{8}%m%Pa
                %?%ga%{1}%=
                        %t4
                %e%ga%{3}%=
                        %t6
                %e%ga%{4}%=
                        %t1
                %e%ga%{6}%=
                        %t3
                %e%ga%d
                %;
                m,
        use=xterm+256color,
        use=xterm-new,

Pemformatan membagi segalanya - skrip atau program untuk melakukan hal yang sama harus mengikuti tikungan dan belokan itu. Kebanyakan orang menyerah dan hanya menggunakan string termudah.

Fitur 16-warna dipinjam dari IBM aixterm, yang memetakan 16 kode masing-masing untuk latar depan dan latar belakang ke dalam dua rentang;

  • depan ke 30-37, dan 90-97
  • latar belakang 40-47, dan 100-107

Skrip sederhana

#!/bin/sh
TERM=xterm-16color
export TERM
printf '    %12s %12sn' Foreground Background
for n in $(seq 0 15)
do
    F=$(tput setaf $n | cat -v)
    B=$(tput setab $n | cat -v)
    printf '%2d  %12s %12sn' $n "$F" "$B"
done

dan output menunjukkan cara kerjanya:

      Foreground   Background
 0        ^[[30m       ^[[40m
 1        ^[[31m       ^[[41m
 2        ^[[32m       ^[[42m
 3        ^[[33m       ^[[43m
 4        ^[[34m       ^[[44m
 5        ^[[35m       ^[[45m
 6        ^[[36m       ^[[46m
 7        ^[[37m       ^[[47m
 8        ^[[90m      ^[[100m
 9        ^[[91m      ^[[101m
10        ^[[92m      ^[[102m
11        ^[[93m      ^[[103m
12        ^[[94m      ^[[104m
13        ^[[95m      ^[[105m
14        ^[[96m      ^[[106m
15        ^[[97m      ^[[107m

Angka dibagi karena aixterm menggunakan rentang 30-37 dan 40-47 untuk mencocokkan warna ECMA-48 (juga dikenal sebagai “ANSI”), dan menggunakan rentang 90-107 untuk kode tidak didefinisikan dalam standar.

Berikut adalah tangkapan layar dengan xterm menggunakan TERM=xterm-16color , tempat Anda dapat melihat efeknya.

Terkait:Belajar Bahasa Inggris – Kata untuk sesuatu yang bermuatan emosional dengan cara yang mengurangi kemungkinan mendekati subjek dari sudut pandang objektif?

Bacaan lebih lanjut:

  • infocmp bandingkan atau cetak deskripsi terminfo
  • tput , reset menginisialisasi terminal atau basis data terminfo kueri
  • ECMA-48:Fungsi Kontrol untuk Kumpulan Karakter Berkode
  • aixterm Perintah
  • Bukankah warna cerah sama dengan bold? (FAQ XTerm)

Linux
  1. Bagaimana Cara Menghindari Kutipan Di Shell?

  2. Ssh – Redirect Stdout Melalui Ssh?

  3. Ssh – Mengapa Firefox Sangat Lambat Dibanding Ssh?

  1. Escape Strings Untuk Diposting Melalui Curl?

  2. Apakah Urutan Escape Warna Terminal Ditetapkan Di Mana Saja Untuk Bash?

  3. Oring Dengan Benar Dalam Perintah Atas Ssh?

  1. Bagaimana cara mengulang direktori di Linux?

  2. Cara membedakan direktori melalui ssh

  3. Btrf atas mdadm raid6?