Wenn ich im Hintergrund einen Befehl mit dem folgenden Befehl ausführe &
:
sleep 2 &
Wenn der Befehl beendet ist, erhalte ich "Fertig". Wie kann ich verhindern, dass die Meldung "Fertig" angezeigt wird?
Führen Sie den Befehl in einer Subshell aus:
(sleep 2 &)
jobs
wird nichts angezeigt).Führen Sie die integrierte Shell aus:
Dies funktioniert, indem der "Monitor-Modus" deaktiviert wird, sodass die Shell nicht meldet, dass Hintergrundjobs beendet werden.
Obwohl der Befehl in einer Subshell ausgeführt wird, wie:
... wird auch die Meldung deaktivieren, der einzige Grund , warum es funktioniert , ist , weil Monitormodus standardmäßig für interaktiven Shells nur aktiviert ist. Das heißt, die Subshell vermeidet die Meldung, indem sie eine zusätzliche Shell mit einem automatischen "set + m" ausführt .
quelle
Ich möchte die beiden früheren Antworten klarstellen. Wenn Sie niemals die Meldung "Fertig" von Befehlen in Ihrer Shell sehen möchten, ist dies der richtige
set +m
Weg. Einfach in Ihr .profile und / oder .bashrc einfügen und fertig. Beachten Sie jedoch Folgendes, wenn Sie Folgendes eingeben:und der Schlaf endet nach dem Finale
set -m
, Sie werden immer noch die erledigte Nachricht erhalten.Wenn Sie die Nachricht für einen einzelnen Befehlsaufruf deaktivieren möchten, ist die Subshell-Technik die richtige Wahl
(sleep 2 &)
.set +m
Ehrlich gesagt wusste ich nur Bescheid , also +1 an Wooble, um mich aufzuklären. Beachten Sie jedoch, dass die von Ihnen gewünschte Lösung von dem abhängt, was Sie versuchen.quelle
Ohne eine Subshell können Sie Folgendes tun:
Basierend auf dieser Antwort .
quelle