Знак процента (%) перед командой оболочки

9

Я просто вставил кучу кода в свою оболочку, но забыл удалить ведущий %перед выполнением команды. Похоже, что ничего не сделал. Почему это ничего не делает в моей оболочке ( zsh )?

> % echo foo

В bash я получаю следующее

> % 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: no current job» и т. П.), То есть / БЫЛО задание. Пример:

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

Только %что вернулся фоновый процесс и запускает его. Через 60 секунд он получил следующий «jobid», который не был найден.

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

$> echo $histchars
Акира
источник
Отлично, спасибо. Я смог повторить ваши тесты и выдвинуть на передний план текущую работу %. Хороший улов $histcharsтоже, но мой хеш-знак ( !^#). Я предполагаю, что ответ на мой конкретный случай заключается в том, что в zsh были некоторые фоновые процессы, ведущие себя странно. Еще раз спасибо за урок снаряда!
Дейв