tput
dapat menangani ekspresi (misalnya dalam sgr
dan setaf
) yang ditemukan oleh shell-scripter yang kurang berguna. Untuk mendapatkan gagasan tentang apa yang terlibat, lihat output dari infocmp
dengan opsi -f
(pemformatan) yang 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 - sebuah skrip atau program untuk melakukan hal yang sama harus mengikuti tikungan dan belokan tersebut. Kebanyakan orang menyerah dan hanya menggunakan string yang paling mudah.
Fitur 16 warna dipinjam dari IBM aixterm, yang memetakan 16 kode masing-masing untuk latar depan dan latar belakang ke dalam dua rentang;
- foreground ke 30-37, dan 90-97
- latar belakang ke 40-47, dan 100-107
Sebuah skrip sederhana
#!/bin/sh
TERM=xterm-16color
export TERM
printf ' %12s %12s\n' Foreground Background
for n in $(seq 0 15)
do
F=$(tput setaf $n | cat -v)
B=$(tput setab $n | cat -v)
printf '%2d %12s %12s\n' $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-angka dibagi karena aixterm menggunakan rentang 30-37 dan 40-47 untuk mencocokkan warna ECMA-48 (juga dikenal sebagai "ANSI"), dan menggunakan kisaran 90-107 untuk kode yang tidak didefinisikan dalam standar.
Berikut ini adalah screenshot dengan xterm yang digunakan TERM=xterm-16color
, di mana Anda dapat melihat efeknya.
Bacaan lebih lanjut:
printf
dan urutan pelarian ANSI, tetapitput
gagal (setidaknya pada kotak saya).