Saya dapat mengubah warna melalui preferensi, tetapi bagaimana saya bisa mengubah warna latar belakang dan warna teks terminal melalui baris perintah?
command-line
color-management
TechJhola
sumber
sumber
dconf
. Saya telah menulis jawaban untuk pertanyaan serupa sebelumnya: askubuntu.com/a/628129/295286\033[00;34mFOO\033[00m
Jawaban:
Pada terminal tertentu yang kompatibel dengan XTerm / ANSI (seperti
xterm
dangnome-terminal
), Anda dapat mengatur warna menggunakan palet yang lebih besar daripada palet standar 8/16-warna (misalnya menggunakan palet 88-warna, 256-warna atau 16777216-warna (RGB) ; keduanyaxterm
dangnome-terminal
mendukung palet 256-warna dan 16777216-warna (RGB)); keberatan bahwa shell mungkin menimpa ini (ini adalah kasus misalnya untukzsh
).Berikut ini skrip untuk membuat daftar warna dalam palet 256-warna bersama dengan kode warna ANSI mereka di terminal yang kompatibel dengan XTerm / ANSI dengan dukungan palet 256-warna:
Bergantung pada apakah Anda ingin menerapkan warna ke latar depan atau ke latar belakang, gunakan
<fg_bg>
nilai38
atau48
(masing-masing) dalam perintah berikut:Misalnya, untuk mengatur warna latar depan (
<fg_bg>
=38
) menjadi merah (<ANSI_color_code>
=196
) dan warna latar belakang (<fg_bg>
=48
) menjadi hitam (<ANSI_color_code>
=0
):Ini perlu untuk menggambar ulang prompt menggunakan
printf '\e[K'
agar warna latar belakang berlaku untuk seluruh baris dan agar warna latar depan berlaku untuk kursor:Hal yang sama dapat dicapai dengan menggunakan nilai RGB, bukan kode warna ANSI di terminal yang kompatibel; tergantung pada apakah Anda ingin menerapkan warna ke latar depan atau ke latar belakang, gunakan
<fg_bg>
nilai38
atau48
(masing-masing) dalam perintah berikut:Misalnya, untuk mengatur warna latar depan (
<fg_bg>
=38
) menjadi merah (<R>
=255
,<G>
=0
,<B>
=0
) dan warna latar belakang (<fg_bg>
=48
) menjadi hitam (<R>
=0
,<G>
=0
,<B>
=0
):Sekali lagi, perlu menggambar ulang prompt menggunakan
printf '\e[K'
agar warna latar belakang berlaku untuk seluruh baris dan agar warna latar depan berlaku untuk kursor:Menggunakan salah satu metode, Anda dapat menggunakan
printf '\e[0m'
untuk mengatur ulang semua atribut:sumber
xterm
dangnome-terminal
mengenali urutan pelarian true color \ 38 [48/48; 2; R; G; Bm; namun,xterm
bulatkan warna aktual ke terdekat dalam palet 256-warna.gnome-terminal
menampilkan warna benar yang diberikan dalam urutan escape.xterm
) jika kursor berada di tepi paling kanan (ditampilkan secara visual di kolom paling kanan, tetapi secara logis sudah lebih dari itu karena karakter sudah dicetak di kolom paling kanan), huruf terakhir akan dilucuti. Lihat misalnya bugzilla.gnome.org/show_bug.cgi?id=740789 atau savannah.gnu.org/bugs/?36831 .Informasi seperti yang ditemukan di halaman ini , tidak termasuk kolom pratinjau:
Urutan terdiri dari karakter Escape (sering diwakili oleh "
^[
" atau "<Esc>
") diikuti oleh beberapa karakter lain: "^[FCm
" (di manaFC
adalah salah satu angka dalam daftar berpoin di bawah).Di
bash
, Esckode dapat berupa salah satu dari yang berikut:\e
\033
(oktal)\x1B
(heksadesimal)Catatan 1: Urutan "
\e[0m
" menghapus semua atribut (pemformatan dan warna). Ini bisa menjadi ide bagus untuk menambahkannya di akhir setiap teks berwarna.Catatan 2: Warna latar depan dan latar belakang dapat bervariasi, tergantung pada konfigurasi terminal dan tidak semua warna didukung .
Set / Reset
0
: Reset / hapus semua atribut modifier, foreground dan background:echo -e "\e[0mNormal Text"
1
: Tebal / Cerah:echo -e "Normal \e[1mBold"
2
: Redup:echo -e "Normal \e[2mDim"
4
: Bergaris Bawah:echo -e "Normal \e[4mUnderlined"
5
: Blink (tidak berfungsi di sebagian besar terminal kecuali XTerm):echo -e "Normal \e[5mBlink"
7
: Balikkan / Balikkan:echo -e "Normal \e[7minverted"
8
: Tersembunyi (berguna untuk info sensitif):echo -e "Normal \e[8mHidden Input"
21
: Setel ulang / Hapus huruf tebal / cerah:echo -e "Normal \e[1mBold \e[21mNormal"
22
: Reset / Hapus redup:echo -e "Normal \e[2mDim \e[22mNormal"
24
: Atur Ulang / Hapus garis bawah:echo -e "Normal \e[4mUnderlined \e[24mNormal"
25
: Atur Ulang / Hapus kedipan:echo -e "Normal \e[5mBlink \e[25mNormal"
27
: Atur Ulang / Hapus terbalik / terbalik:echo -e "Normal \e[7minverted \e[27mNormal"
28
: Reset / Hapus disembunyikan:echo -e "Normal \e[8mHidden \e[28mNormal"
Latar depan
39
: Default (biasanya hijau, putih atau abu-abu terang):echo -e "Default \e[39mDefault"
30
: Hitam:echo -e "Default \e[30mBlack"
(terbaik dikombinasikan dengan warna latar belakang:echo -e "Default \e[30;107mBlack on white"
)31
: Merah (tidak digunakan dengan latar belakang hijau)32
: Hijau33
: Kuning34
: Biru35
: Magenta / Ungu36
: Cyan37
: Abu-abu muda90
: Abu-abu gelap91
: Lampu merah92
: Hijau muda93
: Kuning muda94
: Biru muda95
: Light Magenta / Pink96
: Light Cyan97
: PutihLatar Belakang
49
: Warna latar belakang default (biasanya hitam atau biru)40
: Hitam41
: Merah42
: Hijau43
: Kuning44
: Biru45
: Magenta / Ungu46
: Cyan47
: Light Grey (tidak digunakan dengan foreground putih)100
: Dark Grey (tidak digunakan dengan foreground hitam)101
: Lampu merah102
: Hijau Muda (tidak digunakan dengan latar depan putih)103
: Kuning Muda (jangan gunakan dengan foreground putih)104
: Biru Muda (tidak digunakan dengan latar kuning muda)105
: Light Magenta / Pink (tidak digunakan dengan foreground cahaya)106
: Light Cyan (jangan gunakan dengan foreground putih)107
: Putih (jangan gunakan dengan latar depan cahaya)Untuk mengatur warna latar depan dan latar belakang sekaligus, gunakan formulir yang ada
echo -e "\e[S;FG;BGm"
. Misalnya:echo -e "\e[1;97;41m"
(latar depan putih tebal pada latar belakang merah)Untuk 256 opsi warna, lihat halaman sumber.
sumber
Ubah warna secara insidentil
Jika itu dimaksudkan untuk mengubah warna secara tidak sengaja :
Anda dapat menggunakan perintah setterm :
dari warna, Anda dapat memilih dari (depan dan belakang):
untuk opsi lainnya:
Ubah pengaturan profil (warna) Anda
Pada 14,04, saya tidak menemukan opsi untuk digunakan
dconf
untuk mengatur warna atau terminal. Namun Anda dapat menggunakannyagconftool
Anda pertama-tama harus mendapatkan nama profil Anda:
Kemudian, untuk mengatur warna teks dari profil Anda:
misalnya untuk mengatur warna teks menjadi putih
Sama dengan warna latar:
misalnya untuk mengatur warna latar belakang menjadi hitam
Secara alternatif, untuk mengatur nama warna, Anda cukup menggunakan
white
ataugreen
, dari palet yang sama dengan perintah setterm, misalnya:sumber
dconf write /org/gnome/terminal/legacy/profiles:/:<profile_id>/background-color "'rgb(0,0,0)'"
lakukan triknya.gconftool-2
(untuk Ubuntu 14.04 dan mungkin beberapa rilis berikut), ataudconf
ataugsettings
pada versi Ubuntu yang lebih baru mengubah pengaturan terminal gnome, dan segera berlaku pada semua tab dan jendela dari profil yang sama. Saya tidak berpikir OP mencari perilaku ini.Berbagai kode warna yang digunakan untuk mendapatkan keluaran berwarna juga dapat digunakan untuk mendapatkan latar belakang berwarna :
Oleh karena itu, perintah berikut mengubah latar belakang saya menjadi merah:
Tergantung pada shell, emulator terminal, dll., Anda mungkin tidak perlu
-e
.sumber
Lihat jawaban kos untuk mengalihkan latar depan atau latar belakang ke warna palet tertentu, atau bahkan warna RGB langsung di beberapa terminal. Efek dari urutan seperti itu berlangsung sampai warna yang berbeda dipilih (atau itu dikembalikan ke default).
Pendekatan lain, yang didukung oleh beberapa emulator terminal, adalah untuk mendefinisikan kembali nilai RGB yang tepat dari warna foreground dan latar belakang default terminal menggunakan urutan escape OSC 10/11:
Ini kemungkinan akan bertahan lebih lama (sampai ditimpa oleh OSC 10/11 atau reset melalui OSC 110/111), tetapi tidak seperti pendekatan dconf, ini masih mempengaruhi terminal saat ini saja.
sumber