Ketika saya menangkap sesuatu, hasilnya selalu berwarna merah. Saya tahu bahwa perintah grep --color
mencetak hasil dalam warna, yang secara default berwarna merah. Bisakah saya mengubah warnanya?
Ketika saya menangkap sesuatu, hasilnya selalu berwarna merah. Saya tahu bahwa perintah grep --color
mencetak hasil dalam warna, yang secara default berwarna merah. Bisakah saya mengubah warnanya?
Jawaban:
Anda dapat mengubah warna sorotan grep
dengan menggunakan variabel lingkungan GREP_COLORS
, yang dapat Anda atur seperti ini:
export GREP_COLORS='ms=01;31'
Angka-angka dapat gaya teks, mengubah warna latar depan atau warna latar belakang, atau mengubah font.
Kondisi awal untuk semua GREP_COLORS
opsi adalah gaya teks, font, dan warna default terminal. Menyetel ulang semua ini akan kembali ke default terminal, bukan default apa pun grep
.
ᴀ;ʙ;…
- ;
memisahkan pilihan numerik yang Anda ingin menggabungkan (misalnya, berani kuning-hitam menggabungkan teks pilihan 1
, 33
dan 40
dalam 1;33;40
)+ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ dihidupkan ketika Anda menggunakan opsi angka itu-ᴇꜰꜰᴇᴄᴛ
- ᴇꜰꜰᴇᴄᴛ dimatikan saat Anda menggunakan opsi angka itucolor
, green
, cyan
, Dan grey
- di bagian "Teks styling", ini mengacu pada warna foregroundcolors
- di bagian "Gaya teks", ini mengacu pada warna latar depan dan warna latar belakangthis color
- di bagian "Warna latar depan", ini mengacu pada warna latar depan; di bagian "Warna latar belakang", ini mengacu pada warna latar belakangString kosong atau 0
me - reset semua gaya teks dan me-reset kedua warna ke default tetapi tidak me-reset font ke default.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
│ 0 │ «reset style+colors» │ «reset style+colors» │ «reset style+colors» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 1 │ +bold, +brighter color │ +bold, +brighter color │ +brighter color, │
│ │ │ │ -forced grey │
│ 2 │ +fainter color │ +fainter color │ +forced grey │
│ 3 │ +italic │ +italic │ +forced green │
│ │ │ │ ● overrides 2 and 4 │
│ 4 │ +underline │ +underline │ +forced cyan │
│ │ │ │ ● overrides 2 │
│ 5 │ «no effect» │ +blink │ «no effect» │
│ 7 │ +invert colors │ +invert colors │ +invert colors │
│ 8 │ +invisible │ +invisible │ «no effect» │
│ │ │ ● underline appears │ │
│ 9 │ +strikethrough │ +strikethrough │ «no effect» │
├─────┼─────────────────────────┤ ├───────────────────────┤
│ 21 │ -bold, -brighter color, │ +double underline │ -brighter color, │
│ │ -fainter color ├─────────────────────────┤ -forced grey │
│ 22 │ -bold, -brighter color, │ -bold, -brighter color, │ -brighter color, │
│ │ -fainter color │ -fainter color │ -forced grey │
│ 23 │ -italic │ -italic │ -forced green │
│ 24 │ -underline │ -underline, │ -forced cyan │
│ │ │ -double underline │ │
│ 25 │ «no effect» │ -blink │ «no effect» │
│ 27 │ -invert colors │ -invert colors │ -invert colors │
│ 28 │ -invisible │ -invisible │ «no effect» │
│ 29 │ -strikethrough │ -strikethrough │ «no effect» │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 39 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 30 │ very dark grey │ black │ black │
│ 31 │ dull red │ red │ light red │
│ 32 │ dull green │ light green │ light green │
│ 33 │ dull yellow │ yellow │ yellow │
│ 34 │ greyish blue │ dark blue │ sky blue │
│ 35 │ dull purple │ purple │ purple │
│ 36 │ teal │ cyan │ cyan │
│ 37 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 90 │ dark grey │ dull grey │ dull grey │
│ 91 │ red │ bright red │ bright red │
│ 92 │ lime green │ bright green │ bright green │
│ 93 │ yellow │ bright yellow │ pure yellow │
│ 94 │ light greyish blue │ dull blue │ deep blue │
│ 95 │ light purple │ magenta │ magenta │
│ 96 │ cyan │ bright cyan │ bright cyan │
│ 97 │ off white │ white │ white │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 38;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
│ 38;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 16 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Perhatikan bahwa TTY non-GUI tidak memberikan seri warna latar belakang yang lebih cerah.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 49 │ «reset this color» │ «reset this color» │ «reset this color» │
├─────┼─────────────────────────┼─────────────────────────┼───────────────────────┤
│ 40 │ very dark grey │ black │ black │
│ 41 │ dull red │ red │ light red │
│ 42 │ dull green │ light green │ light green │
│ 43 │ dull yellow │ yellow │ yellow │
│ 44 │ greyish blue │ dark blue │ sky blue │
│ 45 │ dull purple │ purple │ purple │
│ 46 │ teal │ cyan │ cyan │
│ 47 │ light grey │ light grey │ light grey │
├─────┼─────────────────────────┼─────────────────────────┼╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶╴╶┤
│ 100 │ dark grey │ dull grey │ black │
│ 101 │ red │ bright red │ light red │
│ 102 │ lime green │ bright green │ light green │
│ 103 │ yellow │ bright yellow │ yellow │
│ 104 │ light greyish blue │ dull blue │ sky blue │
│ 105 │ light purple │ magenta │ purple │
│ 106 │ cyan │ bright cyan │ cyan │
│ 107 │ off white │ white │ light grey │
├─────┴──────┬──────────────────┴─────────────────────────┴───────────────────────┤
│ 48;2;ʀ;ɢ;ʙ │ replace ʀ, ɢ, and ʙ with RGB values from 0 to 255 │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
│ 48;5;ɴ │ replace ɴ with value from 256-color chart below │
│ │ for closest supported color (non-GUI TTY has only 8 colors!) │
└────────────┴────────────────────────────────────────────────────────────────────┘
Di atas grafik adalah tangkapan layar dari konten yang diterbitkan dalam "kode pelarian ANSI, warna 8-bit" di Wikipedia , yang ditulis oleh CMG Lee et al. pada 24 Februari 2016 dan sesudahnya , dan dilisensikan oleh penulis di bawah lisensi hak cipta CC BY-SA 3.0 dan lisensi hak cipta GFDL .
Warna dari grafik 256 warna di atas dapat digunakan sebagai berikut:
38;5;ɴ
- ganti ɴ dengan nilai warna tertentu pada grafik di atas untuk mengubah warna latar depan ke warna terdekat yang didukung terminal48;5;ɴ
- ganti ɴ dengan nilai warna tertentu pada bagan di atas untuk mengubah warna latar belakang ke warna terdekat yang didukung terminalSebagai contoh, 38;5;214;48;5;30
akan mengatur latar depan ke warna 214
dan latar belakang ke warna 30
, memberikan hasil oranye pada terminal yang mendukungnya.
Perhatikan bahwa tidak semua terminal mendukung semua 256 warna, jadi penting untuk menyadari bahwa warna yang dipilih mungkin tidak digunakan. Hanya warna yang didukung paling dekat dengan yang dipilih yang akan digunakan.
Misalnya, TTY non-GUI hanya mendukung 16 warna dasar untuk latar depan dan 8 warna dasar untuk latar belakang, sehingga warna terdekat yang akhirnya digunakan mungkin bukan yang Anda harapkan. Sebagai contoh, pemilihan oranye-on-teal di atas ( 38;5;214;48;5;30
) menunjukkan sebagai kuning-hitam di TTY non-GUI, karena itu adalah warna terdekat yang didukung.
10
adalah font default. 11
through 20
adalah potensi font alternatif ( 20
biasanya berarti font in di terminal langka yang mendukungnya). Hanya 10
dan 12
tampaknya ada secara default di TTY non-GUI, dan tidak ada yang ada di Terminal GNOME atau xterm
.
grep
tidak benar-benar beralih font kembali sebelum keluar, jadi jalankan reset
jika Anda terjebak dalam font yang tidak diinginkan setelah grep
kembali ke shell.
┏━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ### ┃ GNOME Terminal ┃ xterm ┃ non-GUI TTY ┃
┡━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━┩
│ 10 │ «no effect» │ «no effect» │ «reset font» │
│ 11 │ «no effect» │ «no effect» │ -messed up font │
│ 12 │ «no effect» │ «no effect» │ +messed up font │
└─────┴─────────────────────────┴─────────────────────────┴───────────────────────┘
Sumber bagian "Numeric options":
● "ANSI escape code, parameter SGR (Select Graphic Rendition)" di Wikipedia
● Verifikasi eksperimental pada Terminal GNOMExterm
,, dan TTY non-GUI-mode pada Ubuntu 16.04
Nilai default GREP_COLORS
adalah'ms=01;31:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Arti setiap elemen yang diterima GREP_COLORS
dapat diperiksa di halaman manual GNU.org .
Untuk penyelesaian, dan seperti yang ditunjukkan oleh @damadam, Anda harus menambahkan export
ke Anda .bashrc
untuk menyimpan perubahan.
Terkait:
38;5;ɴ
, di mana ɴ harus diganti dengan salah satu nilai warna. Untuk latar belakang, gunakan 48;5;ɴ
dengan cara yang sama. Sebagai contoh, 38;5;214;48;5;30
harus memberi Anda jeruk pada itik. Jika tidak, terminal Anda mungkin tidak mendukung 256 warna. Sebagai contoh, TTY non-GUI hanya mendukung 16 warna untuk latar depan dan 8 untuk latar belakang dan akan memilih warna latar depan dan latar belakang dari 16 dan 8 yang paling dekat dengan oranye pada warna, yang berwarna kuning pada hitam.
Selain jawaban dari @M. Becerra, jangan lupa untuk menambahkan ini export
di dalam ~/.bashrc
. Anda bisa melakukannya seperti itu:
nano ~/.bashrc
dan ketik sekarang export
:
export GREP_COLORS='ms=01;33:mc=01;31:sl=:cx=:fn=35:ln=32:bn=32:se=36'
Ini menetapkan grep
hasil menjadi kuning, dan saya tidak perlu mengulang export
terminal setelah restart atau komputer.
<<<hello GREP_COLORS='ms=5;104' grep '.*'
sekali! Daftar kode dapat ditemukan misalnya di sini (bagian 6).