Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Kommandozeile - kurze Pfadangabe im Prompt der bash

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Tips, Tricks, Helferlein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Marco Gerber



Anmeldungsdatum: 26.08.2006
Beiträge: 38
Wohnort: Zürich

BeitragVerfasst am: 27. Aug 2006 13:10   Titel: Kommandozeile - kurze Pfadangabe im Prompt der bash

Guten Tag

Wer oft an einem Terminal arbeitet, wird schnell feststellen, dass der Prompt mit der Verzeichnistiefe in welcher man arbeitet sehr schnell unuebersichtlich wird.
Das liegt daran, dass die meisten Distributionen eine solche Vorkonfiguration waehlen. Es folgt ein Beispiel:
Code:

user@host /home/user/music/mp3/grave_digger/tunes_of_war :~ $

Obwohl der Inhalt dieses Verzeichnisses ausgezeichneten Sound beinhaltet, wird das Problem sehr schnell klar, will man dort noch etwas arbeiten.

Die bash stellt eine umfangreiche Variablensammlung bereit, um das Verhalten (beispielsweise das Aussehen des Prompt) zu konfigurieren.

Dazu kennt die bash insbesondere die folgenden Variablen:

PS1 : Dient zur Darstellung des Prompt, wie er nach dem Ausfuehren eines Befehles (Befehlsfolge) als Eingabeaufforderung erscheint.
PS2 : Ist ein Befehl grammatikalisch betrachtet noch nicht fertig, und wird ein Zeilenumbruch mittels ENTER ausgefuehrt, wird diese Variable zur Anzeige benutzt. Beispielsweise das Zeichen '>':
Code:

sed -e 's/linux/Gnu\/&/
> g'

PS3 : wird vom internen select Befehl verwendet. Default ist #?
PS4 : interessante Verwendung im Zusammenhang mit dem Tracing Modus der bash

Fuer uns interessant ist an dieser Stelle der Inhalt der Variablen PS1, sie definiert das Aussehen der Kommandozeile.
Sie wird meist in der Datei /home/user/.bashrc (oder abgekuerzt ~/.bashrc) definiert.
Das folgende Beispiel zeigt zuerst die ausfuehrliche Variante, mit Angabe des gesamten Pfades, und dann wie man den Pfad nur noch mit dem letzten Verzeichnis aus ${PWD} darstellt:

Code:

PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '

Fuehrt zu:
user@host ~/music/mp3/grave_digger/tunes_of_war $


Code:

PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \W \$\[\033[00m\] '

Fuehrt zu:
user@host tunes_of_war $

Anzumerken ist, dass in den obigen Beispielen der Teil 'user@hostname' gruen darsgestellt wird ( \[\033[01;32m\] ) und der Pfad blau ( \[\033[01;34m\] ).


Neben den PSx Variablen kennt die Bash noch die Umgebungsvariable PROMPT_COMMAND.
Diese wird jedesmal vor der Ausgabe von PS1 ausgefuehrt. Sie dient dazu, auf Zustandsabhaengige Variablen (im allgemeinen) zu reagieren. Beispielsweise kann beim Betreten eines Unterverzeichnisses damit jedesmal ein ls Kommando ausgegeben werden, oder andere nuetzliche Spielereien (allgemein beispielsweise die Ausfuehrung eines Scripts veranlassen).
In diesem Beispiel moechte ich den oben aufgetretenen Nebeneffekt, dass man vielleicht nicht mehr weiss wo genau man sich nun im Dateisystem befindet (man hat ja nur noch den letzten Teil angezeigt) ausgleichen.
Die meisten Terminals benutzen den Inhalt dieser Variablen, um in der Fensterleiste den Titel des Fensters damit zu setzen.
Es bietet sich also an, hier den gesamten Pfad auszugeben, so dass man zwar einen schlanken Prompt hat, aber dennoch die Information, wo genau man sich befindet aus der Titelleiste des Terminalfensters ablesen kann.

Code:

PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME}:${PWD/$HOME/~}\033\\"'

Die Fensterleiste des Terminals sieht dann so aus:
Code:

user@host ~/music/mp3/grave_digger/tunes_of_war



Abschliessend moechte ich den Leser ermuntern, sich selber mit den Variablen der Bash zu befassen. Hierfuer eignen sich die Google Keywords:
Code:

intitle:bash variable HOWTO


viel Spass damit...

Marco
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Tips, Tricks, Helferlein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy