zsh Goodies

Page principale
Attachements:
Message en tant que courrier électronique
+ (text/plain)
+ signature.asc (application/pgp-signature)
Supprimer ce message
Répondre à ce message
Auteur: Sebastian Harl
Date:  
À: list
Sujet: zsh Goodies
Heyho Liste ;-)

Nachdem ich weiss, dass mindestens noch einer in der LUSC die Shell
zsh verwendet und diese an Features ja geradezu ueberladen ist, starte
ich hiermit einen Thread, der hoffentlich im Laufe der Zeit ein paar
nette Features von zsh sammelt - hoffe also auf Beitraege von anderen!
:-)

Konkreter Anlass war nachfolgend genanntes unaufregendes aber dennoch
nettes Feature. Ich starte ab und an mal einen Nicht-Daemon Prozess, der
ueber einen laengeren Zeitraum laufen soll und daher auch das Beenden
der Shell ueberleben soll. Normalerweise schickt die Shell beim Beenden
SIGHUP an alle laufenden Kind-Prozesse (also vereinfacht: alle Prozesse,
die von der Shell gestartet wurden). Dieses Signal beendet i.d.R. diese
Prozesse. Eine Moeglichkeit, das zu verhindern, ist die Verwendung des
nohup(1) Kommandos (siehe die nohup-Manpage fuer Details):

nohup <prog> &

Das hat jedoch den Nachteil, dass dabei ein Datei erstellt wird, in der
die Ausgabe des von nohup ausgefuehrten Programms <prog> gespeichert
wird, was mir nicht gefaellt.

Eine weitere Moeglichkeit ist die Verwendung von dem zsh Builtin
Kommandos "disown":

% <prog> &
[1] 12345
% disown %1

Das erfordert jedoch den Aufruf von zwei Kommandos und, schlimmer, die
Kenntnis der PID oder der Job-ID des im Hintergrund gestarteten
Prozesses, was eine Automatisierung unnoetig erschwert. Aber zum Glueck
bietet zsh eine Moeglichkeit, diese beiden Schritte in einem Schritt
durchzufuehren:

% <prog> &!

Mir gefaellt das recht gut und ich hoffe, dass es fuer den einen oder
anderen auch hilfreich und neu war ;-)

Gruss,
Sebastian

-- 
Sebastian "tokkee" Harl +++ GnuPG-ID: 0x8501C7FC +++ http://tokkee.org/


Those who would give up Essential Liberty to purchase a little Temporary
Safety, deserve neither Liberty nor Safety. -- Benjamin Franklin