8 nützliche und interessante Bash-Eingabeaufforderungen

A coder at a laptop.
⏱️ 10 min read

Viele Leute halten die Eingabeaufforderung für die Befehlszeile nicht für ein nützliches Element oder schenken ihr nicht einmal viel Aufmerksamkeit. Eine nützliche Eingabeaufforderung kann jedoch die Art und Weise ändern, wie Sie die Befehlszeile und damit auch Ihr System verwenden. Dieser Artikel zeigt Ihnen eine Reihe nützlicher und interessanter Bash-Eingabeaufforderungen mit Beispielen. Beachten Sie, dass wir mit den Eingabeaufforderungen selbst beginnen und dann einige weitere Anweisungen zur Arbeit mit ihnen geben.

Hier bieten wir einige Bash-Eingabeaufforderungen an, und nicht alle werden ernst gemeint sein. Unser erster Eintrag in der Liste könnte Ihnen beispielsweise eine kleine Freude bereiten, wenn Sie die Befehlszeile verwenden!

1. Zeigen Sie nach erfolgreicher Ausführung ein „Kaomoji“.

Diese Aufforderung ist amüsant und doch nützlich! Die Idee ist, dass, solange Sie erfolgreiche Befehle ausführen, Ihre Eingabeaufforderung ein fröhliches Kaomoji zeigt.

Anzeige von Kaomoji in der Bash-Eingabeaufforderung.

Wenn dagegen ein Befehl fehlschlägt, sehen Sie ein trauriges Kaomoji.

Um dies anzuwenden, verwenden Sie den folgenden Code:

PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\`[\[email protected]\h:\w]\<strong>\$</strong> "

Das mag verwirrend aussehen, aber wir verwenden if-Anweisungen, um festzustellen, ob der Befehl gut oder schlecht ist. Von dort aus verwenden wir einige Fluchtwege um die Kaomoji herum, um sicherzustellen, dass sie den richtigen Weg anzeigen.

2. Ändern Sie die Farbe der Bash-Eingabeaufforderung, wenn das Terminal einen fehlerhaften Befehl ausgibt

Ändern der Eingabeaufforderungsfarben.

Diese Eingabeaufforderung ist wohl die nützlichste auf der Liste. Wie oben ändert die Eingabeaufforderung die Farbe, wenn Ihr letzter Befehl nicht ausgeführt werden konnte, verkürzt aber auch lange Pfade und enthält die Bash-Verlaufsnummer jedes Befehls zum einfachen Abrufen.

PROMPT_COMMAND='PS1="\[\033[0;33m\][\!]\`if [[ \$? = "0" ]]; then echo "\\[\\033[32m\\]"; else echo "\\[\\033[31m\\]"; fi\`[\u.\h: \`if [[ `pwd|wc -c|tr -d " "` > 18 ]]; then echo "\\W"; else echo "\\w"; fi\`]\$\[\033[0m\] "; echo -ne "\033]0;`hostname -s`:`pwd`\007"'

Auch dies kann entmutigend aussehen, aber es ist unkompliziert. Wir verwenden wieder if-Anweisungen zusammen mit Farbcodes um verschiedene Meldungen hervorzuheben.

Sie können diese Farben so gestalten, wie Sie möchten, obwohl wir einige logische Überlegungen anstellen würden, sollten die geänderten Farben Ihnen helfen, anstatt nur geändert zu werden, um eine Änderung vorzunehmen.

3. Überspannen Sie Ihre Bash-Eingabeaufforderungen über mehrere Zeilen

Verwenden einer mehrzeiligen Bash-Eingabeaufforderung.

Manchmal möchten Sie möglicherweise viele Informationen in Ihre Bash-Eingabeaufforderungen aufnehmen. Wenn dies auf Sie zutrifft, könnte Sie diese Bash-Eingabeaufforderung interessieren. Es zeigt das Datum, die Uhrzeit, den vollständigen Verzeichnispfad, die Benutzer- und Hostnamen, das aktive Terminal und sogar die Anzahl der Dateien und die Speicherplatznutzung.

PS1="<strong>\n</strong>\[\033[35m\]<strong>\$</strong>(/bin/date)<strong>\n</strong>\[\033[32m\]\w<strong>\n</strong>\[\033[1;31m\]\[email protected]\h: \[\033[1;34m\]<strong>\$</strong>(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]<strong>\$</strong>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]<strong>\$</strong>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

Hier brauchen wir keine if-Anweisungen, da die Eingabeaufforderung selbst ein statisches Layout, aber dynamischen Inhalt haben wird. Möglicherweise finden Sie es auch schwierig, die verschiedenen Elemente in diesem zu analysieren. Unser Rat ist, es anzuwenden und dann die Eingabeaufforderung Stück für Stück durchzugehen. Mit ein wenig Querverweis werden Sie allmählich verstehen, wie die Eingabeaufforderung kombiniert wird.

4. Verwenden Sie Farben, um die Lesbarkeit Ihrer Bash-Eingabeaufforderung zu verbessern

Lesbare Farben in der Bash-Eingabeaufforderung verwenden.

An dieser Eingabeaufforderung ist nichts Besonderes, außer der guten Verwendung von Farben, um die verschiedenen Informationen zu trennen. Wie Sie sehen können, enthält es die Uhrzeit, Benutzer- und Hostnamen sowie das aktuelle Verzeichnis.

PS1="\[\033[35m\]<strong>\t</strong>\[\033[m\]-\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]<strong>\$</strong> "

Dies ist eine der nützlichsten Bash-Eingabeaufforderungen und ein Bereich, in dem Sie zuerst nachsehen werden, um Ihre Eingabeaufforderung anzupassen. Es kann Ihnen eine gute Grundlage bieten, um zu lernen, wie eine benutzerdefinierte Eingabeaufforderung funktioniert.

5. Zeigen Sie den vollständigen Verzeichnispfad an

Ähnlich wie bei der Verwendung von Farben ist diese Eingabeaufforderung eine saubere und minimale zweizeilige Eingabeaufforderung (obwohl es oben eine leere Zeile gibt).

Zeigt den vollständigen Verzeichnispfad in der Eingabeaufforderung an.

Wir zeigen den vollständigen Arbeitsverzeichnispfad in der ersten Zeile an, gefolgt vom Benutzer unten.

PS1="[\[\033[32m\]\w]\[\033[0m\]<strong>\n</strong>\[\033[1;36m\]\u\[\033[1;33m\]-> \[\033[0m\]"

Wenn Sie innerhalb der Eingabeaufforderung keine Leerzeile verwenden möchten, können Sie die erste weglassen \n. Spielen Sie jedoch mit dem Layout und der Formatierung herum, da jede Terminal-Erfahrung je nach Computer- und Befehlszeileneinstellungen unterschiedlich ist.

6. Zeigen Sie die Anzahl der Hintergrundjobs an

Dieser Zweizeiler zeigt Informationen an, die wir noch nicht in unseren Bash-Eingabeaufforderungen verwendet haben. Wir bieten eine laufende Liste von Hintergrundjobs. Dies ist nützlich, wenn Sie Multitasking betreiben, aber alle Aktivitäten im Auge behalten müssen.

Zeigt die Anzahl der Hintergrundjobs an.

Die erste Zeile enthält den Benutzer- und Hostnamen sowie den Pfad des Arbeitsverzeichnisses. In der zweiten Zeile haben wir eine Verlaufsnummer und eine Anzahl der Jobs, die im Hintergrund ausgeführt werden.

PS1='\[\e[1;32m\]\[email protected]\H:\[\e[m\] \[\e[1;37m\]\w\[\e[m\]\n\[\e[1;33m\]hist:\! \[\e[0;33m\] \[\e[1;31m\]jobs:\j \$\[\e[m\] '

Es gibt nicht viel zu diesem, obwohl es Ihnen einige dringend benötigte Informationen über die Systemaktivität geben kann. Sie könnten dies sogar in eine komplexere Eingabeaufforderung umwandeln und if-Anweisungen und Farbcodierungen hinzufügen, um Sie zu benachrichtigen, wenn ein Job bestimmte Stufen erreicht.

7. Informationen zum Arbeitsverzeichnis anzeigen

Informationen zum Arbeitsverzeichnis anzeigen.

Mit diesem zeigen wir den Benutzer- und Hostnamen, die Jobanzahl sowie Datum und Uhrzeit in der obersten Zeile an. Darunter befindet sich das aktuelle Verzeichnis, zusammen mit der Anzahl der Dateien im Verzeichnis und einigen Informationen zur Festplattennutzung.

PS1="<strong>\n</strong>\[\e[30;1m\]\[\016\]l\[\017\](\[\e[34;1m\]\[email protected]\h\[\e[30;1m\])-(\[\e[34;1m\]\j\[\e[30;1m\])-(\[\e[34;1m\]\@ \d\[\e[30;1m\])->\[\e[30;1m\]<strong>\n</strong>\[\016\]m\[\017\]-(\[\[\e[32;1m\]\w\[\e[30;1m\])-(\[\e[32;1m\]<strong>\$</strong>(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files, <strong>\$</strong>(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\e[30;1m\])--> \[\e[0m\]"

Das größte Problem bei all diesen Eingabeaufforderungen besteht darin, herauszufinden, was um die Formatierung und das Escape herum passiert. Wie bei mehrzeiligen Eingabeaufforderungen sollten Sie dies jedoch Stück für Stück angehen, bis Sie die Gesamtstruktur verstanden haben.

Sie können sogar einen Teil nach dem anderen eingeben und feststellen, ob es angezeigt wird oder ob es Fehler gibt, und sich bis zum vollständigen Snippet durcharbeiten.

8. Erstellen Sie Ihre eigenen Bash-Eingabeaufforderungen

Eine benutzerdefinierte Bash-Eingabeaufforderung.

Sie können alle oben genannten Elemente kombinieren, um Ihre eigenen benutzerdefinierten Bash-Eingabeaufforderungen zu erstellen. Zum Beispiel ist dies eine Modifikation von Nummer sieben in dieser Liste, die jedoch geändert wurde, um weniger Platz zu beanspruchen und einige spezifische und relevante Informationen aufzunehmen.

Ein zweizeiliger Stil ist immer kompakter, da Sie den vollständigen Pfad sehen können, ohne den Platz für die von Ihnen verwendeten Befehle zu verringern.

PS1="<strong>\n</strong>\[\e[32;1m\](\[\e[37;1m\]\u\[\e[32;1m\])-(\[\e[37;1m\]jobs:\j\[\e[32;1m\])-(\[\e[37;1m\]\w\[\e[32;1m\])<strong>\n</strong>(\[\[\e[37;1m\]! \!\[\e[32;1m\])-> \[\e[0m\]"

Inzwischen werden Sie wahrscheinlich verstehen, was diese Eingabeaufforderung bewirkt, aber unser Rat ist, zu versuchen, Ihre eigene zu erstellen, anstatt diese hier einzufügen. Auf diese Weise können Sie anfangen zu lernen, wie die verschiedenen Elemente zusammenarbeiten und vielleicht sogar darauf kommen Ihre eigenen benutzerdefinierten Bash-Eingabeaufforderungen.

Häufig gestellte Fragen

1. Warum sollte ich verschiedene Bash-Prompts verwenden wollen?

Dafür gibt es viele Gründe, aber Produktivität ist ein Schlüsselfaktor. Wenn Sie häufig die Befehlszeile verwenden, sehen Sie Ihre Eingabeaufforderung alle paar Sekunden. Wenn Sie also die wichtigsten Informationen hineinlegen, haben Sie sie immer zur Hand.

In vielen Fällen ist die Verwendung einer benutzerdefinierten Bash-Eingabeaufforderung effizienter, als mehrere Fenster geöffnet zu haben.

2. Wie füge ich diese Bash-Eingabeaufforderungen zu meiner Terminalausgabe hinzu?

Um eine dieser Eingabeaufforderungen zu verwenden, können Sie den Code kopieren und in Ihre Terminal-App einfügen. Dies gilt jedoch nur für die aktuelle Sitzung, sodass Sie dies theoretisch jedes Mal tun müssen, wenn Sie das Terminal starten.

Wenn Sie die Änderung dauerhaft vornehmen möchten, können Sie die Schnipsel am Ende Ihrer ~/.bashrc-Datei einfügen und Ihr Terminal neu starten.

3. Würden diese Bash-Prompts auch mit anderen Shells funktionieren?

In vielen Fällen werden Sie feststellen, dass es eine Kreuzkompatibilität mit anderen Arten von Shells gibt. Es gibt jedoch keine Garantie dafür, dass Änderungen eine 100-prozentige Parität bieten.

Wenn Sie sich unseren Beitrag zum Anpassen des Mac-Terminals ansehen, wird hier zsh verwendet. Sie werden feststellen, dass es kleine Unterschiede, aber viele Gemeinsamkeiten gibt.

4. Wie finde ich heraus, welche Informationen und Elemente ich meinen Bash-Eingabeaufforderungen hinzufügen kann?

So ziemlich jedes Element Ihres Systems kann in einer Bash-Eingabeaufforderung angezeigt werden. Sie sollten sich Bash-Variablen ansehen, da Sie auf diese Weise diese verschiedenen Elemente „entsperren“.

Eine großartige Ressource, um zu verstehen, was Sie ändern können, finden Sie unter Linux.com-Websiteund wir empfehlen, diese Dokumentation während Ihrer Anpassungssitzungen griffbereit zu haben.

5. Was ist, wenn ich keine benutzerdefinierten Bash-Eingabeaufforderungen mehr in meinem Terminal verwenden möchte?

Die einfache Antwort hier ist, die Konfigurationsdatei zu öffnen und die relevanten Zeilen zu löschen. Sie müssen keine weiteren Befehle ausführen, obwohl es sich lohnen kann, Ihr Terminal neu zu starten, wenn Sie nicht die erwarteten Änderungen sehen.

Wenn Sie die Befehlszeile regelmäßig verwenden oder beim Starten einer Terminal-App bestimmte Anforderungen haben, kann das Anpassen der Eingabeaufforderung eine gute Idee sein. Es erfordert nicht viel Wissen, und in vielen Fällen können Sie die Eingabeaufforderung, die Sie benötigen, von einem anderen Entwickler finden.

Join our Newsletter and receive offers and updates! ✅

0 0 votes
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Das könnte dich auch interessieren …

Abonnieren
Benachrichtige mich bei
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x