Prozentzeichen (%) vor dem Shell-Befehl

9

Ich habe gerade eine Menge Code in meine Shell eingefügt, aber vergessen, den führenden zu entfernen, %bevor ich den Befehl ausführte. Es scheint nichts getan zu haben. Warum macht das nichts in meiner Shell ( zsh )?

> % echo foo

In Bash bekomme ich folgendes

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

Ich möchte nur sichergehen, dass das Ausführen meines Befehls keine Nebenwirkungen hatte.

Dave
quelle

Antworten:

9

%bezieht sich auf eine 'Job-ID', die als Teil der Funktionen "Jobsteuerung und Prozesssteuerung" von zsh verwendet wird. Um aus der Bedienungsanleitung zu zitieren:

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

Beispiel:

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

Lesen Sie hier mehr darüber: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Um Ihre eigentliche Frage zu beantworten : Wenn Ihr zsh dort keine Warnung ausgibt ("fg: kein aktueller Job" oder ähnliches), dann gibt es einen Job. Beispiel:

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

Der hat %gerade den Hintergrundprozess zurückbekommen und führt ihn aus. Nach 60 Sekunden bekam es die nächste 'Job-ID', die nicht gefunden wurde.

Also: Das Verhalten, das Sie erlebt haben, ist etwas seltsam. Ohne Ihre volle zshrc ist es schwer zu sagen, was genau los ist. Es scheint, als hätten Sie es geschafft, Ihrem zsh mitzuteilen, dass das Zeichen '%' einen Kommentar startet. Ich würde den histcharsParameter auf seinen 3. Wert überprüfen :

$> echo $histchars
Akira
quelle
Genial, danke. Ich konnte Ihre Tests replizieren und einen laufenden Job mit in den Vordergrund stellen %. Guter Fang $histcharsauch, aber meiner ist ein Hash-Zeichen ( !^#). Ich vermute, die Antwort auf meinen speziellen Fall ist, dass es einige Hintergrundprozesse gab, die sich in zsh seltsam verhalten. Nochmals vielen Dank für die Shell-Lektion!
Dave