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!

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.


20

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

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

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.


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


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

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.


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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.