Tipps und Tricks zur bash: Unterschied zwischen den Versionen
K (→Platzhalter / Wildcards: ~ und ~benutzername) |
K (typo) |
||
Zeile 27: | Zeile 27: | ||
* <tt>?</tt>: für ein beliebiges Zeichen | * <tt>?</tt>: für ein beliebiges Zeichen | ||
* <tt>~</tt>: für das {{WP|Home directory|Home-Verzeichnis|en}} des gerade angemeldeten Benutzers | * <tt>~</tt>: für das {{WP|Home directory|Home-Verzeichnis|en}} des gerade angemeldeten Benutzers | ||
− | * <tt>~xyz</tt>: | + | * <tt>~xyz</tt>: für das Home-Verzeichnis des Benutzer <tt>xyz</tt> |
* <tt>Datei[1-3]</tt>: für "<tt>Datei1 Datei2 Datei3</tt>" | * <tt>Datei[1-3]</tt>: für "<tt>Datei1 Datei2 Datei3</tt>" | ||
* <tt>Datei[13]</tt>: für "<tt>Datei1 Datei3</tt>" | * <tt>Datei[13]</tt>: für "<tt>Datei1 Datei3</tt>" |
Version vom 1. November 2006, 20:34 Uhr
Die bash ist die Standard-Shell unter Linux.
Inhaltsverzeichnis
Konfiguration
- Globale Konfiguration
- /etc/bashrc
- Benutzerspezifische Konfiguration
- ~/.bashrc (wird für Nicht-Loginshells ausgeführt)
- ~/.bash_profile (wird für Loginshells ausgeführt, führt normalerweise die .bashrc ebenfalls aus)
Übergeben von Dateinamen
Mehrere Dateinamen
Im Gegensatz zu DOS können an praktisch alle Linux-Tools beliebig viele Dateinamen per Parameter übergeben werden. Statt
$ rm Datei1 $ rm Datei2 $ rm Datei3
kann auch einfach
$ rm Datei1 Datei2 Datei3
ausgeführt werden.
Platzhalter / Wildcards
Ähnlich wie bei DOS können Platzhalter in Dateinamen verwendet werden:
- *: für beliebig viele beliebige Zeichen
- ?: für ein beliebiges Zeichen
- ~: für das Home-Verzeichnis des gerade angemeldeten Benutzers
- ~xyz: für das Home-Verzeichnis des Benutzer xyz
- Datei[1-3]: für "Datei1 Datei2 Datei3"
- Datei[13]: für "Datei1 Datei3"
- Datei{1,3}: für "Datei1 Datei3"
Ein wichtiger Unterschied hierbei ist jedoch, dass die Platzhalter nicht von dem Programm, sondern von der Shell ausgewertet werden. Wenn ein Verzeichnis beispielsweise die Dateien Datei1, Datei2 und Datei3 enthält, und der Befehl
rm Datei?
ausgeführt wird, dann macht die Shell intern
rm Datei1 Datei2 Datei3
daraus – rm erfährt also gar nicht, dass der Benutzer Datei? eingegeben hat.
Mehrere Dateien umbenennen
Aus diesem Grund funktioniert die aus DOS gewohnte Syntax
ren *.alt *.neu
unter Linux nicht - die bash würde aus
mv Datei* File*
mv Datei1 Datei2 Datei3 File*
machen. Glücklicherweise erkennt mv den Lapsus und verweigert die Operation.
Stattdessen bedient man sich dazu einer for-Schleife:
for i in Datei*; do mv $i File${i/Datei}; done
Das ${i/Datei} schneidet hierbei den Teil Datei aus dem Namen weg und gibt nur den Rest, also die Zahl, zurück.
Aliase
Neue Namen
Mit Aliasen kann man bequem neue Befehle definieren, die letztendlich einen anderen Befehl ausführen, falls gewünscht, auch mit vorgegeben Parametern. Beispielsweise kann man mit
alias dateiliste=ls
einen neuen Namen für das Tool ls schaffen; ab dann kann man statt ls auch dateiliste in der Konsole eingeben.
Vorgegebene Parameter
Viel sinnvoller als das Erschaffen von neuen Namen für vorhandene Tools ist jedoch die Vorgabe von Parametern:
alias ls="ls -l --color=auto -F -h -X"
In diesem Beispiel wird ls immer gleich eine Reihe von Parametern[1] mit übergeben, die nun nicht mehr per Hand eingegeben werden müssen. Parameter, die nun per Hand eingegeben werden, werden natürlich zusätzlich zu den vorgegebenen Parametern an ls übergeben.
Aliase umgehen
Benötigt man plötzlich mal ls ohne jegliche Parameter, kann man das Auflösen des Alias mithilfe von Anführungszeichen (' oder ") umgehen:
'ls'
Aliase fest speichern
Aliase gelten immer nur für die aktuelle Sitzung. Um sie dauerhaft zu speichern, müssen sie entweder in die .bashrc des aktuellen Benutzers eingetragen werden, oder, für systemweite Wirkung, in die Datei /etc/bashrc.
- ↑ -l: Listenansicht, --color=auto: farbige Ausgabe, -f: Klassifizierung von Dateien (siehe Manpage), -h: human-readable (Größen in MB etc.), -X: Sortierung nach Erweiterung