ack-grep a ack en ubuntu

19

Me preguntaba, recientemente instalé ack (ack-grep en ubuntu), y no puedo entender cómo escribir ack para obtener ack-grep (por alguna razón, ack es tomado por un traductor kanji).

¿Hay una mejor manera que simplemente aliasar la cosa en el shell (no es global de esa manera, y no puede evocarlo en vim, por ejemplo).

¡Muchas gracias!

FurtiveFelon
fuente

Respuestas:

16

Enlaza o copia ack-greppara /usr/local/binque tenga prioridad en la RUTA:

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

O, como sugirió Davey, deshazte de él acksi no lo necesitas:

sudo apt-get remove ack

Otra solución podría implicar el uso dpkg-divertde decir dpkgque desea que todos los paquetes que tienen su /usr/bin/ackrenombrada a nivel local y luego enlazar ack-grepa ackla ruta.

Phaphink
fuente
20

En Ubuntu / Debian puedes "desviar" ack-grep:

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

Utilice el sistema de alternativas de 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

El comando es difícil de acertar, pero la solución es superior a dpkg-divert por los siguientes motivos:

  1. No fuerza ni anula la instalación del paquete
  2. Permite configurar un enlace esclavo para la página de manual

Más información sobre las alternativas de Debian aquí: http://wiki.debian.org/DebianAlternatives

Instalar la alternativa permite invocar ack-grep as acky leer la página de manual usando man ack.

sean
fuente
1
Esta es la mejor respuesta en mi humilde opinión!
Renaud
Esta es la forma "correcta" de Debian / Ubuntu de hacer esto.
Tgies
7

Menos molesto:

alias ack = ack-grep

amplio
fuente
La pregunta pide algo más que un alias, y señala correctamente que esta solución es bastante limitada y no puede ayudar con la exclusión de los scripts de Vim o bash.
Ian Greenleaf Young
@IanGreenleaf wow, tienes razón, ¡es vergonzoso ver eso 4 años después! Vaya: /
generalizado
7

Lo más fácil es instalar ack a través de cpan. Se instalará en / usr / local / bin, que tiene prioridad sobre / usr / bin. Solo corre:

sudo cpan App::Ack

o si no tienes el cliente cpan:

curl -L cpanmin.us | perl - --sudo App::Ack
Naveed
fuente
2
No funcionó para mí en Ubuntu 10.04 LTS. Mensaje de error: "No seas tonto, no puedes instalar daniel bosold". Pero lo sudo cpan -i App::Ackhace.
geekQ
¿Soy el único que piensa que esto no es seguro?
SaveTheRbtz
2

Suponiendo que el traductor de kanji no sea / usr / bin / ack y que su ubicación sea posterior a / usr / bin, entonces probablemente pueda hacer esto:

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

Esto le pedirá que confirme la operación si el destino existe y crea una copia de seguridad si selecciona sí.

Pausado hasta nuevo aviso.
fuente
2
Por desgracia la vida kanji ACK en / usr / bin por lo que si se puede vivir sin él: sudo apt-get remove ACK
Davey
0

Iría con la opción de enlace simbólico, ya que ahorra el peligro de transferir ese alias a otra máquina si copia su archivo bash.

vaya con esto, funciona bien en mi compilación de ubuntu 12.04

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

Mi solución no es tan limpia porque escribe, /bin/pero siempre que /usr/bin/acksea ​​un binario y no un enlace simbólico, fue más fácil para mí solucionarlo de esta manera.

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

Para elegir cuál usar

sudo update-alternatives --config ack
Guillermo
fuente