ack-grep to ack в ubuntu


19

Мені було просто цікаво, я нещодавно встановив ack (ack-grep в ubuntu), і я не можу зрозуміти, як просто набрати в ack, щоб отримати ack-grep (чомусь ack береться за справу перекладача kanji).

Чи є кращий спосіб, ніж просто згладити річ у оболонці (вона не є глобальною, і не можна викликати це, наприклад, vim).

Дуже дякую!

Відповіді:


16

Ви посилання або скопіювати ack-grepна /usr/local/binтак , що він отримує prioritary в PATH:

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

Або, як запропонував Дейві, позбудьтесь, ackякщо вам це не потрібно:

sudo apt-get remove ack

Інше рішення передбачає використання, dpkg-divertщоб сказати, dpkgщо ви хочете, щоб усі пакунки були /usr/bin/ackперейменовані локально, а потім посилалися ack-grepна ackшлях.


20

У Ubuntu / Debian ви можете "переадресувати" ack-grep:

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

8

Використовуйте систему альтернатив 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

Команда є складною для отримання правильності, але рішення перевершує dpkg-divert з наступних причин:

  1. Не змушує і не змінює встановлення пакета
  2. Вмикає налаштування підлеглого посилання для сторінки

Більше інформації про Debian Альтернативи тут: http://wiki.debian.org/DebianAlternatives

Встановлення альтернативи дозволяє викликати ack-grep під час ackчитання сторінки вручну man ack.


1
Це найкраща відповідь ІМХО!
Рено

Це "правильний" Debian / Ubuntu спосіб зробити це.
tgies

7

Найменш нав'язливі:

псевдонім ack = ack-grep


Питання задає щось інше, ніж псевдонім, правильно зазначаючи, що це рішення досить обмежене і не може допомогти з обстрілом з Vim або bash-скриптів.
Ian Greenleaf Young

@IanGreenleaf вау, ти маєш рацію - соромно бачити це через 4 роки! На жаль: /
завзято

7

Найпростіше це зробити ack через cpan. Він буде встановлений у / usr / local / bin, який має перевагу над / usr / bin. Просто запустіть:

sudo cpan App::Ack

або якщо у вас немає клієнта cpan:

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

2
Не працював для мене на Ubuntu 10.04 LTS. Повідомлення про помилку: "Не будь дурним, ти не можеш встановити Даніель Босхолд". Але sudo cpan -i App::Ackробить.
geekQ

Я єдиний, хто вважає, що це не є безпечним?
SaveTheRbtz

2

Якщо припустити, що перекладач kanji ще не є / usr / bin / ack і що його місце розташування пізніше на вашому шляху, ніж / usr / bin, ви, ймовірно, можете це зробити:

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

Це запропонує підтвердити операцію, якщо призначення існує, і створить резервну копію, якщо ви вибрали так.


2
На жаль,
канц-ак

0

Я б пішов з опцією symlink, оскільки це економить небезпеку перенесення цього псевдоніма на іншу машину, якщо ви скопіюєте файл bash.

піти з цим, чудово працює на моїй збірці ubuntu 12.04

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

0

Моє рішення не настільки чисте, тому що воно записується, /bin/але поки /usr/bin/ackдвійкове, а не символьне посилання, мені було легше виправити цей спосіб.

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

Вибір, який використовувати

sudo update-alternatives --config ack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.