%
refere-se a um 'jobid' que é usado como parte dos recursos de "controle de trabalho e controle de processo" do zsh. Para citar o guia do usuário:
'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.
Exemplo:
$> man zshall &
[1] + 31392 suspended (tty output) man zshall
$> jobs
[1] + suspended (tty output) man zshall
$> %
<manpage-opens-for-zshall>
Leia mais sobre isso aqui: http://zsh.sourceforge.net/Guide/zshguide03.html#l39
Para responder à sua pergunta real : Se o seu zsh não colocar um aviso lá ("fg: no job atual" ou algo parecido), haverá / foi um job. Exemplo:
$> sleep 60 &
$> % echo foo
[1] + 411 running sleep 60
fg: job not found: echo
A %
acabou de voltar o processo de fundo e executa-lo. Após 60 segundos, obteve o próximo 'jobid' que não foi encontrado.
Assim: O comportamento que você experimentou é um pouco estranho. Sem o seu zshrc completo, é difícil dizer exatamente o que está acontecendo. Parece que você conseguiu dizer ao seu zsh que o '%' char está iniciando um comentário. Gostaria de verificar o histchars
parâmetro para o seu 3º valor:
$> echo $histchars
%
. Boa captura$histchars
também, mas o meu é um sinal de hash (!^#
). Suponho que a resposta para o meu caso em particular é que houve alguns processos em segundo plano se comportando estranhamente no zsh. Mais uma vez obrigado pela lição do shell!