web-dev-qa-db-ja.com

UbuntuでのACKへのACK-GREP

私は単にack(ubuntuではack-grep)をインストールしましたが、ack-grepを取得するためにackと入力する方法を理解できません(何らかの理由でackが漢字トランスレーターで使用されているため)。

シェルで単にエ​​イリアスを付けるよりも良い方法はありますか?.

どうもありがとう!

19
FurtiveFelon

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/ackをローカルで名前変更してから、パス内のack-grepackにリンクすることを通知することです。

16
ℝaphink

Ubuntu/Debianでは、「転換」することができますack-grep

Sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
20
SaveTheRbtz

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

$ 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をackとして呼び出し、man ackを使用してマンページを読み取ることができます。

8
sean

邪魔にならないもの:

エイリアスack = ack-grep

7
broady

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

Sudo cpan App::Ack

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

curl -L cpanmin.us | Perl - --Sudo App::Ack
7
Naveed

漢字変換プログラムがまだ/ usr/bin/ackでなく、その場所が/ usr/binより後のパスにあると想定すると、おそらく次のようになります。

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

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

私のソリューションは/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
0
Guillermo

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

これでうまくいき、ubuntu 12.04のビルドで問題なく動作します

Sudo apt-get install ack-grep
Sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
0
John Griffiths