ack-grep到ubuntu中的ack


19

我只是想知道,我最近安装了ack(在ubuntu中是ack-grep),但我不知道如何只输入ack来获得ack-grep(由于某种原因,ack被汉字翻译器占用了)。

有没有比在外壳程序中为事物添加别名更好的方法(这种方法不是全局的,例如不能在vim中调用它)。

非常感谢!

Answers:


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/ack本地重命名,然后链接ack-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
这是最好的答案恕我直言!
雷诺2014年

这是Debian / Ubuntu的“正确”方法。
tgies

7

最少干扰:

别名ack = ack-grep


这个问题要求别名以外的其他内容,正确地指出此解决方案非常有限,并且无法帮助从Vim或bash脚本中脱壳。
Ian Greenleaf Young

@IanGreenleaf哇,您是对的-尴尬地看到4年后!糟糕:/
大概是2015年

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上不适合我。错误消息:“别傻了,您不能安装daniel bosold”。但是sudo cpan -i App::Ack可以。
geekQ 2011年

我是唯一认为这不安全的人吗?
SaveTheRbtz

2

假设汉字翻译器尚未位于/ usr / bin / ack,并且其位置在您的路径中位于/ usr / bin之后,那么您可以执行以下操作:

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

这将提示您确认目标位置是否存在,如果选择是,则创建备份。


2
不幸的是,汉字ack位于/ usr / bin中,因此,如果您可以不使用它,则可以使用:sudo apt-get remove ack
davey

0

我会使用symlink选项,因为如果您复制bash文件,它可以避免将别名转移到另一台计算机的危险。

与此一起,在我的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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.