%
odnosi się do „jobid”, który jest używany jako część funkcji „kontroli zadań i kontroli procesu” programu zsh. Cytat z instrukcji obsługi:
'fg' is the default operation on jobs referred to with the '%' notation,
so just typing '%1' with no command name would have worked, too.
Przykład:
$> man zshall &
[1] + 31392 suspended (tty output) man zshall
$> jobs
[1] + suspended (tty output) man zshall
$> %
<manpage-opens-for-zshall>
Przeczytaj więcej na ten temat tutaj: http://zsh.sourceforge.net/Guide/zshguide03.html#l39
Aby odpowiedzieć na twoje prawdziwe pytanie: Jeśli twój zsh nie wyświetla ostrzeżenia („fg: no current job” itp.), Oznacza to, że IS / WAS było zadanie. Przykład:
$> sleep 60 &
$> % echo foo
[1] + 411 running sleep 60
fg: job not found: echo
%
Właśnie wróciłam proces w tle i uruchamia go. Po 60 sekundach otrzymano następny „jobid”, którego nie znaleziono.
Zatem: Zachowanie, którego doświadczyłeś, jest nieco dziwne. Bez pełnego zshrc trudno jest powiedzieć, co dokładnie się dzieje. Wygląda na to, że udało ci się powiedzieć swojemu zsh, że znak '%' rozpoczyna komentarz. Sprawdziłbym histchars
parametr pod kątem jego trzeciej wartości:
$> echo $histchars
%
. Dobry$histchars
też, ale mój to znak skrótu (!^#
). Zgaduję, że odpowiedzią na mój konkretny przypadek jest to, że niektóre procesy działające w tle działały dziwnie w Zsh. Jeszcze raz dziękuję za lekcję powłoki!