问题描述
我只是想知道,我最近安装了ack(ubuntu中的ack-grep),但我不知道如何键入ack才能获得ack-grep(由于某种原因,ack被汉字翻译器占用了)。
有没有比在Shell中别名这个东西更好的方法了(它不是全局的,例如不能在vim中调用它)。
非常感谢!
最佳方法
您可以将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中,您可以”divert” ack-grep
:
sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
第三种方法
使用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:
-
不会强制或覆盖软件包安装
-
启用设置联机帮助页的从属链接
有关Debian替代方案的更多信息,请参见:http://wiki.debian.org/DebianAlternatives
安装替代方法后,可以将ack-grep作为ack
进行调用,并使用man ack
阅读联机帮助页。
第四种方法
最少干扰:
alias ack=ack-grep
第五种方法
最简单的方法是通过cpan安装ack。它将安装在/usr /local /bin中,其优先级高于/usr /bin。赶紧跑:
sudo cpan App::Ack
或者如果您没有cpan客户端:
curl -L cpanmin.us | perl - --sudo App::Ack