web-dev-qa-db-ja.com

ワイルドカードが削除されたapt-get removeは、予想以上に削除されました。どうして?

昨夜、私はCDを焼こうとしていました。 k3bに悩まされ、代わりにbraseroを使用することにしたので、k3bを削除しに行きました。

入力したもの:

Sudo apt-get remove k3b

タブを2回押すと、システムにk3bとk3b-dataの両方があることがわかりました。システムにk3bがなければk3b-dataは必要ないと仮定して、同様に削除したいので、次のように入力しました。

Sudo apt-get remove k3b*

残念ながら、私はYを押して確認せずに確認しました。 k3bおよびk3b-dataよりもはるかに多くアンインストールしました。 k3b*正規表現に適合しないパッケージをアンインストールしました。例:transmissionおよびnetwork-manager

k3b*の間にスペースがなかったことはかなり確信していますが、それ以外の理由でそれがすべて削除される理由はわかりません。 apt-getについて、私が誤解していることはありますか?

37
Steve Goykovich

必要なコマンドはSudo apt-get remove '^k3b.*'です。理由は次のとおりです。

  • .*が必要なのは、任意の文字に何度でも一致させるためです
  • 文字列の先頭と一致するには^が必要です
  • Bashが*をワイルドカードとして解釈しないように正規表現を引用する必要があります

(この回答は、qbiとFlimmによって提供された以前の情報を完了し要約します)

36
Boris Dalstein

正規表現*は、ゼロまたは任意の多数を表します。したがって、apt-getk3が含まれ、その後にbが含まれるすべてのものを削除するように指示したので、基本的にk3を含むすべてのものを削除します。私のシステムでコマンドを試してみると、58個のパッケージを削除したいのです。

Sudo apt-get remove -s k3b*
Package k3b is not installed, so not removed
Package k3b-data is not installed, so not removed
Package k3b-dbg is not installed, so not removed
Package libcanberra-gtk3-0 is not installed, so not removed
Package libcanberra-gtk3-0-dbg is not installed, so not removed
Package libcanberra-gtk3-dev is not installed, so not removed
…
The following packages will be REMOVED:
  appmenu-gtk ardour audacity brasero brasero-cdrkit firefox-globalmenu
  gconf-editor gir1.2-appindicator-0.1 gnome-applets gnome-control-center
…
0 upgraded, 2 newly installed, 58 to remove and 0 not upgraded.
30
qbi

その場合、それらのプログラムが依存しているk3bが含まれていたライブラリを削除する可能性が高くなります。

要するに、あなたは決して知らないかもしれません。ワイルドカードを使用して物を削除したり、プロンプトが表示されたときに物を読んだりしないことをお勧めします(ごめん).

また、-n正規表現検索では、名前だけでなくすべてのフィールドが使用されます

http://ccrma.stanford.edu/planetccrma/man/man8/apt-cache.8.html

また、QBIは正しいですあなたの正規表現は始めから欠陥があります

1
coteyr