Skip to content

Instantly share code, notes, and snippets.

@bfncs
Created August 27, 2012 08:22
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save bfncs/3486670 to your computer and use it in GitHub Desktop.
Save bfncs/3486670 to your computer and use it in GitHub Desktop.
Arbeiten auf der Bash-Konsole

Arbeiten auf der Bash-Konsole

In Verzeichnissen navigieren

Grundlagen

Unter Linux und allen anderen auf UNIX basierenden Betriebssystemen (Mac OS, BSD, etc) werden alle Dateien innerhalb eines einzigen hierarchischen Baumes organisiert; Ordner können weitere Ordner oder Dateien enthalten.

Diese Hierarchie startet mit dem Ordner /, der sogenannten "Root-Verzeichnis". Von dort aus kann jeder Ort im Dateisystem durch Angabe eines absoluten Pfades erreicht werden. Absolute Pfade erkennt man daran, dass Sie mit einem / beginnen, der für das Root-Verzeichnis steht. Das eigene Verzeichnis befindet sich im Normalfall etwa unter dem absolut Pfad /home/username/ (wobei username dem eigenen Benutzernamen entsprechen muss).

Ein relativer Pfad ist im Gegensatz dazu ein Pfad, der nicht mit einem / beginnt, in diesem Fall wird nicht ausgehend vom Root-Verzeichnis gesucht, sondern vom aktuellen Arbeitsverzeichnis aus.

Befindet man sich auf der Konsole im Ordner /home/, ist das eigene Verzeichnis gleichermaßen über den absoluten Pfad /home/username als auch über den relativen Pfad username erreichbar.

Es gibt zwei besondere Verzeichnisse, die sich automatisch in jedem Ordner befinden

  • Das Verzeichnis ./ verweist immer auf das aktuelle Verzeichnis.
  • Das Verzeichnis ../ verweist immer auf das nächsthöhere Verzeichnis.

Dass sich alle Dateien und Verzeichnisse unterhalb des Root-Verzeichnisses / befinden bedeutet auch, verändert sich auch nicht dadurch, dass mehrere, verschiedene Speichergeräte (Festplatten, USB-Speicher, etc.) im System genutzt werden. Diese werden in einem Unterverzeichnis in die Dateihierarchie eingebunden (standardmäßig meist im Ordner /media/).

Weitere Informationen:

Aktuelles Verzeichnis

Das aktuelle Verzeichnis kann man sich mit dem Befehl pwd ("Print Working Directory") anzeigen lassen. Nach dem Öffnen der Konsole ist dies im Normalfall das eigene Verzeichnis.

pwd
--> /home/username

Verzeichnisinhalt

Den Inhalt des aktuellen Verzeichnisses, kann man sich mit ls ("List Directory Contents") anzeigen lassen.

Eine übersichtlichere Ausgabe als Liste bekommt man durch Anhängen der Option -l, versteckte Dateien können mit der Option -a ausgegeben werden.

Beispiele

ls
ls -l
ls -a
ls -al

Verzeichnis wechseln

Verzeichnisse kann man mit dem Befehl cd ("Change Directiory") wechseln. Dazu gibt man nach dem Befehl den absoluten oder relativen Pfad zum gewünschten Verzeichnis ein.

Beispiel

Im folgenden Beispiel wird der Einsatz von ls mit absoluten und relativen Pfaden sowie den besonderen Verzeichnissen . und .. demonstriert. Der Aufruf von pwd dient dabei nur der Anzeige des aktuellen Verzeichnisses, er muss natürlich nicht eingegeben werden, wenn man nicht explizit wissen will, in welchem Verzeichnis man sich befindet.

Befindet sich ein # am Zeilenanfang handelt es sich um einen Kommentar zum folgenden Code. Die Zeichenfolge --> am Anfang der Zeile soll darstellen, dass es sich bei der Zeile um die Rückgabe der Konsole handelt.

# Das aktuelle Arbeitsverzeichnis ist /home/username
pwd
--> /home/username

# Zum Verzeichnis /home/username/downloads durch Eingabe des relativen
# Pfades wechseln
cd Downloads
pwd
--> /home/username/Downloads

# Zum aktuellen Verzeichnis wechseln
cd ./
pwd
--> /home/username/Downloads

# Zum darüberliegenden Verzeichnis wechseln
cd ../
pwd
--> /home/username

# Zum Verzeichnis /home/username/downloads durch Eingabe des absoluten
# Pfades wechseln
cd /home/username/Downloads
pwd
--> /home/username/Downloads

Dateirechte

Alle Benutzer haben einen Benutzernamen und gehören zu verschiedenen Benutzergruppen. Für jedes Verzeichnis und jede Datei kann festgelegt werden, zu welchem Benutzer und zu welcher Gruppe sie gehören. Anschließend kann man für den Besitzer, die besitzende Gruppe und alle anderen Benutzer folgende Rechte genau einstellen:

