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)