快速访问后台作业的工作目录

Ber*_*ard 3 bash directory cd-command jobs background-process

重现我正在寻找的东西的最小努力如下

/$ sleep 1h &
[1] 6564
/$ cd
~$ jobs
[1]+  Running                 sleep 1h &  (wd: /)
Run Code Online (Sandbox Code Playgroud)

当我jobs用来管理我的后台进程时,工作目录(wd)与当前目录不同时也会显示出来。

有没有一种简单的方法可以轻松切换到这个显示的工作目录?我正在使用 bash 3.2。

我不是在寻找使用awk或类似工具的包装函数,而是在寻找内置解决方案的 shell。

小智 5

如果您的目的是获取进程的工作目录,这是一种方法:

~ » jobs -l
[1]  + 14308 running    sleep 1h
~ » readlink /proc/14308/cwd
/home/matti-nillu
Run Code Online (Sandbox Code Playgroud)

里面的以下功能.bashrc,会做你想要的

cdjob () 
{ 
    pid=$(jobs -p $1);
    d=$(readlink /proc/$pid/cwd);
    cd "$d"
}
Run Code Online (Sandbox Code Playgroud)

例子:

~$ sleep 1h &
[1] 15102
~$ jobs
[1]+  Running                 sleep 1h &
~$ cd /
/$ cdjob %1
~$ 
Run Code Online (Sandbox Code Playgroud)