Pregunta bash: muestra los nombres de los trabajos en segundo plano en el indicador bash


Sería genial si el indicador bash se puede utilizar como una mini barra de tareas.

¿Puede el indicador de bash (PS1) mostrar los nombres de los trabajos enumerados en el comando de trabajos?


0


origen


Puedes poner lo que quieras en PS1, incluyendo $(jobs|Filter), dónde Filter masajes la salida en cualquier formato que desee. Para obtener todo en una sola línea, use echo $($(jobs|Filter)). Por supuesto, puede agregar todos los demás caracteres que normalmente usaría en PS1, pero tu debe utilice comillas simples cuando lo asigne, para asegurarse de que el comando incrustado se expande cuando se emite el aviso, en lugar de cuando se establece la variable. - AFH


Respuestas:


AFH en el comentario te da los bloques de construcción. Aquí hay un ejemplo de cómo obtener las cotizaciones correctas.

como "nombre del trabajo", elijo el nombre de comando del trabajo (la primera palabra después de "Ejecutar"):

PS1='$(echo $(jobs | awk '\''/Running/{print "[" $3 "]"}'\''))$ '

Y al probarlo con dos comandos en segundo plano, y simplemente escribir "enter" varias veces para ver cómo cambia el prompt:

$ sleep 4 & sleep 2 &
[1] 7222
[2] 7223
[sleep] [sleep]$ 
[sleep] [sleep]$ 
[2]+  Done                    sleep 2
[sleep]$ 
[1]+  Done                    sleep 4
$ 

0