Sinal de porcentagem (%) na frente do comando shell

8

Eu apenas colei um monte de código no meu shell, mas esqueci de remover o % antes de executar o comando. Parece não ter feito nada. Por que isso não faz nada no meu shell ( zsh )?

> % echo foo

Em bash , recebo o seguinte

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

Eu só quero ter certeza de que executar o meu comando não teve algum efeito colateral.

    
por Dave 15.10.2014 / 11:28

1 resposta

8

% refere-se a um 'jobid' que é usado como parte dos recursos "controle de processo 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: link

Para responder a sua pergunta real : Se o seu zsh não colocar um aviso lá ("fg: no current job" ou algo parecido) então há um WAS / WAS. Exemplo:

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

O % acabou de recuperar o processo em segundo plano e o executa. 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 caractere '%' está iniciando um comentário. Gostaria de verificar o parâmetro histchars para o seu terceiro valor:

$> echo $histchars
    
por 15.10.2014 / 12:08