Die Shell
s – spricht Bash, damit deine Skripte einfach weiterlaufen. Und Tab kennt jeden Befehl.
s interaktiv
s skript.sh ARG … Skript ausführen
s -c 'befehl' einen Befehl
s -e -x -u -o pipefail wie bei bash
Bash-Skripte laufen
Fast alles, was man aus Bash kennt, ist da: Variablen, Pipes, if/for/while/case,
Funktionen, [[ … ]] mit Mustern und =~, Felder und assoziative Felder, $(( )),
Here-Dokumente, <(befehl), alle ${x…}-Ersetzungen, set -euo pipefail,
select, Namensreferenzen (declare -n), extglob und **/.
Die Probe aufs Exempel: Homebrews brew und git filter-branch laufen unter
s mit derselben Ausgabe wie unter bash. Getestet wird jeder Fall gegen bash 5.
Tippen macht Spaß
- Tab ergänzt Befehle (mit Lang- und alten Namen und Beschreibung), Optionen (mit Erklärung), Pfade,
Variablen – und weiß aus der
spec, ob ein Argument ein Pfad, Ordner, Prozess oder Benutzer ist.
Zweimal Tab zeigt die Liste.
- Verlauf mit Pfeiltasten, Strg+R sucht darin,
!! und !$ gehen auch.
Gespeichert in ~/.s_history.
- Die üblichen Tasten: Strg+A/E/K/U/W/Y,
Alt+B/F, Alt+. holt das letzte Wort.
- Tippfehler?
s schlägt den nächsten Namen vor: „meintest du …?“
- Alte Namen:
cp, mv, ls … werden automatisch zu c, m, l.
Startdatei: ~/.src. Meldungen kommen auf Deutsch, in einer Zeile.
Was (noch) fehlt
Jobsteuerung (fg, bg, Strg+Z), coproc, read -t,
ulimit, times, caller, wait -n.
complete wird angenommen, wirkt aber nicht – s nimmt ja die specs.
Wo sie läuft
Auf nullos selbst! Gibt es /bin/s, startet der Kernel beim Hochfahren gleich die Shell.
Rohre, Schleifen, $( ) und Funktionen laufen dort. exit führt zurück zur kleinen
Kernel-Shell. Auf dem Mac: alle Tests grün.
Für kleine Geräte ohne fork gibt es eine Fassung, die Programme über einen einzigen Systemaufruf startet.