Buat perintah Terminal OS X saya ketik BOLD

11

Saya ingin membuat perintah yang saya ketikkan (input) ke terminal menonjol dari semua output.

Sebagai contoh:

imac: ~ buster $ chmod -R gw myfolder
imac: ~ buster $ cd myfolder
imac: myfolder buster $ ls -l
total 0
drwxr-xr-x 9 root admin 306 Apr 20 2010 bin
drwxr-xr-x 7 root admin 238 Apr 20 2010 termasuk
drwxr-xr-x 73 root admin 2482 18 Mei 18 lib
drwxr-xr-x 6 root admin 204 Apr 20 2010 man
imac: myfolder buster $ echo Go Giants!
Pergi raksasa!

berani melompat ke pikiran tetapi saya akan menerima warna atau bahkan menyoroti seluruh baris ...

Saya yakin ada cara untuk melakukan ini tetapi tidak jelas bagi saya ...

Terima kasih!

Meltemi
sumber

Jawaban:

9

Edit ~/.bash_profileatau ~/.bashrc(lihat komentar Gilles di bawah) dan tambahkan baris berikut:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${OFF}\u@\h:\w \$${BOLD}"
PS2="> ${BOLD}"
trap 'echo -ne "${OFF}" > $(tty)' DEBUG

Gerakkan ${BOLD}sekitar untuk membuat bagian dari prompt juga tebal. Jika prompt itu sendiri tidak boleh diwarnai, Anda perlu ${OFF}awalan masuk PS1, jika tidak, baris kosong (menekan enter tanpa menulis sesuatu) akan membuat prompt berikut ini dicetak tebal (kredit ke @Jay, terima kasih lagi!)

Ini menambahkan perangkap debug untuk mematikan format tebal, jadi itu adalah hack. Kredit (berfungsi tanpa tty grup pada OS X).

Ini sedikit peretasan, jadi gunakan dengan risiko Anda sendiri.

Hanya mengatur PS1/ PS2meminta Anda untuk cetak tebal akan lebih mudah dan sama terlihat:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "
Daniel Beck
sumber
1
Tidak ~/.bash_profile, tetapi ~/.bashrc(atau keduanya, jika Anda tidak bersumber .bashrcdari .bash_profile). Pengaturan ini harus ditetapkan untuk setiap instance bash interaktif, dan .bash_profilehanya dibaca oleh shell login.
Gilles 'SO- stop being evil'
Terima kasih, akan mengedit jawaban saya. Saya tidak punya bashrc, jadi saya menggunakan apa yang ada di sana.
Daniel Beck
2
Saya menemukan jawabannya, meletakkan $ {OFF} di depan: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay
1
@Aniel: Seharusnya tidak ada garis bawah di ~/.bashrc.
Dijeda sampai pemberitahuan lebih lanjut.
1
Jika saya menggunakan panah ke atas empat kali berturut-turut, untuk menelusuri sejarah perintah, maka 3 karakter pertama dari perintah lama menjadi bagian dari prompt, dan tidak ada cara untuk menghapusnya. Saya tidak bisa menghapusnya dengan tombol backspace.
Jay
2

Saya punya sedikit masalah dengan solusi di sini saat menggunakan El Capitan (khususnya di iTerm2 tetapi di Terminal tua juga). Saya mendapat dua macam kesalahan:

  1. Kemampuan untuk menghapus bash prompt saya sepenuhnya hanya dengan menekan spasi lalu mundur
  2. Karakter yang tidak diinginkan menemukan jalannya ke keluaran bash saya, mis. Input pwdakan menghasilkan

    \[\]/Users/home/Directory

    atau masuk

    \e[0m/Users/home/Directory

Saya mengusulkan solusi berikut, yang sebenarnya lebih sama.

    BOLD="\033[1m"
    OFF="\033[m"
    PS1="${OFF}\u@\h :${BOLD}"
    PS2="> ${BOLD}"
    trap 'echo -ne "${OFF}" > $(tty)' DEBUG
stpasta
sumber
Pekerjaan yang baik! Hanya beberapa perbedaan kecil, tetapi saya senang Anda menemukan cara untuk ini bekerja dengan El Captain.
DrZoo