Apakah mungkin untuk mengubah atribut font dari output echo baik di zsh atau bash?
Yang saya inginkan adalah sesuatu yang mirip dengan:
echo -n "This is the font: normal "
echo -n $font=italic "italic,"
echo -n $font=bold "bold,"
echo -n "and"
echo -n $font=small "small".
sehingga tercetak:“Ini fontnya:normal, italic , tebal , ” dalam satu baris teks.
Jawaban yang Diterima:
Pada sebagian besar, jika tidak semua emulator terminal, Anda tidak dapat mengatur ukuran font yang berbeda atau font yang berbeda, hanya warna dan beberapa atribut (tebal, bergaris bawah, menonjol).
Di bash (atau di zsh atau shell lainnya), Anda dapat menggunakan urutan escape terminal secara langsung (terlepas dari beberapa yang eksotis, semua terminal mengikuti petunjuk xterm akhir-akhir ini). CSI
adalah ESC [
, ditulis $'\e['
di bash. Urutan escape untuk mengubah atribut adalah CSI Ps m
.
echo $'\e[32;1mbold red\e[0mplain\e[4munderlined'
Zsh memiliki fungsi yang nyaman untuk itu.
autoload -U colors
colors
echo $bold_color$fg[red]bold red${reset_color}plain$'\e'$color[underline]munderlined
Atau dapat melakukannya sebagai bagian dari ekspansi cepat , juga dilakukan dengan print -P
, atau %
tanda perluasan parameter :
print -P '%F{red}%Bbold%b red%f %Uunderline%u'