Befehlsausführung: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) (Die Seite wurde neu angelegt: <b>Befehlsausführung</b> "CTRL+Z" zum Stoppen eines Befehls. "CTRL+C" zum Abbrechen eines Befehls Siehe auch Ein- und Ausgabeverarbeitung. == Konditionale Befe...) |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 45: | Zeile 45: | ||
== Job-Verwaltung == | == Job-Verwaltung == | ||
Ausführen eines Befehls im Hintergrund. Daraufhin wird in eckiger Klammer die | Ausführen eines Befehls im Hintergrund. Daraufhin wird in eckiger Klammer die Job-ID gefolgt von der [[Prozessnummer]] ausgegeben, z. B. "[1] 664". | ||
$ <b><i>Befehl</i> &</b> | $ <b><i>Befehl</i> &</b> | ||
Zeile 53: | Zeile 53: | ||
$ <b><i>Befehl</i> > file 2>&1 &</b> | $ <b><i>Befehl</i> > file 2>&1 &</b> | ||
Anzeige der gegenwärtig in der aktuellen Shell im Hintergrund laufenden Befehle mit Job-ID und | Anzeige der gegenwärtig in der aktuellen Shell im Hintergrund laufenden Befehle mit Job-ID und Prozessnummer. | ||
$ <b>jobs -l</b> | $ <b>jobs -l</b> | ||
Nachträgliches Verschieben eines Vordergrundprozesses in den | 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. | ||
$ <b>bg %2</b> | $ <b>bg %2</b> | ||
Zeile 88: | Zeile 88: | ||
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. | 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 | === 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. | |||
$ <b>cat /dev/null > logfile</b> | $ <b>cat /dev/null > logfile</b> | ||
Zeile 126: | Zeile 126: | ||
$ <b>egrep -v '(#|^$)' .vimrc | wc</b> | $ <b>egrep -v '(#|^$)' .vimrc | wc</b> | ||
Microsoft Word-Dateien in Postscript-Dateien umwandeln. | Microsoft Word-Dateien in Postscript-Dateien umwandeln. | ||
$ <b>antiword -p a4 pflichtenheft.doc > foo.ps</b> | $ <b>antiword -p a4 pflichtenheft.doc > foo.ps</b> | ||
X-Einstellungen für ein bestimmtes Programm auslesen. | X-Einstellungen für ein bestimmtes Programm auslesen. | ||
$ <b>xrdb -q | grep -i emacs</b> | $ <b>xrdb -q | grep -i emacs</b> | ||
Mailserver zu einer Domain herausfinden. | Mailserver zu einer Domain herausfinden. | ||
$ <b>host -t mx iwb.tu-graz.ac.at</b> | $ <b>host -t mx iwb.tu-graz.ac.at</b> | ||
XServer-Version herausfinden. | XServer-Version herausfinden. | ||
$ <b>xdpyinfo | grep release</b> | $ <b>xdpyinfo | grep release</b> | ||
Procinfo: Ersatz fuer das manuelle Auslesen des /proc-Dateisystems. | Procinfo: Ersatz fuer das manuelle Auslesen des /proc-Dateisystems. | ||
Zeile 162: | Zeile 162: | ||
{{cat|Shell-Befehl}} | {{cat|Shell-Befehl}} | ||
{{cat|Shellskript}} | {{cat|Shellskript}} | ||
{{cat|UNFERTIG}} |
Aktuelle Version vom 6. August 2011, 17:17 Uhr
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.