Erklärung
Vorwissen: keines. Die Beispiele dieser Seite laufen beim Bauen der Website auf einem Linux-Rechner, die Ausgaben sind also echt. Angelegt wird dafür ein kleiner Ordner mit einer Logdatei, einer CSV-Datei und einer Notiz. Die Shell ist sprachunabhängig; nur Beispiel 6 zeigt R und Python getrennt.
Warum sich die Shell lohnt
Auswertungen laufen irgendwann auf einem Server, und der hat keine Oberfläche. Ein Befehl ist wiederholbar und dokumentierbar, ein Mausklick nicht. Und manche Aufgaben sind in der Shell schlicht schneller: Wer wissen will, wie viele Zeilen einer Logdatei einen Fehler enthalten, tippt das in fünf Sekunden.
Ein Baum, keine Laufwerke
Unter Windows hat jedes Laufwerk einen Buchstaben. Unter Unix gibt es genau einen Baum ab /; weitere Datenträger werden an einer Stelle darin eingehängt. Auch Geräte und laufende Prozesse erscheinen als Dateien, weshalb sich dieselben Werkzeuge auf fast alles anwenden lassen.
Die Grundbefehle
ls |
Inhalt auflisten |
-l ausführlich, -a auch versteckte, -R rekursiv |
cd |
Verzeichnis wechseln |
.. eine Ebene hoch |
pwd |
wo bin ich |
|
mkdir |
Ordner anlegen |
-p samt Zwischenebenen |
cp, mv |
kopieren, verschieben, umbenennen |
-r rekursiv |
rm |
löschen |
-r rekursiv, kein Papierkorb |
cat, head, tail |
Inhalt, Anfang, Ende |
-n Zeilenzahl, tail -f mitlesen |
wc |
zählen |
-l Zeilen |
rm löscht sofort und endgültig. rm -rf auf ein falsches Verzeichnis ist einer der teuersten Tippfehler überhaupt. Vor dem Löschen mit Platzhaltern lohnt es sich, denselben Ausdruck zuerst mit ls auszuprobieren.
Die drei Ströme
| stdin |
0 |
Eingabe |
< datei |
| stdout |
1 |
normale Ausgabe |
> datei (überschreibt), >> datei (hängt an) |
| stderr |
2 |
Fehlermeldungen |
2> datei, 2>/dev/null |
Fehlermeldungen laufen über einen eigenen Kanal. Deshalb erscheinen sie weiterhin am Bildschirm, wenn die normale Ausgabe in eine Datei geht, und deshalb landen sie nicht versehentlich mitten in den Daten.
Rechte
ls -l beginnt mit zehn Zeichen, etwa -rw-r--r--: erst die Art (- Datei, d Verzeichnis), dann drei Dreiergruppen für Besitzer, Gruppe und alle übrigen, jeweils Lesen, Schreiben, Ausführen.
| 7 |
rwx |
lesen, schreiben, ausführen |
| 6 |
rw- |
lesen, schreiben |
| 5 |
r-x |
lesen, ausführen |
| 4 |
r-- |
nur lesen |
chmod 600 datei heisst also: Besitzer darf lesen und schreiben, sonst niemand etwas. Genau das gehört auf Dateien mit Zugangsdaten.
Kurz nachgeschlagen
| Zeilen zählen |
wc -l datei |
| in Dateien suchen |
grep -rn "muster" ordner/ |
| Dateien finden |
find . -name "*.csv" |
| Spalte herausschneiden |
cut -d';' -f2 datei.csv |
| rechnen über eine Spalte |
awk -F';' 'NR>1 {s+=$2} END {print s}' datei.csv |
| sortieren und zählen |
sort \| uniq -c \| sort -rn |
| grosse Datei ansehen |
less datei, tail -f logdatei |
| Rechte setzen |
chmod 600 datei, chmod +x skript.sh |
| Platzbedarf |
du -sh ordner, df -h |
| Befehl finden |
which python, type ls |