Twórz komendy OS X Terminal i piszę BOLD

11

Chciałbym, aby polecenia, które wpisałem (wejście) w terminalu, wyróżniały się na tle wszystkich danych wyjściowych.

Na przykład:

imac: ~ buster $ chmod -R gw myfolder
imac: ~ buster $ cd myfolder
imac: myfolder buster $ ls -l
ogółem 0
drwxr-xr-x 9 root administrator 306 20 kwietnia 2010 bin
drwxr-xr-x 7 root administrator 238 kwi 20 2010 zawiera
drwxr-xr-x 73 root administrator 2482 maja 18 17:16 lib
drwxr-xr-x 6 root administrator 204 kwietnia 20 man
imac: myfolder buster $ echo Go Giants!
Go Giants!

odważne skoki na myśl, ale zaakceptowałbym kolor, a nawet podkreślenie całej linii ...

Jestem pewien, że jest na to sposób, ale nie jest to dla mnie oczywiste ...

dzięki!

Meltemi
źródło

Odpowiedzi:

9

Edytuj swój ~/.bash_profilelub ~/.bashrc(patrz komentarz Gillesa poniżej) i dodaj następujące wiersze:

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

Poruszaj ${BOLD}się, aby część pytania była odważna. Jeśli samo pytanie nie powinno być pokolorowane, potrzebujesz ${OFF}prefiksu, w PS1przeciwnym razie puste linie (naciśnięcie Enter bez pisania czegoś) pogrubią następujący monit (podziękowania dla @Jay, jeszcze raz dziękuję!)

Dodaje to pułapkę debugowania, aby wyłączyć pogrubienie formatu, więc jest to dość włamanie. Kredyty (działa bez grupowego tty w systemie OS X).

To trochę hack, więc używaj go na własne ryzyko.

Tylko ustawienie pogrubienia PS1/ PS2podpowiedzi byłoby łatwiejsze i tak samo widoczne:

BOLD="\[\033[1m\]"
OFF="\[\033[m\]"
PS1="${BOLD}\u@\h:\w \$${OFF}"
PS2="${BOLD}>${OFF} "
Daniel Beck
źródło
1
Nie ~/.bash_profile, ale ~/.bashrc(lub jedno i drugie, jeśli nie źródło .bashrcz .bash_profile). Ustawienia te należy ustawić dla każdej interaktywnej instancji bash i .bash_profilesą odczytywane tylko przez powłoki logowania.
Gilles „SO- przestań być zły”
Dzięki, zedytuję moją odpowiedź. Nie mam bashrc, więc wykorzystałem to, co tam było.
Daniel Beck
2
Zrozumiałem, umieść z przodu $ {OFF}: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay
1
@Daniel: Nie powinno być podkreślenia ~/.bashrc.
Wstrzymano do odwołania.
1
Jeśli użyję strzałki w górę cztery razy z rzędu, aby przejrzeć historię poleceń, wówczas pierwsze 3 znaki starego polecenia staną się częścią monitu i nie ma możliwości ich usunięcia. Nie mogę ich usunąć za pomocą klawisza Backspace.
Jay
2

Miałem trochę problemów z rozwiązaniami tutaj podczas korzystania z El Capitan (zwłaszcza w iTerm2, ale także w zwykłym starym terminalu). Mam dwa rodzaje błędów:

  1. Możliwość całkowitego usunięcia monitu bash po prostu naciskając spację, a następnie backspace
  2. Niechciane znaki trafiają do mojego wyjścia bash, np. Wejście pwdmoże spowodować

    \[\]/Users/home/Directory

    lub w

    \e[0m/Users/home/Directory

Proponuję następujące rozwiązanie, które w rzeczywistości jest po prostu tym samym.

    BOLD="\033[1m"
    OFF="\033[m"
    PS1="${OFF}\u@\h :${BOLD}"
    PS2="> ${BOLD}"
    trap 'echo -ne "${OFF}" > $(tty)' DEBUG
stpasta
źródło
Dobra robota! Kilka drobnych różnic, ale cieszę się, że udało ci się znaleźć sposób na współpracę z El Captain.
DrZoo 12.04.16