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.

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.