Mengirim aplikasi dari latar depan ke latar belakang membutuhkan kerja sama dari terminal dan shell. Terminal tidak dapat melakukannya sendiri, karena shell harus mengatur grup proses latar depan. Shell tidak dapat melakukannya sendiri, karena terminal harus memproses penekanan tombol (shell tidak berada di latar depan, sehingga tidak dapat menerima penekanan tombol).
Perkiraan yang dekat adalah mengirim aplikasi ke latar belakang dengan sangat cepat. Bagaimanapun, aplikasi berbagi waktu CPU dengan yang lain dan jeda beberapa ratus detik tidak menjadi masalah. (Ini berlaku untuk aplikasi waktu-nyata, jadi pastikan untuk memulai yang di latar belakang.) Saya menggunakan shell binding untuk Ctrl+ Zyang mengirimkan pekerjaan foregrounded terakhir ke latar belakang. Dengan begitu, menekan Ctrl+ Z Ctrl+ Zmengirim pekerjaan ke latar belakang dengan waktu suspensi minimal.
Inilah zsh mengikat saya, yang juga "latar belakang" perintah setengah diketik ketika baris perintah tidak kosong .
fancy-ctrl-z () {
emulate -LR zsh
if [[ $#BUFFER -eq 0 ]]; then
bg
zle redisplay
else
zle push-input
fi
}
zle -N fancy-ctrl-z
bindkey '^Z' fancy-ctrl-z
Dalam bahasa Inggris, untuk pengguna non-zsh di audiensi:
Jika Anda hanya ingin perilaku latar belakang terlepas dari apakah baris perintah kosong:
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
Saya tidak tahu apakah Anda dapat melakukan hal yang sama di bash. Seharusnya semudah bind -x '"\C-z": bg'
, kecuali bahwa bash meninggalkan karakter tty stop di tempatnya, sehingga Ctrl+ tidak pernah mendapat + Zsebagai input.