Jawaban:
Jalankan shell built-in:
$ set +m
Ini bekerja dengan mematikan "mode monitor" sehingga shell tidak melaporkan penghentian pekerjaan latar belakang.
Meskipun menjalankan perintah dalam subkulit seperti:
$ (sleep 2&)
... juga akan menonaktifkan pesan, satu-satunya alasan kerjanya adalah karena mode monitor diaktifkan secara default hanya untuk shell interaktif. Artinya, subshell menghindari pesan dengan menjalankan shell tambahan yang memiliki "set + m" otomatis.
Saya ingin memperjelas dua jawaban sebelumnya. Jika yang Anda inginkan adalah untuk tidak pernah melihat pesan Selesai dari perintah apa pun di shell Anda, set +m
adalah cara untuk melakukannya. Masukkan saja ke dalam .profile dan / atau .bashrc Anda dan selesai. Perhatikan bahwa jika Anda mengetik ini:
set +m
sleep 2 &
set -m
dan tidur berakhir setelah final set -m
, Anda masih akan mendapatkan pesan selesai.
Jika Anda ingin menonaktifkan pesan untuk permintaan perintah tunggal, teknik subkulit (sleep 2 &)
adalah cara yang harus dilakukan.
Dalam semua kejujuran, saya hanya tahu tentang set +m
, jadi +1 untuk Wooble untuk mencerahkan saya. Namun, perlu dicatat bahwa dari dua solusi yang Anda inginkan tergantung pada apa yang Anda coba lakukan.
Tanpa subkulit , Anda dapat melakukan hal berikut:
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
Berdasarkan jawaban ini .
jobs
akan menunjukkan apa-apa).