的输出jobs
看起来像这样
[1] Stopped TERM=xterm-256color vim --servername vim ~/.gitconfig
[2]- Stopped TERM=xterm-256color vim --servername vim ~/.vimrc (wd: ~)
[3]+ Stopped TERM=xterm-256color vim --servername vim i3blocks.conf (wd: ~/.config/i3/configs)
其中部分(如果存在)显示相应作业开始的目录。(wd: path)
path
有几次我想搬到那个目录来做一份工作。
有这样做的实用程序吗?
在
zsh
中,$jobdirs
关联数组将作业编号映射到它们开始的工作目录,因此您可以将cd $jobdirs[n]
tocd
放入作业 n 的目录(或者cd ${jobdirs[n]?}
如果作业不存在,则获取错误而不是带您回家)。另请参阅每个作业的状态和代码的
$jobstates
和$jobtexts
关联数组。在
bash
中,您唯一的选择是解析作业的输出,不幸的是,这只能通过启发式方法完成。例如,参见:您可以看到
(wd:...)
仅当作业的 dir 不是当前工作目录时才会打印,并且如果作业的命令行或工作目录恰好包含(wd: ...)
,则无法判断哪个(wd:
s 是实际工作目录的开始。还将您的主目录替换为
~
.还要注意
wd:
是本地化的。例如,在乌克兰语中:因此,您需要确保
jobs
在您期望相应工作目录缩写的语言环境中调用。您所能做的就是使用启发式方法并希望获得最好的结果:
在我们上面的人为示例中失败了,但在大多数正常情况下应该可以工作。
现在,我已经解决了在我的以下函数中定义的问题
~/.bashrc
:这样我就可以做到,如果我传递不存在的作业或从当前目录运行的作业的编号,则(故意)失败。
cd job-number