Знак відсотка (%) перед командою оболонки


9

Я просто вставив купу коду в свою оболонку, але забув видалити провідний %перед запуском команди. Здається, нічого не зробили. Чому це не робить нічого в моїй оболонці ( zsh )?

> % echo foo

У баші я отримую наступне

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

Я просто хочу бути впевненим, що виконання моєї команди не мало якихось побічних ефектів.

Відповіді:


9

%відноситься до "jobid", який використовується як частина функції управління роботою та процесом zsh. Цитувати з посібника користувача:

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

Приклад:

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

Детальніше про це читайте тут: http://zsh.sourceforge.net/Guide/zshguide03.html#l39

Щоб відповісти на ваше справжнє запитання: Якщо ваш zsh не поставив попередження там ("fg: немає поточної роботи" тощо), це IS / WAS робота. Приклад:

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

%Щойно повернувся фоновий процес і запускає його. Через 60 секунд у нього з’явився черговий «робота», якого не було знайдено.

Таким чином: поведінка, яку ви пережили, трохи дивна. Без повного zshrc важко сказати, що саме відбувається. Схоже, вам вдалося сказати своєму zsh, що знак '%' починає коментар. Я перевірив би histcharsпараметр на 3-е значення:

$> echo $histchars

Блискуче, дякую. Мені вдалося скопіювати ваші тести та випереджати роботу, яка працює під час роботи %. Хороший улов $histcharsтеж, але мій - хеш-знак ( !^#). Я здогадуюсь, тоді відповідь на мій конкретний випадок полягає в тому, що в zsh були деякі фонові процеси, які дивно поводяться. Ще раз дякую за урок оболонки!
Дейв
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.