shell命令前的百分号(%)


9

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

> % echo foo

bash中,我得到以下内容

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

我只是想确保运行我的命令没有任何副作用。

Answers:


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:无当前工作”等),则表明存在/已有工作。例:

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

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

因此:您遇到的行为有些奇怪。没有完整的zshrc,很难说出到底发生了什么。看来您设法告诉zsh'%'字符正在开始注释。我会检查 histchars参数的第三个值:

$> echo $histchars

太好了,谢谢。我能够复制您的测试并使用来前景化正在运行的工作%。也很不错$histchars,但是我的是井号(!^#)。我想我的特定情况的答案是zsh中有些后台进程的行为异常。再次感谢您参加Shell课程!
戴夫2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.