La página de manual de bash dice
En la salida correspondiente a trabajos (por ejemplo, la salida del comando jobs), el trabajo actual siempre se marca con un + y el trabajo anterior con un -. Un porcentaje único (sin especificación de puesto que lo acompañe) también se refiere al puesto de trabajo actual.
En mi siguiente serie de comandos, despuéssí 2 > /dev/null &, esperaba que el trabajo [2] fuera el trabajo actual, no el trabajo [1].
También al final del comando.sí 3 > /dev/null &Esperaba que la salida del comando de trabajos fuera así:
[1] Detenido
[2]- En ejecución
[3]+ En ejecución
Qué me estoy perdiendo ?
$ yes 1 > /dev/null
^Z
[1]+ Stopped yes 1 > /dev/null
$ jobs
[1]+ Stopped yes 1 > /dev/null
$ yes 2 > /dev/null &
[2] 3082
$ jobs
[1]+ Stopped yes 1 > /dev/null
[2]- Running yes 2 > /dev/null &
$ yes 3 > /dev/null &
[3] 3116
$ jobs
[1]+ Stopped yes 1 > /dev/null
[2] Running yes 2 > /dev/null &
[3]- Running yes 3 > /dev/null &
Respuesta1
Desde la misma página de manual:
[…] el trabajo actual, que es el último trabajo detenido mientras estaba en primer plano o iniciado en segundo plano.
Es algo ambiguo. Puedes entenderlo como:
- Tome todos los "trabajos detenidos mientras estaban en primer plano o iniciados en segundo plano"...
- …luego elige "el último".
Pero esbastante:
- Tomemos como ejemplo "el último trabajo detenido mientras estaba en primer plano";
- pero en caso de que no exista tal trabajo, tome "el último trabajo iniciado en segundo plano".