Darf das Verzeichnis/die Datei von diesem Benutzer:

  • gelesen werden,
  • verändert werden,und
  • ausgeführt werden?

Beispiel

Da Dateirechte unter Linux ein recht komplexes Thema sind, soll hier nur beispielhaft gezeigt werden, wie man eine Datei ausführbar macht. Um Dateirechte zu Verändern nutzt man den Befehl chmod. Mit dem folgende Befehl wird die Datei myscript.sh im aktuellen Verzeichnis ausführbar gemacht.

chmod +x myscript.sh

Weiterführende Informationen

Programme ausführen

Möchte man ein Programm auf der Konsole ausführen, reicht es, den passenden Namen auf der Konsole einzugeben. Ist man dem Text bis hierhin gefolgt, hat man dies mit den Programmen pwd, ls, cd und chmod bereits erfolgreich getan.

Dies funktioniert nur deshalb, weil Linux nach dem passenden Programm mit dem eingegebenen Namen an definierten Orten im System sucht. Dies Orte werden in der Umgebungsvariable PATH angegeben und man kann sie mit folgendem Befehl betrachten:

echo $PATH
--> /home/username/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin

Die Rückgabe wird vom System zu System variieren, ist aber immer aus mehreren absoluten Pfaden getrennt durch das Zeichen : aufgebaut. Gibt man beispielsweise den Befehl pwd ein, wird hinter den Kulissen nacheinander in jedem dieser Ordner nachgeschaut, ob eine ausführbare Datei namens pwd vorhanden ist. Im obigen Beispiel wird also in absteigender Reihenfolge in folgenden Ordnern nach der Datei gesucht:

  • /home/username/bin
  • /usr/local/sbin
  • /usr/local/bin
  • /sbin
  • /bin

Wird die Datei gefunden, wird sie sofort ausgeführt und die restlichen Ordner werden nicht weiter beachtet. Wird eine passende Datei in keinem der Ordner gefunden, erhält man eine Fehlermeldung.

Ein eigenes Programm ausführen

Wie oben beschrieben impliziert das Ausführen eines Programms immer die Suche nach ihm in bestimmten, vorher festgelegten Ordnern. Möchte man jedoch ein eigenes Programm ausführen, das sich nicht in einem dieser Ordner befindet, muss man den (absoluten oder relativen) Pfad zum Programm explizit angeben, um den Suchmechanismus zu umgehen. Um ein Programm namens theprog im aktuellen Verzeichnis ausführen würde man also beispielsweise folgenden Befehl eingeben:

./theprog

Beispiel

Im eigenen Verzeichnis befindet sich im Unterordner scripts das Bash-Skript myscript.sh, welches man ausführen will. Das Skript beginnt mit einer passenden Shebang-Zeile, die signalisiert, wie sie ausgeführt werden soll, ist aber noch nicht ausführbar. Mit dem folgenden Vorgehen navigiert man zum Ordner, macht die Datei ausführbar und führt sie aus.

# Das aktuelle Arbeitsverzeichnis ist /home/username
pwd
--> /home/username

# Zum Verzeichnis /home/username/scripts durch Eingabe des relativen
# Pfades wechseln
cd scripts

# Das Skript myscript.sh ausführbar machen
chmod +x myscript.sh

# Das Script myscript.sh durch Eingabe eines relativen Pfades ausführen
./myscript.sh

# ODER:
# Das Sript myscript.sh durch Eingabe eines absoluten Pfades ausführen
# (umständlicher, aber funktioniert auch, wenn man sich aktuell nicht
# im gleichen Verzeichnis wie das Skript befinden würde)
/home/username/scripts/myscript.sh

Programme beenden

Um ein laufendes Programm zu beenden nutzt man entweder einen dafür eingebauten Weg oder drückt einfach STRG+C

Tipps

Never underestimate the power of your TAB key

Die Tabulatortaste ist ein unschätzbar guter Freund bei der Arbeit mit der Konsole. Sie hat die Funktion der Autovervollständigung, das heißt durch Drücken von TAB wird automatisch versucht, den angefangenen Befehl sinnvoll zu beenden. Ist das bisher eingegebene noch nicht eindeutige genug, liefert das doppelte Drücken von Tab eine Liste mit sinnvollen Möglichkeiten.

Eine detailierte Beschreibung der Autovervollständigungs-Funktion mit Beispielen findet man hier: (http://wiki.ubuntuusers.de/Bash#Autovervollstaendigung)

RTFM

Für (fast) jeden Befehl gibt es eine eingebaute Bedienungsanleitung, die man auf der Konsole lesen kann. Zu diesem Zweck gibt es das Programm man. Die ausführliche Dokumentation des Programms ls kann man beispielsweise durch Eingabe des folgenden Befehls ansehen:

man ls

Innerhalb des Programms man kann man den Text mit den Cursortasten oder den Tasten BildAuf/BildAb scrollen. Um man zu verlassen drück man einfach q.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment