Shell-Script

從所有子目錄安裝軟體

  • April 30, 2020

我對 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/localwith (這意味著您根本configure不需要,因為您已經在您的主目錄中擁有寫入權限)。sudo

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