Bash

快速訪問後台作業的工作目錄

  • August 23, 2016

重現我正在尋找的東西的最小努力如下

/$ sleep 1h &
[1] 6564
/$ cd
~$ jobs
[1]+  Running                 sleep 1h &  (wd: /)

當我jobs用來管理我的後台程序時,工作目錄(wd)與目前目錄不同時也會顯示。

有沒有一種簡單的方法可以輕鬆地切換到這個顯示的工作目錄?我正在使用 bash 3.2。

我不是在尋找使用awk或類似工具的包裝器功能,而是在尋找內置解決方案的 shell。

如果您的意圖是獲取程序的工作目錄,這是一種方法:

~ » jobs -l
[1]  + 14308 running    sleep 1h
~ » readlink /proc/14308/cwd
/home/matti-nillu

裡面的下面的函式.bashrc,會做你想要的

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

例子:

~$ sleep 1h &
[1] 15102
~$ jobs
[1]+  Running                 sleep 1h &
~$ cd /
/$ cdjob %1
~$ 

你可以做

cd /proc/$!/cwd

或者更好:

cd -P /proc/$!/cwd

在第一種情況下pwd,工作目錄將顯示為 /proc/XXXXXX/cwdpwd -P並將顯示真實的目錄路徑。

第二種方法將直接更改為由請求的路徑連結到的物理目錄。

引用自:https://unix.stackexchange.com/questions/82210