バックグラウンドジョブのジョブディレクトリにすばやくアクセスする

バックグラウンドジョブのジョブディレクトリにすばやくアクセスする

私が望むものを再現するための最小限の努力は次のとおりです。

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

バックグラウンドプロセスを管理するために使用すると、jobs作業ディレクトリ(wd)が現在のディレクトリと異なる場合にも表示されます。

表示された作業ディレクトリに簡単に変更する簡単な方法はありますか?私はBash 3.2を使用しています。

私は同様のツールを使用するラッパー機能を探しているのではなく、単にawkシェルに組み込まれたソリューションを探しています。

ベストアンサー1

プロセスの作業ディレクトリをインポートすることが目的の場合は、次のいずれかの方法を使用してください。

~ » 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
~$ 

おすすめ記事