Bash
快速訪問後台作業的工作目錄
重現我正在尋找的東西的最小努力如下
/$ 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
並將顯示真實的目錄路徑。第二種方法將直接更改為由請求的路徑連結到的物理目錄。