Мне просто интересно, я недавно установил 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 по следующим причинам:
Больше информации об альтернативах 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