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!

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.


20

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

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

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.


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


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

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í.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.