Назад | Перейти на главную страницу

ack-grep для подтверждения в ubuntu

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

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

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

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

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

Вы связываете или копируете ack-grep к /usr/local/bin так что он становится приоритетным в 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 в пути.

Используйте систему альтернатив 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-страницы с помощью man ack.

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

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

Проще всего установить ack через cpan. Он будет установлен в / usr / local / bin, который имеет приоритет над / usr / bin. Просто беги:

sudo cpan App::Ack

или если у вас нет клиента cpan:

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

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

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

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

Я бы выбрал вариант символической ссылки, поскольку он избавляет от опасности переноса этого псевдонима на другую машину, если вы скопируете свой файл bash.

пойти с этим, отлично работает на моей сборке ubuntu 12.04

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

Мое решение не так чисто, потому что оно пишется в /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