ack-grep à ack dans ubuntu

19

Je me demandais simplement, j'ai récemment installé ack (ack-grep dans ubuntu), et je ne peux pas comprendre comment taper simplement ack pour obtenir ack-grep (pour une raison quelconque, ack est utilisé par un traducteur kanji).

Existe-t-il un meilleur moyen que de simplement aliaser la chose dans le shell (ce n'est pas global de cette façon, et ne peut pas l'évoquer dans vim par exemple).

Merci beaucoup!

FurtiveFelon
la source

Réponses:

16

Vous liez ou copiez ack-greppour /usr/local/binqu'il devienne prioritaire dans le CHEMIN:

sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack

Ou, comme l'a suggéré Davey, débarrassez ack-vous-en si vous n'en avez pas besoin:

sudo apt-get remove ack

Une autre solution consisterait à utiliser dpkg-divertpour indiquer dpkgque vous souhaitez que tous les packages soient /usr/bin/ackrenommés localement, puis qu'ils soient liés ack-grepau ackchemin d'accès.

ℝaphink
la source
20

Dans Ubuntu / Debian, vous pouvez "détourner" ack-grep:

sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
SaveTheRbtz
la source
8

Utilisez le système 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

La commande est difficile à obtenir correctement, mais la solution est supérieure à dpkg-divert pour les raisons suivantes:

  1. Ne force ni ne remplace l'installation du package
  2. Permet de définir un lien esclave pour la page de manuel

Plus d'informations sur les alternatives Debian ici: http://wiki.debian.org/DebianAlternatives

L'installation de l'alternative permet d'appeler ack-grep as acket de lire la page de manuel à l'aide de man ack.

sean
la source
1
Ceci est la meilleure réponse à mon humble avis!
Renaud
C'est la "bonne" façon Debian / Ubuntu de le faire.
tgies
7

Moins envahissant:

alias ack = ack-grep

largement
la source
La question demande autre chose que l'alias, notant correctement que cette solution est assez limitée et ne peut pas aider à décortiquer à partir de scripts Vim ou bash.
Ian Greenleaf Young
@IanGreenleaf wow, vous avez raison - embarrassant de voir cela 4 ans plus tard! Oups: /
broady
7

La chose la plus simple à faire est d'installer ack via cpan. Il sera installé dans / usr / local / bin, qui a priorité sur / usr / bin. Exécutez simplement:

sudo cpan App::Ack

ou si vous n'avez pas le client cpan:

curl -L cpanmin.us | perl - --sudo App::Ack
Naveed
la source
2
N'a pas fonctionné pour moi sur Ubuntu 10.04 LTS. Message d'erreur: "Ne soyez pas stupide, vous ne pouvez pas installer Daniel Bosold". Mais sudo cpan -i App::Ackoui.
geekQ
Suis-je le seul à penser que ce n'est pas sûr?
SaveTheRbtz
2

En supposant que le traducteur kanji n'est pas déjà / usr / bin / ack et que son emplacement se trouve plus tard sur votre chemin que / usr / bin, alors vous pouvez probablement faire ceci:

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

Cela vous demandera de confirmer l'opération si la destination existe et crée une sauvegarde si vous sélectionnez Oui.

En pause jusqu'à nouvel ordre.
la source
2
Malheureusement, le kanji ack vit dans / usr / bin, donc si vous pouvez vivre sans: sudo apt-get remove ack
davey
0

j'irais avec l'option symlink car elle évite le risque de transférer cet alias vers une autre machine si vous copiez votre fichier bash.

aller avec cela, fonctionne très bien sur ma version d'ubuntu 12.04

sudo apt-get install ack-grep
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
John Griffiths
la source
0

Ma solution n'est pas aussi propre car elle écrit /bin/mais tant qu'il /usr/bin/acks'agit d'un binaire et non d'un lien symbolique, il m'a été plus facile de résoudre ce problème.

sudo update-alternatives --install /bin/ack ack /usr/bin/ack 100
sudo update-alternatives --install /bin/ack ack /usr/bin/ack-grep 102

Pour choisir lequel utiliser

sudo update-alternatives --config ack
Guillermo
la source