- Zunächst stellen wir sicher, dass die Datei /etc/inputrc die folgenden Zeilen enthält:
code: 1: 2:
"\e[5~": history-search-backward "\e[6~": history-search-forward
Ist das geschehen, so können wir nach einem erneuten Einloggen früher eingegebene Befehle sehr leicht vervollständigen - so blättert beispielsweise ein f<Bild-Auf> durch alle Befehle in der History, die mit f anfangen.
- Folgendes fügen wir an geeigneter Stelle in die ~/.bashrc ein:
code: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
up() { if [ $# == 0 ] then cd .. return fi if [ "${1//[^0-9]/}" != "$1" ] then echo "Not a number" return fi STRING="" for (( i=0; i<$1 ; i++ )) do STRING="$STRING../" done cd $STRING }
Danach genügt ein source ~/.bashrc oder das Öffnen einer neuen shell um die Funktion nutzen zu können. up verhält sich genauso wie cd .., d.h es wechselt ins Elternverzeichnis des aktuellen Verzeichnisses. up N springt N Verzeichnisse nach oben, wobei N eine ganzzahlige Zahl sein muss.
- unbekannter als die prominente for i in... Schleife dürfte die unter gewissen Umständen auch recht nützliche C-Version der for-Schleife sein: for ((i=0; i<foo; i++)); do bar; done
Wichtig sind hierbei die doppelten Klammern!
- Dateien suchen leicht gemacht - die erste Funktion sucht case sensitive, die zweite case insensitive nach Dateinamen, die das übergebene Suchmuster enthalten. Dazu müssen beide Funktionen in die ~/.bashrc geschrieben werden.
code: 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
ffs(){ if [ $# -gt 0 ] then find -name "*$1*" else echo "argument required" fi } ffi(){ if [ $# -gt 0 ] then find -iname "*$1*" else echo "argument required" fi }
Verwendung: ffs Suchwort bzw ffi Suchwort
- Das hier spart ein wenig Schreibarbeit, wenn man auf der Suche nach einem bestimmten Prozess ist. Auch hierbei handelt es sich um eine Funktion für die ~/.bashrc.
code: 1: 2: 3: 4: 5: 6: 7: 8: 9:
pf(){ if [ $# -gt 0 ] then ps aux | grep TTY | grep -v "grep TTY" ps aux | grep -i "$1" | grep -v "grep -i $1" else echo "argument required" fi }
Verwendung: pf Prozess - Groß- u. Kleinschreibung des Prozesses spielen keine Rolle.
- Eine kleine Erweiterung für den bash-Promt, auf die ich nicht mehr verzichten will - die Anzeige der aktuellen Uhrzeit. Um das zu bewerkstelligen muss man nur die Variable PS1entsprechend anpassen.
Dazu sehen wir und zunächst den aktuellen Prompt an:
code: 1:
user@host ~ $ echo $PS1
Die Ausgabe könnte wie folgt aussehen:
code: 1:
\[\033[01;30m\]\u@\h\[\033[01;34m\] \w $\[\033[00m\]
Das sieht jetzt etwas unübersichtlich aus, ist aber nur halb so schlimm - verstehen müssen wir es eigentlich nicht, dennoch der Vollständigkeit halber ein kurzer Überblick:
- \[ startet eine Sequenz von Zeichen, die nicht angezeigt werden.
- \033 Ein ASCII-Escape-Charakter, kann auch als \e geschrieben werden.
- [01;30m\] 01 bedeutet hier, dass der Text fett dargestellt wird, 30 ist die Farbe (hier grau), m beendet die Escape-Sequenz und \] "schließt" das \[ von oben.
- \u@ Name des aktuellen Users gefolgt von einem @-Zeichen.
- \h der Hostname.
- \[\033[01;34m\] das gleiche wie oben, bloß mit einer anderen Farbe.
- \w $ das aktuelle Verzeichnis gefolgt von einem Dollar-Zeichen.
- \[\033[00m\] wieder das gleiche wie schon die vergangen 2 Male - diese Einstellungen beziehen sich dann auf die Darstellung der eingetippten Kommandos.
Aber um zurück zum Thema zu kommen, die aktuelle Uhrzeit können wir einfügen, indem wir - z.B. am Anfang der PS1-Variable - ein " \A" einfügen. Da das aber noch reichlich unspektakulär ist, umschließen wir das Ganze mit eckigen Klammern und färben es grün ein:
code: 1:
user@host ~ $ PS1="\[\033[0;32m\]\[[\A] $PS1"
Die Farbe/Darstellung ist natürlich austauschbar. sofern alles passt, können wir unsere .bashrc entsprechend anpassen:
code: 1: 2: 3: 4: 5:
#vorher PS1='\[\033[01;30m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] ' #nachher PS1='\[\033[0;32m\][\A] \]\[\033[01;30m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
Selbstverständlich gibt es neben \w, \A etc. noch weitere Parameter, diese finden sich in der Manpage der Bash unter PROMPTING
Mehr demnächst...
Letztes Update: 10.11.08