2017-07-03 4 views
1

fand ich, dass einige Leute ein Programm in der Schale wie diese laufenWas bedeutet "&!" (Et-Zeichen und Ausrufezeichen) bedeuten in Linux-Shell

exe > the.log 2>&1 &! 

ich den ersten Teil zu verstehen, es leitet stderr nach stdout auch „&“ bedeutet, läuft das Programm in Hintergrund, aber ich weiß nicht, was "&!" Was bedeutet das Ausrufezeichen?

+0

Diese Art von Funktionen sind Shell-spezifisch - es ist hilfreich, [welche Shell Sie verwenden] (https://askubuntu.com/q/590899/12220) zu verwenden und Ihre Frage mit dem spezifischen Shell-Tag zu versehen wie z. B. ['zsh'] (https://stackoverflow.com/questions/tagged/zsh). – dimo414

Antwort

2

Innerhalb von zsh ist der Befehl &! eine Abkürzung für disown, d. H. Das Programm wird beim Beenden der aufrufenden Shell nicht beendet.

Siehe man zshbuiltins

disown [job ...]
Job ... & |
job ... &!

Entfernen Sie die angegebenen Jobs aus der Jobtabelle; Die Shell meldet ihren Status nicht mehr und wird sich nicht mehr beschweren, wenn Sie versuchen, eine interaktive Shell zu beenden, wenn sie ausgeführt oder gestoppt werden. Wenn kein Job angegeben ist, verwerfen Sie den aktuellen Job. Wenn die Jobs derzeit gestoppt sind und die Option AUTO_CONTINUE nicht festgelegt ist, wird eine Warnung ausgegeben, die Informationen darüber enthält, wie sie ausgeführt werden, nachdem sie widerrufen wurden. Wenn eines der beiden letzten Formulare verwendet wird, werden die Jobs automatisch ausgeführt, unabhängig von der Einstellung der Option AUTO_CONTINUE.