Bash Grundlagen

Prompt

Der Prompt ist frei konfigurierbar: $PS1:

Benutzer@Hostname: Verzeichnis Status

Übersicht

Interne/Externe Kommandos

type Kommando
  • Kommando is /bin/Kommando

    • Kommando ist extern
  • Kommando is a shell builtin

    • Kommando ist intern

Befehle aufrufen

Kommando -short --longOption [optionale Parameter]
  • ls -al
  • man ls
  • rm -rf / (Please do try this at home!)
  • mkdir -p /tmp/wurst/wasser

$PATH

bestimmt die Suchpfade der Bash

  • Welche Pfade sind hinterlegt? echo $PATH:

    [...]:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:[...]
    
  • Bei gleichnamigen Programmen wird $PATH sequentiell durchgesucht

    • Programm prog in /usr/sbin/ und /sbin/

      • /usr/sbin/prog wird ausgeführt!
  • Neue Pfade werden in der .bashrc hinterlegt, eigene Shellskripte kommen nach /usr/local/bin bzw. /usr/local/sbin

Aliasse

  • ls -l als Standard (es lassen sich bestehende Kommandos überschreiben, vorsicht!):

    alias ls='ls -l'
    
  • ls ohne gesetzten Alias aufrufen:

    'ls'
    \ls
    /bin/ls
    

Ausführen

prog1; prog2

Erst prog1 dann prog2

prog1 & prog2

prog1 läuft im Hintergrund, parallel dazu prog2

prog1 && prog2

prog2 wird nur ausgeführt, wenn prog1 erfolgreich war

prog1 || prog2

prog2 wird nur ausgeführt, wenn prog1 nicht erfolgreich war (nicht mit der Pipe verwechseln)

Wann war ein Programm erfolgreich?

echo $?
  • $? == 0 -> Erfolg!
  • $? != 0 -> Gefahr!

Hilfe suchen

Meistens funktioniert programm --help

Dann gibt es da noch den info Befehl (kenne aber keinen, der diesen nutzt).

Wichtiger sind die man-Pages:

man-Pages zum Thema XY findet man mittels apropos XY

Innerhalb der man-Pages:

  • Pfeiltasten oder PageUp/Down zum Navigieren
  • Suchen mit /
  • Weitersuchen mit n (oder rückwärts mit N)
  • Beenden mit q

Achtung - die man-Pages haben mehrere Sektionen: man 1 passwd ist was anderes als man 5 passwd!

Arbeiten mit Dateien

Kopieren: cp quelle ziel (es geht auch cp quelle1 quelle2 ziel)

Verschieben: mv quelle ziel (es geht auch mv quelle1 quelle2 ziel)

Löschen: rm datei

Verzeichnis löschen: rmdir verzeichnis (geht nur, wenn Verzeichnis leer ist, ansonsten rm -rf verzeichnis)

Neue, leere Datei anlegen (oder Zeitstempel aktualisieren): touch datei

Ordner anlegen: mkdir ordner (Verschachtelte Verzeichnisse lassen sich mit mkdir -p ordner/unterordner anlegen - legt erst ordner an, dann ordner/unterordner)

Informationen zu Datei anzeigen: file datei

Komprimieren/Zusammenfassen: tar (Tape-Archive)

  • Anlegen: tar cvf myarchive.tar /ordner (Anlegen und komprimieren: tar czvf myarchive.tar.gz /ordner)
  • Entpacken tar xvf myarchive.tar (oder für komprimierte Archive: tar xzvf myarchive.tar.gz)
  • Archiv-Inhalt anzeigen lassen: tar tvf myarchive.tar (oder für komprimierte Archive: tar tzvf myarchive.tar.gz)

History

Anzeigen: history

Letzten Befehl wiederholen: !!

Befehl #23 (vom Befehl history) wiederholen: !23

Befehl der mit bla beginnt wiederholen: !bla

History durchsuchen: CTRL+r

History löschen: history -c

Pipes

Die Ausgabe des einen Programms kann die Eingabe des nächsten Programms sein:

prog1 | prog2 | prog3

Standard-Kanäle

stdin (Kanal 0) - Eingabe, meist Tastatur (oder aus Pipe)

stdout (Kanal 1) - Ausgabe, meist das Terminal (oder in Datei, Nadeldrucker mit Endlospapier, whatever)

stderr (Kanal 2) - Fehlerausgabe

Umleiten

prog 1> file: stdout (Ausgabe) von prog wird in file geschrieben

prog 2> file: stderr (Fehler) von prog wird in file geschrieben

oder in Kombination: prog 1> outputfile 2> errorfile