Надіслати програму з переднього плану на задній план вимагає співпраці як терміналу, так і оболонки. Термінал не може зробити це самостійно, оскільки оболонка повинна встановити групу процесу переднього плану. Оболонка не може зробити це самостійно, оскільки термінал повинен обробляти натискання клавіш (оболонка не на передньому плані, тому вона не може отримувати натискання клавіші).
Близьким наближенням є надсилання програми на задній план дійсно швидко. Зрештою, додаток ділиться процесорним часом з іншими, і пауза в кілька сотих секунди не має значення. (Це стосується додатків у режимі реального часу, тому переконайтеся, що запускаєте ті у фоновому режимі.) Я використовую прив'язку оболонки для Ctrl+, Zяка надсилає останнє передпланове завдання на задній план. Таким чином, натискання Ctrl+ Z Ctrl+ Zнадсилає завдання на задній план із мінімальним часом призупинення.
Ось моє zsh прив'язка, яка також "тла" напівнаписану команду, коли командний рядок не порожній .
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
Англійською мовою, для користувачів, які не користуються zsh:
Якщо ви просто хочете фонову поведінку незалежно від того, чи командний рядок порожній:
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
Я не знаю, чи можете ви зробити так само в баш. Це повинно бути таким же простим bind -x '"\C-z": bg'
, за винятком того, що bash залишає символ tty stop на місці, тому він ніколи не отримує Ctrl+ Zяк вхід.