Anzeige
Linux & Co.

cli.help – Update: Bash Builtins Teil 5/5

Die letzten Bash-internen Tools - mit Nervkram und nervendem Kram.

Nach über 50 Tools ist endlich Schluss mit den Bash Builtins, puhhh. Wirkliche Highlights finden sich in den letzten zehn Werkzeugen nicht, aber zumindest zwei Dinge werden im Gedächntnis bleiben – eines war einfach nur nervig und ein anderes lässt sich wunderbar für Schabernack einsetzen. Und für STRG+C-Freunde gibt es auch noch eine Star-Wars-Referenz: „It’s a trap!“. Aber mal von vorne …

Anzeige

Bash Builtins bei cli.help

Zur Erinnerung nochmal ganz kurz: cli.help ist unsere hauseigene Linux-Hilfe für den Terminal im Terminal. Mit den Bash Internals sind es nun insgesamt 145 Hilfeseiten. Via curl könnt Ihr jederzeit Hilfe zu typischen Linux-Tool abrufen:

curl cli.help/hilfe
curl cli.help/printf
curl cli.help/chmod

Und so weiter. Weitere Infos findet Ihr auf unserer GitHub-Seite.

Bei den Bash Builtins handelt es sich um Bash-interne Werkzeuge – in diesem letzten Part dazu um folgende:

test
times
trap
type
typeset
ulimit
umask
unalias
unset
wait

Anzeige

Und hier natürlich auch wieder:

curl cli.help/test
curl cli.help/umask

Und Bonuspunkte für den Nervfaktor bekommen: times und ulimit. times „Gibt den kumulierte Nutzer- und Sysemzeitverbrauch der Shell und aller von ihr gestarteten Prozesse aus.“, wie die Hilfe mitzuteilen weiß. Aber wie genau lässt es sich einsetzen? Wie lassen sich die ausgegebenen Zeiten beeinflussen? Eigentlich soll cli.help genau solche Fragen beantworten, bei times müssen wir passen :( Warum? Nun, versucht mal nach „times“ zu suchen – fast ein Ding der Unmöglichkeit … Es gibt es deutlich verbreitetere Tool „time“, in so ziemlich jedem Artikel steht irgendwo sowas wie „multiple times“ und das gesuchte times scheint auch kaum jemand irgendwo zu nutzen. Und noch dazu verhält es sich hier unter Linux und Windows (git-bash) anders … Es nervt.

Wenn Ihr mal selbst nerven wollt, jubelt jemandem folgenden Befehl unter:

ulimit -v 1

Das setzt den virtuellen Speicher der aktuellen Shell auf ein Maximum von 1 – was genau das macht, müsst Ihr schon selbst probieren ;) Es geht auch nichts kaputt, versprochen. Und dann versucht es mal mit höheren Werten – der Grundeffekt wird bleiben, die Details aber werden sich ändern. Wirklich nützlich ist ulimit sicherlich nur in sehr sehr speziellen Szenarien, aber lohnt sich schon, es zu kennen.

Inhalte

Und wie bei allen cli.help-Updates kommt jetzt, was gar nicht kommen soll: Der Inhalt aus den neuen Hilfedateien im Browser, wo er nicht hingehört. cli.help-Inhalt gehört in den Terminal. But dennoch …

test

Testen, ob Datei foobar existiert:

test -e foobar

Testen, ob Datei foobar nicht existiert:

test ! -e foobar

Testen, ob Datei foo älter ist als Datei bar:

test foo -ot bar

Testen, ob String/Variable meinevar nicht leer:

test -n "$meinevar"

Testen, ob Variable meinevar ungleich hallo ist:

test "$meinevar" != "hallo"

Testen, ob Integer/Zahl größer oder gleich 5 ist:

test $a -gt 5

Testen, ob Zahl a größer 5 UND String b existent ist:

test $a -gt 5 && test -n "$b"

Testen, ob Zahl a größer 5 ODER String b existent ist:

test $a -gt 5 || test -n "$b"

Verwendung als If-Then-Else-Statement:

test $a -gt 5 && echo Ja || echo Nein

Wie oben, aber in symbolischer Schreibweise mit []:

if [ $a -gt 5]; then echo Ja, else echo Nein; fi

times

Zeitverbrauch anzeigen:

times 

HILFE benötigt!
Das Kommando verhält sich häufig komisch bis falsch, zudem
lassen sich nirgends Infos über den (sinnvollen) Gebrauch finden – und
nach so einem Wort zu googlen ist zum Kotzen …

Wenn jemand Infos zu dem Mistding hat, bitte her damit – Danke!

trap

In Skripten: Beenden per STRG+C (SIGINT) und per kill-Kommando ohne Signalangabe (SIGTERM) verhindern und stattdessen Warnung ausgeben:

trap "echo Nein, nein, nein, böser User." SIGINT SIGTERM

type

Alle „Orte“ des Programms echo zeigen, inklusive Aliassen, Builtins und Funktionen:

type -a echo

Nur den Pfad der echo-Binärdatei ausgeben:

type -P echo

Nur Typ (alias, keyword, function, builtin, file)
dessen was ausgeführt wird anzeigen:

type -t echo

typeset

Synonym für declare, daher:

curl cli.help/declare

ulimit

Alle Ressourcenlimits aufführen, die zur Verfügung stehen:

ulimit -a

Virtuellen Speicher der aktuellen Shell limitieren und dem User den ganzen Tag versauen:

ulimit -v 1

umask

Ordner per mkdir nicht mit Standardrechten 755 (umask -> 022), sondern mit 777 (umask -> 000) erstellen:

umask 000

Rechte für Dateierstellung von 777 auf 333 setzen (7 minus 4):

umask 444

unalias

Alias für ls in aktueller Shell entfernen:

unalias ls

Alle Aliasse entfernen:

unalias -a

unset

Funktion test auflösen/entfernen:

unset -f test

Variable test auflösen/entfernen:

unset -v test

Variable test auflösen falls existent – sonst die Funktion test:

unset test

wait

Warten, bis Job Nr. 2 fertig ist, dann echo ausführen:

wait %2; echo "Das Ende"

Skriptchen:
1. „Anfang“ ausgeben.
2. ping ausführen und dessen Job-Nummer in $pid speichern.
3. Warten bis Job Nr. $pid beendet ist.
4. „Ende“ ausgeben.

echo Anfang
ping tutonaut.de & pid=$!
wait $pid
echo Ende

Nach Ping-Befehl „Ende“ ausgeben – egal, ob ping erfolgreich war oder nicht:

ping tutonaut.de & pid=$!; wait $pid; echo Ende

Wie oben, aber nur bei Erfolg Ende ausgeben:

ping tutonaut.de && echo Ende

Weitere Artikel rund um Linux – auch mit Grafik ;) – findet Ihr hier.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Do NOT follow this link or you will be banned from the site!