ack-grep para ack no ubuntu

19

Eu estava pensando: instalei recentemente o ack (ack-grep no ubuntu) e não consigo descobrir como digitar o ack para obter o ack-grep (por algum motivo, o ack é usado por um tradutor de kanji).

Existe uma maneira melhor do que apenas criar um alias na coisa do shell (não é global dessa maneira e não pode evocá-la no vim, por exemplo).

Muito obrigado!

FurtiveFelon
fonte

Respostas:

16

Você vincula ou copia ack-greppara /usr/local/binque fique prioritário no CAMINHO:

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

Ou, como sugeriu o davey, livre- ackse se não precisar:

sudo apt-get remove ack

Outra solução seria envolver a utilização dpkg-divertde dizer dpkgque você quer todos os pacotes para ter seu /usr/bin/ackrenomeado localmente e, em seguida, ligar ack-greppara ackno caminho.

ℝaphink
fonte
20

No Ubuntu / Debian você pode "desviar" ack-grep:

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

Use o 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

É difícil acertar o comando, mas a solução é superior ao dpkg-desvio pelos seguintes motivos:

  1. Não força ou substitui a instalação do pacote
  2. Permite definir um link escravo para a página de manual

Mais informações sobre as alternativas do Debian aqui: http://wiki.debian.org/DebianAlternatives

A instalação da alternativa permite chamar o ack-grep as acke ler a página de manual usando man ack.

sean
fonte
1
Esta é a melhor resposta IMHO!
Renaud
Esta é a maneira "certa" do Debian / Ubuntu de fazer isso.
tgies
7

Menos invasivo:

alias ack = ack-grep

amplamente
fonte
A pergunta pede algo diferente de alias, observando corretamente que essa solução é bastante limitada e não pode ajudar com o uso de scripts do Vim ou do bash.
Ian Greenleaf Young
@IanGreenleaf uau, você está certo - vergonhoso ver isso 4 anos depois! Ops: /
broady 12/01
7

A coisa mais fácil a fazer é instalar o ack via cpan. Ele será instalado em / usr / local / bin, que tem precedência sobre / usr / bin. Apenas corra:

sudo cpan App::Ack

ou se você não possui o cliente cpan:

curl -L cpanmin.us | perl - --sudo App::Ack
Naveed
fonte
2
Não funcionou para mim no Ubuntu 10.04 LTS. Mensagem de erro: "Não seja bobo, você não pode instalar daniel bosold". Mas sudo cpan -i App::Ackfaz.
geekQ
Eu sou o único que acha que isso não é seguro?
SaveTheRbtz
2

Supondo que o tradutor de kanji ainda não seja / usr / bin / ack e que sua localização seja posterior ao seu caminho que / usr / bin, você provavelmente poderá fazer isso:

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

Isso solicitará que você confirme a operação se o destino existir e criará um backup se você selecionar sim.

Pausado até novo aviso.
fonte
2
Infelizmente a vida kanji ack em / usr / bin por isso, se você pode viver sem ele: sudo apt-get remove ack
Davey
0

Eu iria com a opção de link simbólico, pois evita o risco de transferir esse alias para outra máquina se você copiar o arquivo bash.

vá com isso, funciona bem na minha compilação do ubuntu 12.04

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

Minha solução não é tão limpa, porque ela é escrita, /bin/mas contanto que /usr/bin/ackseja um binário e não um link simbólico, foi mais fácil para eu corrigir dessa maneira.

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

Para escolher qual usar

sudo update-alternatives --config ack
Guillermo
fonte