ack-grep su ack in ubuntu


19

Mi stavo solo chiedendo, di recente ho installato ack (ack-grep in Ubuntu), e non riesco a capire come digitare semplicemente ack per ottenere ack-grep (per qualche motivo, ack è occupato da un traduttore kanji).

Esiste un modo migliore del semplice aliasing della cosa nella shell (non è globale in quel modo, e non può evocarla in vim per esempio).

Molte grazie!

Risposte:


16

Si collega o copia ack-grepin /usr/local/binmodo che diventi prioritario nel PERCORSO:

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

Oppure, come ha suggerito Davey, sbarazzarsi di ackse non ne hai bisogno:

sudo apt-get remove ack

Un'altra soluzione potrebbe consistere nell'utilizzare dpkg-divertper dire dpkgche si desidera che tutti i pacchetti /usr/bin/ackvengano rinominati localmente e quindi collegati ack-grepal ackpercorso.


20

In Ubuntu / Debian puoi "deviare" ack-grep:

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

8

Usa il sistema 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

Il comando è difficile da ottenere correttamente, ma la soluzione è superiore a dpkg-divert per i seguenti motivi:

  1. Non forza o sovrascrive l'installazione del pacchetto
  2. Abilita l'impostazione di un collegamento slave per la manpage

Maggiori informazioni su Debian Alternatives qui: http://wiki.debian.org/DebianAlternatives

L'installazione dell'alternativa consente di invocare ack-grep come acke leggere la manpage usando man ack.


1
Questa è la risposta migliore IMHO!
Renaud,

Questo è il modo "giusto" di Debian / Ubuntu per farlo.
tgies

7

Meno invadente:

alias ack = ack-grep


La domanda richiede qualcosa di diverso dall'alias, notando correttamente che questa soluzione è piuttosto limitata e non può fare a meno di sborsare da script Vim o bash.
Ian Greenleaf Young,

@IanGreenleaf wow, hai ragione - imbarazzante vederlo 4 anni dopo! Oops: /
gran parte il

7

La cosa più semplice da fare è installare ack tramite cpan. Verrà installato in / usr / local / bin, che ha la precedenza su / usr / bin. Corri:

sudo cpan App::Ack

o se non hai il client cpan:

curl -L cpanmin.us | perl - --sudo App::Ack

2
Non ha funzionato per me su Ubuntu 10.04 LTS. Messaggio di errore: "Non essere sciocco, non puoi installare daniel bosold". Ma lo sudo cpan -i App::Ackfa.
geekQ,

Sono l'unico che pensa che questo non sia sicuro?
SaveTheRbtz,

2

Supponendo che il traduttore kanji non sia già / usr / bin / ack e che la sua posizione sia più avanti nel tuo percorso rispetto a / usr / bin, probabilmente puoi farlo:

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

Questo ti chiederà di confermare l'operazione se la destinazione esiste e crea un backup se selezioni sì.


2
Sfortunatamente il kanji ack vive in / usr / bin, quindi se puoi vivere senza di esso: sudo apt-get remove ack
davey

0

andrei con l'opzione symlink in quanto salva il pericolo di trasferire quell'alias su un'altra macchina se copi il tuo file bash.

andare con questo, funziona benissimo sulla mia build di Ubuntu 12.04

sudo apt-get install ack-grep
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack

0

La mia soluzione non è così pulita perché scrive /bin/ma fintanto che /usr/bin/ackè un binario e non un collegamento simbolico, è stato più facile per me risolvere in questo modo.

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

Per scegliere quale usare

sudo update-alternatives --config ack
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.