Odpowiedzi:
Uruchom wbudowaną powłokę:
$ set +m
Działa to poprzez wyłączenie „trybu monitorowania”, aby powłoka nie zgłaszała kończących zadań w tle.
Mimo uruchamiania polecenia w podpowłoce, takiej jak:
$ (sleep 2&)
... wyłączy również komunikat, jedynym powodem, dla którego działa, jest to, że tryb monitorowania jest domyślnie włączony tylko dla interaktywnych powłok. Oznacza to, że podpowłoka unika komunikatu, uruchamiając dodatkową powłokę, która ma automatyczny „set + m”.
Chciałbym wyjaśnić dwie wcześniejsze odpowiedzi. Jeśli chcesz, aby nigdy nie wyświetlać komunikatu Gotowe z jakichkolwiek poleceń w powłoce, set +m
to jest droga. Po prostu włóż go do swojego .profile i / lub .bashrc i gotowe. Pamiętaj jednak, że jeśli wpiszesz to:
set +m
sleep 2 &
set -m
a sen kończy się po finale set -m
, nadal dostaniesz skończoną wiadomość.
Jeśli chcesz wyłączyć komunikat dla wywołania pojedynczego polecenia, należy zastosować technikę podpowłoki (sleep 2 &)
.
Szczerze mówiąc, wiedziałem o tym set +m
, więc +1 do Wooble za oświecenie mnie. Warto jednak zauważyć, że które z dwóch rozwiązań, które chcesz, zależy od tego, co próbujesz zrobić.
Bez podpowłoki możesz wykonać następujące czynności:
silent_background() {
{ 2>&3 "$@"& } 3>&2 2>-
disown &>/dev/null # Close STD{OUT,ERR} for silence if job has already completed
}
silent_background sleep 5
Na podstawie tej odpowiedzi .
jobs
nic nie pokaże).