ack-grep to ack in ubuntu

19

Zastanawiałem się, niedawno zainstalowałem ack (ack-grep w ubuntu) i nie mogę wymyślić, jak po prostu wpisać ack, aby uzyskać ack-grep (z jakiegoś powodu potwierdzenie jest zajęte przez tłumacza kanji).

Czy istnieje lepszy sposób niż tylko aliasing elementu w powłoce (nie jest w ten sposób globalny i na przykład nie może go wywołać w vimie).

Wielkie dzięki!

FurtiveFelon
źródło

Odpowiedzi:

16

Link lub skopiuj ack-grepdo, /usr/local/binaby uzyskać priorytet w ŚCIEŻCE:

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

Albo, jak Davey zasugerował, pozbyć się ack, jeśli nie to potrzebne:

sudo apt-get remove ack

Inne rozwiązanie polegałoby na użyciu, dpkg-divertaby powiedzieć dpkg, że chcesz, aby /usr/bin/acknazwy wszystkich pakietów były zmieniane lokalnie, a następnie łączyły ack-grepsię ackze ścieżką.

Inkaphink
źródło
20

W Ubuntu / Debian możesz „przekierować” ack-grep:

sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
SaveTheRbtz
źródło
8

Skorzystaj z systemu alternatyw Debiana.

$ 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

Polecenie może być trudne, ale rozwiązanie jest lepsze niż dpkg-divert z następujących powodów:

  1. Nie wymusza ani nie zastępuje instalacji pakietu
  2. Umożliwia ustawienie łącza podrzędnego dla strony podręcznika

Więcej informacji na temat Alternatyw Debiana tutaj: http://wiki.debian.org/DebianAlternatives

Zainstalowanie alternatywy umożliwia wywołanie ack-grep as acki odczytanie strony podręcznika za pomocą man ack.

Sean
źródło
1
To najlepsza odpowiedź IMHO!
Renaud
Jest to „właściwy” sposób Debiana / Ubuntu, aby to zrobić.
tgies
7

Najmniej natrętny:

alias ack = ack-grep

pstrokaty
źródło
Pytanie wymaga czegoś innego niż alias, poprawnie zauważając, że to rozwiązanie jest dość ograniczone i nie może pomóc w usuwaniu skryptów z Vima lub skryptów bash.
Ian Greenleaf Young
@IanGreenleaf wow, masz rację - żenujące, że 4 lata później! Ups: /
brody
7

Najprościej jest zainstalować ack za pomocą cpan. Zostanie zainstalowany w / usr / local / bin, który ma pierwszeństwo przed / usr / bin. Po prostu biegnij:

sudo cpan App::Ack

lub jeśli nie masz klienta cpan:

curl -L cpanmin.us | perl - --sudo App::Ack
Naveed
źródło
2
Nie działało dla mnie na Ubuntu 10.04 LTS. Komunikat o błędzie: „Nie bądź głupi, nie możesz zainstalować Daniel Bosold”. Ale sudo cpan -i App::Ackrobi.
geekQ 10.10.11
Czy jestem jedynym, który uważa, że ​​to nie jest bezpieczne?
SaveTheRbtz
2

Zakładając, że tłumacz kanji nie jest już / usr / bin / ack i że jego lokalizacja znajduje się później na twojej ścieżce niż / usr / bin, prawdopodobnie możesz to zrobić:

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

Spowoduje to monit o potwierdzenie operacji, jeśli miejsce docelowe istnieje, i utworzy kopię zapasową, jeśli wybierzesz opcję tak.

Wstrzymano do odwołania.
źródło
2
Niestety kanji ack mieszka w / usr / bin, więc jeśli możesz żyć bez niego: sudo apt-get usuń ack
davey
0

wybrałbym opcję dowiązania symbolicznego, ponieważ oszczędza to niebezpieczeństwa przeniesienia tego aliasu na inną maszynę, jeśli skopiujesz plik bash.

idź z tym, działa dobrze na mojej kompilacji Ubuntu 12.04

sudo apt-get install ack-grep
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
John Griffiths
źródło
0

Moje rozwiązanie nie jest tak czyste, ponieważ zapisuje się, /bin/ale o ile /usr/bin/ackjest to plik binarny, a nie dowiązanie symboliczne, łatwiej było mi to naprawić.

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

Aby wybrać, którego użyć

sudo update-alternatives --config ack
Guillermo
źródło