Signo de porcentaje (%) delante del comando de shell

9

Acabo de pegar un montón de código en mi shell, pero olvidé eliminar el encabezado %antes de ejecutar el comando. Parece no haber hecho nada. ¿Por qué esto no hace nada en mi shell ( zsh )?

> % echo foo

En bash , me sale lo siguiente

> % echo foo
bash: fg: %: no such job

Solo quiero asegurarme de que ejecutar mi comando no haya tenido algún efecto secundario.

Dave
fuente

Respuestas:

9

%se refiere a un 'jobid' que se usa como parte de las características de "control de trabajo y control de proceso" de zsh. Para citar de la guía del usuario:

'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.

Ejemplo:

$> man zshall &
[1]  + 31392 suspended (tty output)  man zshall
$> jobs
[1]  + suspended (tty output)  man zshall
$> %
<manpage-opens-for-zshall>

Lea más sobre esto aquí: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Para responder a su pregunta real : Si su zsh no pone una advertencia allí ("fg: no hay trabajo actual" o similar), entonces hay un trabajo IS / WAS. Ejemplo:

$> sleep 60 &
$> % echo foo
[1]  + 411 running    sleep 60
fg: job not found: echo

El %acabamos de volver del proceso en segundo plano y lo ejecuta. Después de 60 segundos obtuvo el siguiente 'jobid' que no se encontró.

Por lo tanto: El comportamiento que experimentaste es un poco extraño. Sin su zshrc completo, es difícil saber qué está sucediendo exactamente. Parece que has logrado decirle a tu zsh que el '%' char está comenzando un comentario. Verificaría el histcharsparámetro para su tercer valor:

$> echo $histchars
akira
fuente
Brillante, gracias. Pude replicar sus pruebas y poner en primer plano un trabajo en ejecución %. Buena captura $histcharstambién, pero la mía es un signo de hash ( !^#). Supongo que la respuesta a mi caso particular es que hubo algunos procesos en segundo plano que se comportan de manera extraña en zsh. Gracias de nuevo por la lección de shell.
Dave