Shell-Script
從所有子目錄安裝軟體
我對 Ubuntu 有點陌生,我安裝它是為了做一個小項目。我提取了大約 30 個包含軟體包的 tar 檔案,現在我有很多目錄,每個目錄都包含原始碼和一個
configure
文件。如何快速遍歷所有子目錄並在每個子目錄中執行配置 shell 腳本?
到目前為止,我已經嘗試創建一個循環遍歷文件夾並執行配置腳本的 shell 腳本(稱為 i.sh),但無濟於事。有什麼辦法可以糾正嗎?我將如何執行它?
find . -type d | while read d; do ./configure make sudo make install done
我通過進入終端並執行來執行它
sudo bash ./i.sh
。謝謝!
要遍歷目前目錄中的所有目錄,請使用更簡單的循環:
for dir in ./*/; do # more here done
該模式
./*/
將匹配目前目錄中的子目錄。使用
find
在這裡很可能會做錯事,因為它會在解壓縮的tar
檔案中找到子目錄。對於每個目錄,
$dir
您要cd
進入該目錄並進行建構:for dir in ./*/; do ( cd "$dir" && ./configure && make && sudo make install ) done
括號使命令在子shell中執行。子shell內部目錄的變化不會反映在子shell之外,所以永遠不需要“
cd
返回”。我用
&&
(“and”)將命令串在一起。這意味著如果一個命令失敗,後面的命令將根本不會執行。您不會使用 執行此
sudo
操作,因為可能需要 root 權限的唯一步驟make install
是已以 . 為前綴的步驟sudo
。請注意,這將
/usr/local
預設安裝所有項目。要在另一個安裝前綴中安裝,請使案例如--prefix=$HOME/local
with (這意味著您根本configure
不需要,因為您已經在您的主目錄中擁有寫入權限)。sudo