Linux Shell - Befehlsübersicht

Hier stelle ich ein paar Shellbefehle und ihre Verwendung anhand von Beispielen dar. Diese Übersicht soll kein Tutorial oder ähnliches darstellen. Sie dient in erster Linie als Merkzettel für mich. Das soll aber den interessierten Leser auf keinen Fall abhalten sich hier ein wenig umzuschauen. Vielleicht ersparts denn doch das Googlen.

Schleifen

for - Schleife

for i in *.png; do convert $i $(basename $i .png).bmp; done
for ((i=0;i<9;i++)); do echo $i; done
for i in Hans Wurst; do echo $i; done
i=0;for bild in *.png; do cp $bild img_$i; i=$(echo "$i+1" | bc); done

Imagemagick

Metainformationen abrufen
$ identify -verbose bild.jpg

Dateiformat ändern
convert bild.jpg bild.png

Ändern der Größe
$ convert -resize 640 source.jpg target.png

Bild drehen (Drehwinkel in Grad und im Uhrzeigersinn)
$ convert -rotate 90 source.jpg target.png

bc - Rechnen auf der Konsole

Bei bc handelt es sich eigentlich um einen Ganzzahl - Konsolen Taschenrechner. Wenn bc mit dem Parameter -l gestartet wird, dann wird eine Biblithek mit reichlich Gleitkommaunterstützung geladen.
Aufruf: $ bc -l

Die Operationen können entweder am bc Prompt direkt oder per echo Befehl übergeben werden. Beim echo wird ein Zeilenumbruch durch ein Semikolon abgebildet.

Aufruf:$ echo '10/3;2.5*2' | bc -l
Antwort:3.33333333333333333333
5

Umrechnung zwischen Zahlensystemen

Mit den Befehlen ibase bzw. obase kann die Eingangs- und die Ausgangszahlenbasis gesetzt werden. ACHTUNG: Wenn die Eingangsbasis gesetzt ist, dann erfolgen alle folgenden Zahlenangaben (auch das Setzen der Ausgangsbasis) im Format der Eingangsbasis. (Also: echo 'ibase=2;obase=10;11' | bc liefert 11 während echo 'obase=10;ibase=2;11' | bc 3 liefert. Alles klar? ;-)

Beispiele:

AufrufAntwort
echo 'ibase=16;C' | bc11
echo 'obase=16;ibase=2;1111' | bcF
echo 'obase=8;ibase=16;12' | bc22
echo 'ibase=2;1001' | bc9

Wichtige Funktionen

Ich habe bereits auf die Online - Hilfe für bc verwiesen. Ich möchte trotzdem noch einmal paar wichtige Funktionen aufführen.
l(x) => ln(x)
sqrt(x) x^1/2
s(x) sin x   (x in rad)
c(x) cos x   (x in rad)

Gnuplot

Gnuplot ist eigentlich ein skript- bzw. kommandozeilengesteuerter Funktionenplotter und hat bei den Shell Befehlen nicht zu suchen. Da mir aber noch keine bessere Strukturierung eingefallen ist, sei hier auf eine eigene Beschreibung verwiesen.

dd - disk dump

man: dd - konvertiert und kopiert eine Datei
Ich benutze dd meist zum Erzeugen von Testdateien einer definierten Größe. Da der Inhalt nicht so wichtig ist, benutze ich /dev/zero als Datenquelle. D.h. die Zieldatei wird mit 0x00 befüllt.
dd if=/dev/zero of=test.dat bs=1k count=10 10kB Datei
dd if=/dev/zero of=test.dat bs=1M count=5 5MB Datei
dd if=/dev/zero of=test.dat bs=110174 count=1 110174B Datei

Ausgabe eines Programm als Argument verwenden

Wenn man die Ausgabe eines Programmes als Argument für andere Befehle benutzen will, kann man das folgendermaßen tun
touch $(date +%Y-%m-%d).txt
Die Shell wertet zunächst den Befehl date +%Y-%m-%d (liefert aktuelles Datum im Format YYYY-mm-dd) aus. Anschließend wird der touch auf die Datei DATUM.txt ausgeführt.
Neben der Variante $(programm) existiert noch die ältere Variante mit Backticks (`)
MYDIR=`pwd`
Speichert das aktuelle Verzeichnis in der Variable $MYDIR.