ubuntuでack-grepからackへ


19

私は最近、ack(ubuntuのack-grep)をインストールしましたが、ackを入力してack-grepを取得する方法がわかりません(何らかの理由でackが漢字変換ツールに取り込まれます)。

シェル内の事物を単にエイリアス化するよりも良い方法があります(それはそのようにグローバルではなく、例えばvimでそれを呼び出すことはできません)。

どうもありがとう!

回答:


16

リンクまたはコピーack-grep/usr/local/binて、PATHで優先順位を取得します。

sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack

または、daveyが提案したように、ack不要な場合は取り除きます。

sudo apt-get remove ack

別の解決策は、すべてのパッケージの名前をローカルで変更してからパスにリンクすることdpkg-divertを指示するために使用するdpkgことです。/usr/bin/ackack-grepack


20

Ubuntu / Debianでは、「迂回」できますack-grep

sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep

8

Debian Alternativesシステムを使用します。

$ update-alternatives --install /usr/bin/ack ack /usr/bin/ack-grep 100 \
--slave /usr/share/man/man1/ack.1p.gz ack.1p.gz /usr/share/man/man1/ack-grep.1p.gz

コマンドを正しく実行するのは難しいですが、ソリューションは次の理由でdpkg-divertよりも優れています。

  1. パッケージのインストールを強制またはオーバーライドしません
  2. マンページのスレーブリンクの設定を有効にします

Debianの代替案に関する詳細はこちら:http : //wiki.debian.org/DebianAlternatives

代替をインストールすると、ack-grep asを呼び出してack、を使用してマンページを読むことができますman ack


1
これが最高の答えです。
ルノー

これは、これを行う「正しい」Debian / Ubuntuの方法です。
tgies

7

目立たない:

エイリアスack = ack-grep


質問はエイリアス以外の何かを求めますが、この解決策はかなり制限されており、Vimまたはbashスクリプトからのシェルアウトには役立たないことを正しく指摘しています。
イアングリーンリーフヤング14

@IanGreenleafうわー、あなたは正しい-4年後それを見て恥ずかしいです!おっと:/
広い

7

最も簡単なことは、cpanを介してackをインストールすることです。/ usr / local / binにインストールされ、/ usr / binよりも優先されます。ただ走れ:

sudo cpan App::Ack

または、cpanクライアントがない場合:

curl -L cpanmin.us | perl - --sudo App::Ack

2
Ubuntu 10.04 LTSで動作しませんでした。エラーメッセージ:「愚かではない、ダニエルボスルドをインストールすることはできません」。しかし、sudo cpan -i App::Ackします。
geekQ

これが安全でないと思うのは私だけですか?
SaveTheRbtz

2

漢字変換プログラムがまだ/ usr / bin / ackでなく、その場所が/ usr / binよりもパス内にあると仮定すると、おそらくこれを行うことができます。

sudo ln -sib /usr/bin/ack-grep /usr/bin/ack

これにより、宛先が存在する場合は操作の確認を求められ、yesを選択するとバックアップが作成されます。


2
残念ながら、漢字のackは/ usr / binにあるため、それなしで生きることができる場合:sudo apt-get remove ack
davey 2009

0

bashファイルをコピーした場合、そのエイリアスを別のマシンに転送する危険を回避するため、symlinkオプションを使用します。

これで、ubuntu 12.04の私のビルドでうまく動作します

sudo apt-get install ack-grep
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack

0

私の解決策は書き込みなのでそれほどきれいではありませんが、シンボリックリンクではなくバイナリである/bin/限り、/usr/bin/ackこの方法で修正する方が簡単でした。

sudo update-alternatives --install /bin/ack ack /usr/bin/ack 100
sudo update-alternatives --install /bin/ack ack /usr/bin/ack-grep 102

使用するものを選択するには

sudo update-alternatives --config ack
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.