Scenario / Questions
I was just wondering, i recently installed ack (ack-grep in ubuntu), and i can’t figure out how to just type in ack to get ack-grep (for some reason ack is taken up by a kanji translator thing).
Is there a better way than just aliasing the thing in the shell (it is not global that way, and cannot evoke it in vim for example).
Thanks a lot!
Find below all possible solutions or suggestions for the above questions..
You link or copy
/usr/local/bin so that it gets prioritary in the PATH:
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
Or, like davey suggested, get rid of
ack if you don’t need it:
sudo apt-get remove ack
Another solution would involve using
dpkg-divert to tell
dpkg that you want all packages to have their
/usr/bin/ack renamed locally and then link
ack in the path.
In Ubuntu/Debian you can “divert”
sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
Use the Debian Alternatives system.
$ 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
The command is tricky to get right, but the solution is superior to dpkg-divert for the following reasons:
- Does not force or override package installation
- Enables setting a slave link for the manpage
More info on Debian Alternatives here:
Installing the alternative enables invoking ack-grep as
ack and reading the manpage using
The easiest thing to do is install ack via cpan. It will get installed in /usr/local/bin, which has precedence over /usr/bin. Just run:
sudo cpan App::Ack
or if you don’t have the cpan client:
curl -L cpanmin.us | perl - --sudo App::Ack
Assuming that the kanji translator is not already /usr/bin/ack and that its location is later in your path than /usr/bin, then you can probably do this:
sudo ln -sib /usr/bin/ack-grep /usr/bin/ack
This will prompt you to confirm the operation if the destination exists and creates a backup if you select yes.
i’d go with the symlink option as it saves the danger of transferring that alias to another machine if you copy your bash file.
go with this, works fine on my build of ubuntu 12.04
sudo apt-get install ack-grep sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
My solution is not so clean because it write in
/bin/ but as long as
/usr/bin/ack is a binary and not a symlink, was easier for me to fix this way.
sudo update-alternatives --install /bin/ack ack /usr/bin/ack 100 sudo update-alternatives --install /bin/ack ack /usr/bin/ack-grep 102
To choose which one to use
sudo update-alternatives --config ack
Kubernetes Free Online Tutorial, Kubernetes Beginner Tutorial
DevOps Free Online Tutorial, DevOps Beginner Tutorial
Ansible Free Online Tutorial, Ansible Beginner Tutorial
Docker Free Online Tutorial, Docker Beginner Tutorial
Openstack Free Online Tutorial, Openstack Beginner Tutorial
Disclaimer: This has been sourced from a third party syndicated feed through internet. We are not responsibility or liability for its dependability, trustworthiness, reliability and data of the text. We reserves the sole right to alter, delete or remove (without notice) the content in its absolute discretion for any reason whatsoever.
Source: ack-grep to ack in ubuntu