Ack-grep для подтверждения в Ubuntu

19

Мне было просто интересно, я недавно установил ack (ack-grep в ubuntu), и я не могу понять, как просто набрать ack, чтобы получить ack-grep (по какой-то причине ack используется переводчиком кандзи).

Есть ли лучший способ, чем просто использовать псевдоним в оболочке (он не является глобальным и не может вызывать его, например, в vim).

Большое спасибо!

FurtiveFelon
источник

Ответы:

16

Вы ссылаетесь или копируете, ack-grepчтобы /usr/local/binон стал приоритетным в ПУТИ:

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в пути.

ℝaphink
источник
20

В Ubuntu / Debian вы можете «отклонить» ack-grep:

sudo dpkg-divert --local --divert /usr/bin/ack --rename --add /usr/bin/ack-grep
SaveTheRbtz
источник
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. Позволяет установить подчиненную ссылку для man-страницы

Больше информации об альтернативах Debian здесь: http://wiki.debian.org/DebianAlternatives

Установка альтернативы позволяет вызывать ack-grep as ackи читать man-страницу, используя man ack.

Sean
источник
1
Это лучший ответ ИМХО!
Рено
Это «правильный» способ сделать это в Debian / Ubuntu.
tgies
7

Наименее навязчивые:

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

Broady
источник
Вопрос требует чего-то другого, кроме псевдонима, правильно отмечая, что это решение довольно ограничено и не может помочь с выделением из сценариев Vim или bash.
Ян Гринлиф Янг,
@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 10.10.11
Я единственный, кто считает, что это небезопасно?
SaveTheRbtz
2

Предполагая, что переводчик кандзи еще не является / usr / bin / ack и что его местоположение находится на вашем пути позже, чем / usr / bin, вы, вероятно, можете сделать это:

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

Это предложит вам подтвердить операцию, если место назначения существует, и создаст резервную копию, если вы выберете да.

Приостановлено до дальнейшего уведомления.
источник
2
К сожалению, кандзи ack живет в / usr / bin, так что если вы можете жить без него: sudo apt-get remove ack
davey
0

я бы пошел с опцией символической ссылки, поскольку это спасает опасность переноса этого псевдонима на другую машину, если вы скопируете свой файл 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
Гильермо
источник