2017-05-08 26 views
0

我想將每個終端選項卡的工作目錄寫入單個文件。我想我已經接近以下,但問題是相同(當前)目錄路徑多次寫入文件。zsh/bash - 如何將所有打開的終端選項卡的目錄寫入文件?

for x in $(ps | grep zsh) 
do 
    echo "$(pwd)" >> "tabs open $(date +%Y_%m_%d_%H_%M_%S).txt" 
done 

在此先感謝您提出我的新問題。

+0

你是什麼意思的每個終端選項卡?也很確定你所嘗試的是不可能的。進程無法看到其他進程的環境變量。你可能得到的最好的結果是檢查'/ proc/$ pid/environ'這個進程,但是我非常確定shell在啓動後不會更新它,所以它不會包含PWD。 – 123

+0

好夾。 。 。 。 –

+1

'/ proc/$ pid/cwd'是給定進程當前工作目錄的符號鏈接。這假設你有一個'proc'文件系統,當然。 – chepner

回答

0

這不是你所需要的100%解決方案,但它最接近我能理解的。

# For each PID of the "-bash" processes... 
for x in $(ps -ef | grep -v grep | grep -- "-bash" | awk '{print $2}'); do 
    # check if the file is readable (only user has access) 
    if [[ -r /proc/$x/cwd ]]; then 
     # print details including the working directory 
     ls -ld /proc/$x/cwd 
     # ... or just PID and it's working directory 
     echo $x : $(ls -ld /proc/$x/cwd | awk '{print $11}') 
    fi 
done > "tabs_open_$(date +%Y_%m_%d_%H_%M_%S).txt" 

「-bash」是進程名稱,因爲它看起來實際上是在終端內部。該腳本不會考慮用戶在終端窗口內手動啓動的「bash」進程。

相關問題