Rendi i comandi del Terminale OS X che scrivo BOLD


11

Vorrei che i comandi che ho digitato (input) nel terminale si distinguessero da tutto l'output.

Per esempio:

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 include
drwxr-xr-x 73 root admin 2482 18 maggio 17:16 lib
drwxr-xr-x 6 root admin 204 20 aprile 2010 man
imac: myfolder buster $ echo Go Giants!
Go Giants!

balzi audaci alla mente, ma accetterei un colore o anche evidenziando l'intera linea ...

Sono sicuro che c'è un modo per farlo, ma non è ovvio per me ...

Grazie!

Risposte:


9

Modifica il tuo ~/.bash_profileo ~/.bashrc(vedi il commento di Gilles di seguito) e aggiungi le seguenti righe:

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

Spostati ${BOLD}intorno per rendere anche in grassetto parte del prompt. Se il prompt stesso non deve essere colorato, è necessario il ${OFF}prefisso in PS1, altrimenti le righe vuote (premendo invio senza avere qualcosa scritto) renderanno il seguente prompt in grassetto (crediti a @Jay, grazie ancora!)

Questo aggiunge una trappola di debug per disattivare il formato grassetto, quindi è piuttosto un trucco. Riconoscimenti (funziona senza gruppo tty su OS X).

Questo è un po 'un trucco, quindi usalo a tuo rischio.

Solo l'impostazione di PS1/ PS2prompt su grassetto sarebbe più semplice e altrettanto visibile:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "

1
No ~/.bash_profile, ma ~/.bashrc(o entrambi, se non provieni .bashrcda .bash_profile). Queste impostazioni devono essere configurate per ogni istanza interattiva di bash e .bash_profilevengono lette solo dalle shell di login.
Gilles 'SO- smetti di essere malvagio' il

Grazie, modificherò la mia risposta. Non ho bashrc, quindi ho usato quello che c'era.
Daniel Beck

2
L'ho capito, ho messo $ {OFF} in primo piano: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay,

1
@Daniel: non ci dovrebbe essere un trattino basso in ~/.bashrc.
In pausa fino a ulteriore avviso.

1
Se uso la freccia su quattro volte di seguito, per scorrere la cronologia dei comandi, i primi 3 caratteri del vecchio comando diventano parte del prompt e non c'è modo di rimuoverli. Non posso eliminarli con il tasto Backspace.
Jay,

2

Ho avuto un po 'di problemi con le soluzioni qui mentre usavo El Capitan (specialmente in iTerm2 ma anche nel vecchio Terminal). Ho avuto due tipi di errori:

  1. La possibilità di eliminare completamente il mio prompt di bash semplicemente premendo spazio, quindi backspace
  2. Personaggi indesiderati che si fanno strada nel mio output bash, ad esempio l'input pwdsi tradurrebbe in

    \[\]/Users/home/Directory

    o dentro

    \e[0m/Users/home/Directory

Propongo la seguente soluzione, che è davvero più o meno la stessa.

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

Bel lavoro! Solo alcune piccole differenze, ma sono felice che tu abbia scoperto un modo per farlo funzionare con El Captain.
DrZoo,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.