Saya memiliki warna PS1 khusus di mana saya memiliki perintah shell aktual dalam warna yang berbeda, supaya saya dapat dengan cepat melihat perintah apa yang saya ketik dan pisahkan dari output perintah itu sendiri.
Misalkan warna dalam PS1 diatur ke 'biru' untuk command prompt dan warna default di shell saya adalah putih.
- Saya mengetikkan perintah misalnya ls, (ls -l berwarna biru)
- Output yang dihasilkannya, baris pertama masih biru
- Semua garis tersisa berwarna putih
Yang saya inginkan adalah semua output setelah perintah menjadi 'putih'.
Contoh lain:
- Saya mengetik perintah 'cat', warnanya biru
- Output datang, seluruh output berwarna biru
Saya ingin output menjadi 'putih' sambil menjaga command prompt saya mengetik 'biru'
Pada beberapa perintah, tidak apa-apa, perintah lain, warna yang sama meluap ke baris pertama dari output dan kemudian warna default menendang dan beberapa perintah lain, seluruh output (misalnya cat) memiliki warna yang sama.
Apakah ada cara untuk menjaga hanya perintah yang saya ketik dalam satu warna dan sisanya ke default?
Saya menggunakan OSX.
EDIT # 1
Berikut adalah tangkapan layar yang ditautkan @ derobert dalam komentar yang menunjukkan apa yang saya cari.
Jawaban:
Anda pada dasarnya ingin mengatur ulang warna terminal tepat sebelum bash mengeksekusi perintah. Ini dapat dilakukan dengan a
trap
.Sebagai contoh:
Bash mengeksekusi
DEBUG
trap segera sebelum perintah, jadi ini akan menghasilkantput sgr0
(yang me-reset atribut format) dijalankan sebelum setiap perintah.Ini
[[ -t 1 ]]
adalah pemeriksaan keamanan untuk memastikan bahwa STDOUT sebenarnya adalah terminal. Mungkin ada beberapa kasus di mana STDOUT bash tidak terhubung ke terminal (perpipaan, ssh jarak jauh, dll), jadi Anda tidak ingintput
mengirim kode pelarian terminal.sumber
.bashrc
(atau di mana pun$PS1
diatur). Saya akan meletakkannya tepat di sebelah$PS1
definisi sehingga Anda tahu mereka terkait.