Signe de pourcentage (%) devant la commande shell


9

Je viens de coller un tas de code dans mon shell, mais j'ai oublié de supprimer le %début avant d'exécuter la commande. Il semble n'avoir rien fait. Pourquoi cela ne fait rien dans mon shell ( zsh )?

> % echo foo

En bash , je reçois ce qui suit

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

Je veux juste être sûr que l'exécution de ma commande n'a pas eu d'effets secondaires.

Réponses:


9

%fait référence à un 'jobid' qui est utilisé dans le cadre des fonctionnalités "contrôle de travail et contrôle de processus" de zsh. Pour citer le guide de l'utilisateur:

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

Exemple:

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

En savoir plus à ce sujet ici: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Pour répondre à votre vraie question: Si votre zsh n'y met pas d'avertissement ("fg: pas de travail en cours" ou similaire) alors il y a / A ÉTÉ un travail. Exemple:

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

Le %vient de récupérer le processus d'arrière-plan et l'exécute. Après 60 secondes, il a obtenu le prochain «jobid» qui n'a pas été trouvé.

Ainsi: Le comportement que vous avez vécu est un peu étrange. Sans votre zshrc complet, il est difficile de dire ce qui se passe exactement. Il semble que vous ayez réussi à dire à votre zsh que le caractère '%' commence un commentaire. Je vérifierais le histcharsparamètre pour sa 3ème valeur:

$> echo $histchars

Génial, merci. J'ai pu reproduire vos tests et mettre en avant un travail en cours avec %. Bonne prise $histcharsaussi, mais la mienne est un signe de hachage ( !^#). Je suppose que la réponse à mon cas particulier est qu'il y avait des processus en arrière-plan se comportant étrangement dans zsh. Merci encore pour la leçon shell!
Dave
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.