Enviar una aplicación desde el primer plano hasta el fondo requiere la cooperación tanto del terminal como del shell. El terminal no puede hacerlo solo, porque el shell tiene que establecer el grupo de procesos en primer plano. El shell no puede hacerlo solo, porque el terminal tiene que procesar la pulsación de la tecla (el shell no está en primer plano, por lo que no puede recibir una pulsación de la tecla).
Una aproximación cercana es enviar la aplicación al fondo realmente rápido. Después de todo, una aplicación comparte el tiempo de CPU con otros y una pausa de unas pocas centésimas de segundo no debería importar. (Lo hace para aplicaciones en tiempo real, así que asegúrese de iniciarlas en segundo plano). Utilizo un enlace de shell para Ctrl+ Zque envía el último trabajo en segundo plano al fondo. De esa manera, presionar Ctrl+ Z Ctrl+ Zenvía un trabajo a un segundo plano con un tiempo de suspensión mínimo.
Aquí está mi enlace zsh, que también "en segundo plano" un comando medio tipado cuando la línea de comando no está vacía .
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
En inglés, para los usuarios que no son zsh en la audiencia:
Si solo desea el comportamiento de fondo, independientemente de si la línea de comando está vacía:
function bg_ { builtin bg "$@"; }
zle -N bg_
bindkey '^Z' bg_
No sé si puedes hacer lo mismo en bash. Debería ser tan fácil como bind -x '"\C-z": bg'
, excepto que bash deja el carácter tty stop en su lugar, por lo que nunca obtiene Ctrl+ Zcomo entrada.