私はUbuntuに初めてアクセスし、小規模なプロジェクトのためにインストールしました。パッケージを含む約30個のtarアーカイブを抽出し、今ではソースコードとconfigure
ファイルを含む多くのディレクトリがあります。
すべてのサブディレクトリをすばやく繰り返し、各サブディレクトリで設定シェルスクリプトを実行する方法は?
これまで、フォルダを循環して構成スクリプトを実行するためにシェルスクリプト(i.shと呼ばれる)を作成してみましたが、役に立ちませんでした。これを修正する方法はありますか?どのように実行しますか?
find . -type d | while read d; do
./configure
make
sudo make install
done
端末に入り、実行して実行しましたsudo bash ./i.sh
。
ありがとうございます!
答え1
現在のディレクトリのすべてのディレクトリを繰り返すには、より単純なループを使用します。
for dir in ./*/; do
# more here
done
このパターンは、./*/
現在のディレクトリ内のサブディレクトリと一致します。
ここで使用すると、解凍されたアーカイブ内でサブディレクトリが見つかるため、find
間違った操作を実行する可能性が高くなります。tar
各ディレクトリに対してそのディレクトリに移動して、次のものを構築しよう$dir
とします。cd
for dir in ./*/; do
( cd "$dir" && ./configure && make && sudo make install )
done
括弧を使用すると、コマンドはサブシェルで実行されます。サブシェル内のディレクトリの変更はサブシェルの外側に反映されないため、「cd
戻り」は必要ありません。
&&
(「and」)を使用してコマンドを一緒に接続します。つまり、1 つのコマンドが失敗した場合、後続のコマンドはまったく実行されません。
sudo
あなたはこれを使用しないでしょう可能このステップにはroot権限が必要make install
ですsudo
。
/usr/local
デフォルトでは、以下のすべての項目がインストールされます。別のインストールプレフィックスにインストールするには、たとえば--prefix=$HOME/local
withを使用しますconfigure
(つまり、必要ではないことを意味します)。sudo
別の言葉、既にホームディレクトリに書き込み権限があるからです)。