Befehlsausführung

Aus Mikiwiki
Wechseln zu: Navigation, Suche

Befehlsausführung

"CTRL+Z" zum Stoppen eines Befehls.

"CTRL+C" zum Abbrechen eines Befehls

Siehe auch Ein- und Ausgabeverarbeitung.

Konditionale Befehlsausführung

Anzeige des Exitstatus des letzten Befehls.

$ cd /tmp
$ echo $?
0

$ cd /tump
bash: cd: lux: Datei oder Verzeichnis nicht gefunden
$ echo $?
1

Das Ausrufezeichen kehrt den Exitstatus des letzten ausgeführten Befehls um. Im Beispiel ist der letzte Exitstatus deshalb "1".

$ echo test
test
$ echo $?
0
$ ! echo test
test
$ echo $?
1

Der Befehl "command2" wird nur ausgeführt, wenn der Befehl "command1" erfolgreich war (d. h. falls er mit exit status 0 beendet hat).

$ command1 && command2

Der Befehl "command2" wird nur ausgeführt, wenn der Befehl "command1" nicht erfolgreich war (d. h. falls er nicht exit status 0 beendet hat).

$ command1 || command2

Die Befehle "command2" und "command3" werden nur ausgeführt, wenn der Befehl "command1" nicht erfolgreich war (d. h. falls er nicht exit status 0 beendet hat).

$ command1 || command2 && command3

Job-Verwaltung

Ausführen eines Befehls im Hintergrund. Daraufhin wird in eckiger Klammer die Job-ID gefolgt von der Prozessnummer ausgegeben, z. B. "[1] 664".

$ Befehl &

Ausführen eines Befehls im Hintergrund, wobei die Standardausgabe und Fehlermeldungen in die Datei "file" geschrieben werden.

$ Befehl > file 2>&1 &

Anzeige der gegenwärtig in der aktuellen Shell im Hintergrund laufenden Befehle mit Job-ID und Prozessnummer.

$ jobs -l

Nachträgliches Verschieben eines Vordergrundprozesses in den Hintergrund durch Unterbrechen des Prozesses mit "CTRL+Z", worauf die Job-ID (z. B. "2") und der Name des angehaltenen Befehls ausgegeben wird, der dann wie folgt in den Hintergrund befördert wird.

$ bg %2

Einen Befehl (hier den mit job-ID "2") aus dem Hintergrund in den Vordergrund holen.

$ fg %2

Anzeige der Job-ID des zuletzt gestarteten Hintergrundprozesses.

$ echo $!

Anhalten des zuletzt gestarteten Hintergrundprozesses.

$ kill -STOP $!

Ausführen eines Befehls im Hintergrund, der nach Beenden der Shell (z. B. nach Eingabe von exit oder "CTRL+D") weiterlaufen soll. Die Standardausgabe wird dabei in die Datei "nohup.out" umgeleitet. Falls der Prozess im aktuellen Verzeichnis kein Schreibrecht hat, wird die Datei im Heimatverzeichnis abgelegt.

$ nohup Befehl &

Welcher Prozess verwendet aktuell welche Dateien.

$ fuser
$ lsof

FAQ

Zwischenablage

Zum schnellen Einfügen dient die mittlere Maustaste. Wer nicht gerne mit der Maus arbeitet oder wem das Emulieren der mittleren Maustaste auf einer zwei Tasten Maus nicht leicht von den Fingern geht, kann sich auch mit SHIFT+INSERT behelfen. Diese Tastenkombination funktioniert in allen Terminal Applikationen und in vielen X-Anwendungen.

Grosse Protokolldateien

Protokolldateien können sehr schnell sehr gross werden, lassen sich aber nicht immer ohne weiteres löschen. Läuft der Prozess noch, der die Protokolldatei geöffnet hat, kommt es zu Problemen. Ein einfacher Weg schnell wieder Platz zu schaffen ist, die Datei zu überschreiben. Der folgende Befehl setzt die Dateigrösse auf 0 Byte.

$ cat /dev/null > logfile
$ echo -n > logfile

Live-Stream in Datei speichern

$ mplayer -ao pcm -aofile $DATEI
oder
$ mencoder mms://datei.wmv -o blub -ovc copy -oac copy

Videodateien aneinanderhängen

AVI-Dateien.

$ avimerge -i *.avi -o blub.avi

MPG-Dateien.

$ cat *.mpg > blub.mpg

WMV-Dateien.

$ cat *.wmv | mencoder - -oac copy -ovc copy -ofps 25 -o blub.wmv

Das funktioniert aber leider nicht wie gewuenscht, deshalb:

$ mencoder file1.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -o file1.avi
$ mencoder file2.wmv -ovc lavc -oac lavc -ofps 25 -srate 48000 -o file2.avi
$ avimerge -i file1.avi file2.avi -o blub.avi

Kleinigkeiten

Grösse einer Konfigurationsdatei ohne Kommentare und Leerzeilen.

$ egrep -v '(#|^$)' .vimrc | wc

Microsoft Word-Dateien in Postscript-Dateien umwandeln.

$ antiword -p a4 pflichtenheft.doc > foo.ps

X-Einstellungen für ein bestimmtes Programm auslesen.

$ xrdb -q | grep -i emacs

Mailserver zu einer Domain herausfinden.

$ host -t mx iwb.tu-graz.ac.at

XServer-Version herausfinden.

$ xdpyinfo | grep release

Procinfo: Ersatz fuer das manuelle Auslesen des /proc-Dateisystems.

$ procinfo -a

Anzeige des Pfads zu einzelnen Programmen.

Weitere Tipps.