Pengantar
Grafik echo
perintah mengeluarkan string yang diberikan ke pipa keluaran standar, biasanya menunjuk ke terminal. Meskipun pipa keluaran standar dapat menunjuk ke antarmuka lain โ echo
perintah biasanya digunakan untuk mencetak dan menampilkan pesan di terminal. Secara default, teks dari pesan yang ditampilkan mewarisi warna teks lain di terminal (yang dapat disesuaikan dengan sendirinya). Namun โ ada beberapa cara Anda dapat mengubah warna keluaran echo
โ baik untuk string individu dan untuk seluruh pesan.
Dalam panduan singkat ini, kita akan melihat bagaimana Anda dapat mengubah warna output dari
echo
dalam sistem berbasis Linux, menggunakan kode pelarian ANSI,tput
dan bagaimana Anda dapat membuat proses ini tidak terlalu bertele-tele dalam skrip Bash.
Ubah Warna Keluaran dengan ANSI Escape Codes
Cara termudah untuk mengubah warna adalah melalui urutan/kode escape ANSI. Semua kode pelarian ANSI dimulai dengan Escape
karakter, yang dapat direpresentasikan dalam berbagai format โ 27
dalam desimal, x1B
dalam heksadesimal, sebagai kunci kontrol ^[
, atau 33
dalam bentuk oktal. Urutan kemudian diikuti oleh perintah:
33[command
Dimana kurung buka (Pengendali Urutan Kontrol) adalah opsional, tetapi membantu memisahkan perintah dari karakter escape. Ketika Anda meletakkan Kode warna sebagai perintah, itu mengubah warna teks yang akan datang:
33[0;34
0;34
adalah kode untuk warna biru, misalnya. Dengan ini saja, Anda dapat mengubah warna teks di echo
dengan:
33[0;34Text
Dimana Text
akan berwarna biru. Atau, pertimbangkan skrip bash sederhana untuk dicetak "Selamat Datang di Perancis" dalam warna bendera Prancis:
#!/bin/bash
BLUE='33[0;34m'
WHITE= '33[0;37m'
RED= '33[0;31m'
echo -e "${Blue}Welcome ${WHITE}to ${RED}France"
Opsional -e
bendera echo
perintah memungkinkan Anda untuk menggunakan karakter khusus seperti n
(baris baru) dan t
(tab) di dalam string input.
Setelah Anda menjalankan skrip:
$ ./colors.sh
Ini menghasilkan:
Kode ANSI tidak terbatas pada warna โ tetapi juga dapat diterapkan untuk gaya. Kode-kode 0..9
mewakili gaya teks, sedangkan kode 30...37
mewakili warna:
Warna | Kode | Gaya Teks | Kode |
Black | 30 | Teks sederhana | 0 |
Merah | 31 | Teks tebal | 1 |
Hijau | 32 | Teks intensitas rendah | 2 |
Coklat/Oranye | 33 | Garis bawahi teks | 4 |
Biru | 34 | Teks berkedip | 5 |
Ungu | 35 | Teks tak terlihat | 8 |
Cyan | 36 | Teks yang dicoret | 9 |
Abu-Abu Muda | 37 |
Mari buat skrip bash untuk menjelajahi beberapa opsi ini:
#!/bin/bash
echo -e "33[0;33mSample text"
echo -e "33[1;33mBold text"
echo -e "33[2;33mLow intensity text"
echo -e "33[4;33mUnderline text"
echo -e "33[5;33mBlinking text"
echo -e "33[8;33mInvisible text"
echo -e "33[9;33mStrikethrough text"
Menjalankan skrip ini menghasilkan:
Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan termasuk lembar contekan. Hentikan perintah Googling Git dan sebenarnya belajar itu!
Demikian pula, Anda dapat mengubah warna latar belakang teks ini menggunakan kode 40..47
:
warna | Kode |
Black | 40 |
Merah | 41 |
Hijau | 42 |
Coklat/Oranye | 43 |
Biru | 44 |
Ungu | 45 |
Cyan | 46 |
Abu-Abu Muda | 47 |
Mengubah latar belakang string yang diberikan bermuara pada aturan yang sama seperti saat mengubah warna font โ kode itu sendiri mengubah perilaku:
#!/bin/bash
BLUE='33[0;44m'
BLACK='33[0;30m'
WHITE='33[0;30;47m'
RED='33[0;41m'
echo -e "${BLUE}Welcome ${WHITE}to ${RED}France"
Catatan: Sebagai aturan praktis โ Anda dapat menerjemahkan warna font ke warna latar belakang dengan menambahkan 10. 30
adalah warna font hitam, 40
adalah warna latar belakang hitam.
Ubah Warna Output dengan tput
Alternatif untuk kode ANSI adalah menggunakan tput
perintah:
$ tput setaf color_code
setf
memungkinkan untuk 8 warna, sementara setaf
memungkinkan 256 warna jadi tergantung pada perintah yang Anda gunakan, Anda dapat beralih di antara 0..7
dan 0..255
sebagai kode warna. Kedua perintah mendedikasikan 0..7
dengan kode warna yang sama, sedangkan dengan setaf
, 8..15
adalah warna intensitas tinggi, dan 16..231
adalah warna yang berbeda dari 8 yang pertama, dan 232..255
adalah warna abu-abu:
kredit: Wikipedia
Terakhir, tput
juga memungkinkan Anda untuk mengubah warna latar belakang, menambahkan huruf tebal, menurunkan intensitas, dll. dengan perintah lain:
Gaya Teks | Perintah |
Warna latar depan | setaf |
Warna latar belakang | setab |
Tidak ada gaya | sgv0 |
Teks tebal | pin |
Teks berintensitas rendah | redup |
Garis bawahi teks | smu |
Teks berkedip | berkedip |
Teks terbalik | putaran |
Mari kita buat skrip lain yang menggunakan tput
untuk mengubah warna keluaran echo
:
#!/bin/bash
YELLOW=`tput setaf 3`
echo "${YELLOW}Changing"
WHITE=`tput setaf 7 bold`
echo "${WHITE}Colors"
BLUE=`tput setaf 4 smul`
echo "${BLUE}With tput"
CYAN=`tput setaf 6 blink`
echo "${CYAN}is less"
RED=`tput setab 1 setaf 7`
echo "${RED}verbose!"
Script ini akan mencetak output berikut di terminal:
Perintah tput memberikan cara mudah untuk mencetak warna apa pun melalui kode warna sederhana. Sekarang mari kita buat skrip yang dapat mencetak setiap kode warna yang tersedia untuk perintah tput:
#!/bin/bash
tput init
end = $ (($ (tput colors) - 1))
w = 1
for c
in $ (seq 0 $end)
do
eval "$(printf " tput setaf % 3 s " " $c ")"
echo - n "$_"
[[$c - ge $ ((w * 2))]]
offset = 2 || offset = 0
[[$ (((c + offset) % (w - offset))) - eq $ (((w - offset) - 1))]]
echo
done
tput init
Ini akan mencetak 0 hingga 255 warna dan kodenya:
Kesimpulan
Dalam panduan singkat ini โ kami telah melihat bagaimana Anda dapat mengubah warna echo
's output di Linux โ menggunakan ANSI Escape Sequences dan tput
perintah.
Kami juga telah menjelajahi bagaimana Anda dapat membuat prosesnya tidak terlalu bertele-tele menggunakan variabel Bash, mengubah warna latar belakang, dan teks gaya.