PPAがbashスクリプトのaptソースリストに既に追加されているかどうかを確認する方法


11

add-apt-repositoryコマンドでPPAを追加する前に、PPAが既にシステムに追加されているかどうかを確認する方法を誰かに教えてくださいshell script

それはとても役に立ちます。

ありがとうございました。

回答:


11

あなたはこのようなことをすることができます:

the_ppa=...  # e.g. the_ppa="ondrej/apache2"

if ! grep -q "^deb .*$the_ppa" /etc/apt/sources.list /etc/apt/sources.list.d/*; then
    # commands to add the ppa ...
fi

ノート:

  • grep 一致が見つかった場合、成功して終了します
  • はこれを!否定するため、一致がない場合にコマンドが実行されます= ppa not added
  • -qフラグが作るgrep 静かにそれがマッチした行を表示しないように、。それは単なるノイズになるでしょう、一致があるかどうかを知る必要があるだけで、終了コードは完全です
  • ^deb .*接頭辞は必ず一致した行で始まるようにすることですdebコメントアウトされている行を除外するために、

結局のところ、これはコメントアウトされているPPAを見つけますが、コメントアウトされていないPPAを見つけたいのですが、@ Ten-Coinsの回答はそれを行います。
2017

2

ターミナルを開いて次のコマンドを入力してください

grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep fogger

foggerをPPA名に置き換えます。

ここに画像の説明を入力してください


1
フロッガーがまだ生きているのを見るのはうれしいです、私はgrepがシェルスクリプト内のifステートメントの正しい解決策ではないと思います
Josh

awkでフィールドを検索することもできます。かなり速い。
rɑːdʒɑ

私はawkに精通していませんが、解決策がある場合は、遠慮なくansawreを投稿して繰り返しを取得してください。Ps。私は1つのライナーがかなり好きです
Josh

私が休暇中なので、適切にテストしないと今は投稿できません。その反対投票は何ですか?
rɑːdʒɑ

私はその日後にifステートメントでこれをテストします。反対投票して申し訳ありません。私はそのような記事を夜遅くに読むべきではありませんでした。これはうまくいくと思いますが、コマンドをテストした場合は後で応答します。
Josh

0

list.saveファイル、ソースを削除し、deb行のみを確認して、「fogger」ppaとしてカウントします。

ppa_added=`grep ^ /etc/apt/sources.list /etc/apt/sources.list.d/* | grep -v list.save | grep -v deb-src | grep deb | grep fogger | wc -l`

echo $ppa_added

これはまたdeb、コメントアウトされた# deb行から始まり、のようなファイルからの行を検出しますfoo-ppa.list.distUpgrade-これは意図されたものですか?
Volker Siegel、2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.