Risposte:
Eseguire la shell integrata:
$ set +m
Funziona disattivando la "modalità monitor" in modo che la shell non segnali di terminare i lavori in background.
Sebbene esegua il comando in una subshell come:
$ (sleep 2&)
... disabiliterà anche il messaggio, l'unica ragione per cui funziona è perché la modalità monitor è abilitata di default solo per le shell interattive. Cioè, la subshell evita il messaggio eseguendo una shell aggiuntiva che ha un "set + m" automatico.
Vorrei chiarire le due risposte precedenti. Se quello che vuoi non è mai vedere il messaggio Fatto da qualsiasi comando nella tua shell, set +mè la strada da percorrere. Inseriscilo nel tuo .profile e / o .bashrc ed esegui. Si noti tuttavia che se si digita questo:
set +m
sleep 2 &
set -m
e il sonno termina dopo la finale set -m, otterrai comunque il messaggio fatto.
Se si desidera disabilitare il messaggio per una singola chiamata di comando, la tecnica subshell (sleep 2 &)è la strada da percorrere.
In tutta onestà, lo sapevo solo set +m, quindi +1 su Wooble per avermi illuminato. Tuttavia, vale la pena notare che quale delle due soluzioni desiderate dipende da cosa stai cercando di fare.
Senza una subshell , è possibile effettuare le seguenti operazioni:
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
Sulla base di questa risposta .
jobsnon mostrerà nulla).