shell 命令前的百分号 (%)

shell 命令前的百分号 (%)

我刚刚将一堆代码粘贴到我的 shell 中,但%在运行命令之前忘记删除前导。它似乎什么也没做。为什么这在我的 shell 中什么也没做()?

> % echo foo

狂欢,我得到以下

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

我只是想确保运行我的命令没有产生一些副作用。

答案1

%指的是“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:没有当前作业”或类似内容),则表示存在/曾经存在作业。示例:

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

%刚刚恢复了后台进程并运行它。60 秒后,它得到了下一个未找到的“jobid”。

因此:您遇到的行为有点奇怪。如果没有完整的 zshrc,很难判断到底发生了什么。似乎您已经设法告诉 zsh,“%”字符正在开始注释。我会检查参数 histchars的第三个值:

$> echo $histchars

相关内容