Einer meiner Lieblingstipps für das Mac OS X- Terminal besteht darin, den letzten laufenden Prozess mit dem folgenden Code in Ihrer .bashrc-Datei in den Terminaltitel einzufügen .
trap 'printf "\033]0; `history 1 | cut -b8-` \007"' DEBUG
Jetzt möchte ich meine Bash-Eingabeaufforderung von der Standardeinstellung an eine funktionalere anpassen. Was sind einige nützliche Beispiele für Shell-Eingabeaufforderungen?
linux
bash
mac-osx
command-line-interface
Dave K.
quelle
quelle
Ich habe ein Skript
~/bin/setprompt
, das von my ausgeführt wird und Folgendes.bashrc
enthält:Dieses Skript setzt die Eingabeaufforderung auf den Hostnamen, gefolgt davon,
:)
ob der letzte Befehl erfolgreich war und:(
ob der letzte Befehl fehlgeschlagen ist.quelle
Dies ist jedoch die beeindruckendste, die ich je gesehen habe:
Versuch es einmal. Es gibt gute Informationen, aber es wird tatsächlich dazu führen, dass die Belastung Ihrer Boxen zunimmt, wenn Sie an einer Eingabeaufforderung die Eingabetaste drücken!
quelle
Ich bin ein Fan der standardmäßigen Cygwin-Bash-Eingabeaufforderung:
oder ohne Farben:
sieht aus wie:
quelle
Ich mag es, die Zeit in meine einzubeziehen. Gibt mir eine Art eingebauten
time
Befehl:Nachdem ich einige davon gesehen habe, möchte ich meine ein bisschen schlauer machen!
quelle
Hier ist meins (scrolle nach rechts, um mehr Interessantes zu sehen):
Hier ist das Ergebnis:
Wenn ich mich in einem Git- Repository befinde :
Ich verwende mehrere Zeilenumbrüche und das "horizontale Lineal", um das Scannen von Puffern zu vereinfachen. Daher drücken lange Pfadnamen den Cursor nicht zu weit nach rechts.
quelle
In ksh:
In meinem .profile habe ich die folgende Variable festgelegt (daher wird diese Variable nur einmal pro Sitzung festgelegt, unabhängig davon, wie viele Su's ich mache:
In meiner .kshrc habe ich:
Ich werde root mit dem folgenden Alias und nicht mit "su" (kroot ist ein Root-Benutzer mit einer ksh-Shell anstelle von sh (solaris) oder bash (linux):
Ich habe auch diese beiden Funktionen definiert:
und schließlich am Ende von .kshrc habe ich:
All dies gibt mir standardmäßig die automatische Einstellung des Endes meiner Eingabeaufforderung, um anzugeben, ob ich root bin (und ob ich ein übergeordnetes Element habe, das root war), das aktuelle Arbeitsverzeichnis, den Hostnamen und den Exit-Status des letzten Prozesses. sprompt löscht den Hostnamen, verkleinert den Pfad nur auf den Basisnamen und entfernt Leerzeichen:
Die Root / Me-Aliase stammen aus der Pre-Sudo-Administration auf Solaris und alte Gewohnheiten sind schwer gestorben. Ich bezweifle, dass irgendjemand heutzutage genau dasselbe implementieren würde. Die Funktionen zum Ändern der Eingabeaufforderung und der vorhandene Status sind für mich weiterhin sehr wertvoll.
quelle
Ich habe eine Eingabeaufforderung, die einfach ist, aber Farben verwendet, um zusätzliche Informationen zu geben:
Die Farbe des Hostnamens (in diesem Fall Drawble) ist auf jedem Computer unterschiedlich. Wenn ich einen neuen Computer erhalte, an dem ich arbeite, wähle ich eine beliebige Farbe für diesen Computer. Auf diese Weise kann ich bei vielen geöffneten Terminals leicht erkennen, auf welchen Computer sie SSH-fähig sind, und Fehler reduzieren, die ich mache, wenn ich auf dem falschen Computer bin. Wenn ich das tue
sudo -s
, setze ich außerdem den Hostnamen in Großbuchstaben und färbe den Doppelpunkt wieder rot. Dies reduziert Fehler, indem klargestellt wird, dass Sie als Root fungieren. Der Pfad (~
in diesem Fall mein Ausgangsverzeichnis) ist hellgrün, wodurch die Ausgabezeilen getrennt werden können. Wenn etwas viel Ausgabe erzeugt, ist es einfach, nach oben zu scrollen und zu sehen, wo die Ausgabe begonnen hat.quelle
Es ist keine Shell-Eingabeaufforderung, aber es ist eine Anpassung, die dem Geist Ihrer Anfrage entspricht.
Ich habe die folgende Umgebungsvariable festgelegt:
Auf diese Weise verliere ich nicht den Verlauf, wenn mehrere Terminals über den Bildschirm oder was auch immer geöffnet sind, wenn sie sich gegenseitig ändern.
quelle
Dies zeigt an:
Mit 'Hostname' in Grün, wenn der zuletzt ausgeführte Befehlsrückgabecode '0' war, und Rot, wenn er> '0' war.
quelle
Ähnlich wie bei Chaos , mag ich es irgendwie
das gibt mir
Durch Einfügen des Benutzers / Hosts in die erste Zeile kann ich bei Verwendung von SCP oder rsync zum Senden einiger Dateien in dieses Verzeichnis problemlos die gesamte Pfadzeile kopieren .
quelle
Für Bash mag ich
PS1 = "\ h \ d \ t \ w \ n \ u>"
was in ... resultiert:
myserver Mo Sep 07 07:43:11 / u08
root>
Sie erhalten also Hostname, Datum und Uhrzeit, vollständigen Pfad und dann Benutzernamen in einer neuen Zeile mit der Eingabeaufforderung. Dies dient dazu, den Zeilenumbruch in Verzeichnissen zu minimieren. Ich bin den ganzen Tag in und aus Kisten, also kann ich nur gut tun, um es gerade zu halten. Ich habe auch Kitt eingestellt, um alles zu protokollieren. Ich kann zurückgehen und mir die Protokolle ansehen und genau sehen, was ich wann getan habe. Auch praktisch, um Ereignissequenzen in mehreren Terminalfenstern gleichzeitig herauszufinden.
quelle
Meine normale Eingabeaufforderung ist
Dies gibt mir den aktuellen Benutzer, das aktuelle Host-Verzeichnis ( ohne $ HOME durch ~ zu ersetzen), das aktuelle
screen
Fenster und die letzte Fehlerrückgabe. Da normalerweise 16 oder mehr Bildschirmfenster geöffnet sind, ist es hilfreich, das aktuelle zu kennen.quelle
Meine zsh-Eingabeaufforderung:
Normalerweise ist es rot und weiß mit dem aktuellen Verzeichnis in pink. Wenn root, ist es dunkler grau mit dem Hostnamen in rot. Wenn
$?
nicht 0, wird das letzte% rot angezeigt.quelle