私は単にack(ubuntuではack-grep)をインストールしましたが、ack-grepを取得するためにackと入力する方法を理解できません(何らかの理由でackが漢字トランスレーターで使用されているため)。
シェルで単にエイリアスを付けるよりも良い方法はありますか?.
どうもありがとう!
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-grep
をack
にリンクすることを通知することです。
Ubuntu/Debianでは、「転換」することができますack-grep
:
Sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
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より優れています。
Debian代替の詳細はこちら: http://wiki.debian.org/DebianAlternatives
代替をインストールすると、ack-grepをack
として呼び出し、man ack
を使用してマンページを読み取ることができます。
邪魔にならないもの:
エイリアスack = ack-grep
最も簡単なことは、cpan経由でackをインストールすることです。/usr/binよりも優先される/ usr/local/binにインストールされます。とにかく走れ:
Sudo cpan App::Ack
または、cpanクライアントがない場合:
curl -L cpanmin.us | Perl - --Sudo App::Ack
漢字変換プログラムがまだ/ 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
symlinkオプションを使用すると、bashファイルをコピーした場合にそのエイリアスを別のマシンに転送する危険がなくなります。
これでうまくいき、ubuntu 12.04のビルドで問題なく動作します
Sudo apt-get install ack-grep
Sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack