zsh中的奇怪“jobs”行为

47

在我的zsh shell中,我使用jobsfgbg命令时出现了奇怪的行为。以下是一个示例(这种情况不仅限于python):

$ python &
[1] 21214
Python 2.7.8 (default, Oct 19 2014, 16:02:00)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.54)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
[1]  + 21214 suspended (tty output)  python
$ jobs
[1]  + suspended (tty output)  python
$ fg 1
fg: job not found: 1
$ bg 1
bg: job not found: 1

我在 OS X 上使用标准的 oh-my-zsh 安装。

1个回答

89

你可能习惯于在Bash中使用fg N(其中N是作业编号)。但在Zsh中稍有不同,需要一个%,例如fg %1。Bash的行为很方便,所以你可以让Zsh做同样的事情:

fg() {
    if [[ $# -eq 1 && $1 = - ]]; then
        builtin fg %-
    else
        builtin fg %"$@"
    fi
}

对于bghistory也可以进行同样的操作。这是来自这个帖子的内容。

当您有几个作业正在运行时,您还可以只输入fg并暗示%1。在这种情况下,制表符补全也非常有用:fg<tab>


40
学习真正的简便方法:只需键入“%1”。假定使用“fg”。 - user2404501
我曾认为zsh是bash的严格超集。为什么这种行为不同呢? - Ben Sandler
1
Zsh不是Bash的严格超集:http://zsh.sourceforge.net/FAQ/zshfaq02.html - Micah Elliott
@BenSandler 我很喜欢并接受zsh的方式,但是它和以前不太一样啊~ 改变习惯还是比较敏感的。 - kakadais

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接