Erstellen Sie OS X-Terminalbefehle, die ich in Fettdruck schreibe


11

Ich möchte, dass Befehle, die ich in das Terminal eingegeben habe, sich von allen Ausgaben abheben.

Zum Beispiel:

imac: ~ buster $ chmod -R gw meinordner
imac: ~ buster $ cd meinordner
imac: meinordner buster $ ls -l
gesamt 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. Mai 17:16 lib
drwxr-xr-x 6 root admin 204 20. April 2010 man
imac: myfolder buster $ echo Go Giants!
Go Giants!

mutige Sprünge in den Sinn, aber ich würde eine Farbe akzeptieren oder sogar die ganze Linie markieren ...

Ich bin mir sicher, dass es einen Weg gibt, dies zu tun, aber für mich ist es nicht offensichtlich ...

Vielen Dank!

Antworten:


9

Bearbeiten Sie Ihr ~/.bash_profileoder ~/.bashrc(siehe Gilles 'Kommentar unten) und fügen Sie die folgenden Zeilen hinzu:

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

Bewegen Sie den Mauszeiger, ${BOLD}um einen Teil der Eingabeaufforderung auch fett darzustellen. Sollte die Eingabeaufforderung selbst nicht farbig sein, benötigen Sie das ${OFF}Präfix in PS1, andernfalls wird die folgende Eingabeaufforderung fett dargestellt (Dank an @Jay, nochmals vielen Dank!).

Dies fügt einen Debug-Trap hinzu, um das Fettformat auszuschalten. Es ist also ein ziemlicher Hack. Credits (funktioniert unter OS X jedoch ohne Gruppen-Tty).

Dies ist ein bisschen wie ein Hack, also benutze es auf eigenes Risiko.

Einfacher und genauso gut sichtbar wäre es , Ihre PS1/ PS2-Aufforderungen auf Fettdruck zu setzen:

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

1
Nicht ~/.bash_profile, aber ~/.bashrc(oder beides, wenn Sie dies nicht tun Quelle .bashrcaus .bash_profile). Diese Einstellungen müssen für jede interaktive Bash-Instanz festgelegt werden und können .bash_profilenur von Login-Shells gelesen werden.
Gilles

Danke, werde meine Antwort bearbeiten. Ich habe keine bashrc, also habe ich verwendet, was da war.
Daniel Beck

2
Ich habe es herausgefunden und vorne ein $ {OFF} gesetzt: PS1 = "$ {OFF} \ u @ \ h: \ w \ $$ {BOLD}"
Jay,

1
@ Daniel: Es sollte keinen Unterstrich geben ~/.bashrc.
Dennis Williamson

1
Wenn ich den Aufwärtspfeil viermal hintereinander verwende, um den Befehlsverlauf durchzugehen, werden die ersten drei Zeichen des alten Befehls Teil der Eingabeaufforderung, und es gibt keine Möglichkeit, sie zu entfernen. Ich kann sie nicht mit der Rücktaste löschen.
Jay

2

Ich hatte ein kleines Problem mit den Lösungen hier, während ich El Capitan benutzte (besonders in iTerm2, aber auch in normalen alten Terminals). Ich habe zwei Arten von Fehlern:

  1. Die Möglichkeit, meine Bash-Eingabeaufforderung vollständig zu löschen, indem Sie nur die Leertaste und dann die Rücktaste drücken
  2. Unerwünschte Zeichen finden ihren Weg in meine Bash-Ausgabe, z. B. würde die Eingabe pwddazu führen

    \[\]/Users/home/Directory

    oder in

    \e[0m/Users/home/Directory

Ich schlage die folgende Lösung vor, die eigentlich nur mehr von der gleichen ist.

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

Gute Arbeit! Nur ein paar kleine Unterschiede, aber ich bin froh, dass Sie einen Weg gefunden haben, wie Sie mit El Captain zusammenarbeiten können.
DrZoo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.