Befehlsausführung: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
(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...)
 
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 job-ID gefolgt von der Prozess-ID ausgegeben, z. B. "[1] 664".
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 Prozess-ID.
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 Hintegrund 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.
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 Logdateien ===
=== Grosse Protokolldateien ===


Logdateien können sehr schnell sehr gross werden, lassen sich aber nicht immer ohne weiteres löschen. Läuft der Prozess noch, der das Logfile 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.
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.