ack-grep, um in Ubuntu zu bestätigen

19

Ich habe mich nur gewundert, dass ich kürzlich ack (ack-grep in Ubuntu) installiert habe, und ich kann nicht herausfinden, wie man ack einfach eintippt, um ack-grep zu bekommen (aus irgendeinem Grund wird ack von einer Kanji-Übersetzungssache aufgegriffen).

Gibt es einen besseren Weg, als das Ding in der Shell zu aliasen (es ist nicht global und kann es zum Beispiel nicht vim evozieren)?

Vielen Dank!

FurtiveFelon
quelle

Antworten:

16

Du verlinkst oder kopierst ack-grep, /usr/local/bindamit es im PATH prioritär wird:

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

Oder, wie von Davey vorgeschlagen, entfernen Sie es, ackwenn Sie es nicht brauchen:

sudo apt-get remove ack

Eine andere Lösung würde bedeuten , mit dpkg-divertsagen , dpkgdass Sie alle Pakete wollen ihre haben /usr/bin/acklokal umbenannt und verknüpfen Sie dann ack-grepauf ackin den Weg.

ℝaphink
quelle
20

In Ubuntu / Debian können Sie "umleiten" ack-grep:

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

Verwenden Sie das Debian Alternatives-System.

$ 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

Der Befehl ist schwierig zu verstehen, aber die Lösung ist dpkg-divert aus folgenden Gründen überlegen:

  1. Erzwingt oder überschreibt die Paketinstallation nicht
  2. Aktiviert das Festlegen eines Slave-Links für die Manpage

Weitere Informationen zu Debian-Alternativen finden Sie hier: http://wiki.debian.org/DebianAlternatives

Wenn Sie die Alternative installieren, können Sie ack-grep as aufrufen ackund die Manpage mit lesen man ack.

Sean
quelle
1
Dies ist die beste Antwort, IMHO!
Renaud
Dies ist die "richtige" Debian / Ubuntu-Methode, um dies zu tun.
tgies
7

Am wenigsten aufdringlich:

alias ack = ack-grep

breit
quelle
In der Frage wird nach etwas anderem als einem Alias ​​gefragt, wobei zu Recht darauf hingewiesen wird, dass diese Lösung nur in sehr begrenztem Umfang zur Verfügung steht und nicht dazu beitragen kann, sich von Vim- oder Bash-Skripten zu lösen.
Ian Greenleaf Young
@IanGreenleaf Wow, du hast Recht - peinlich, das 4 Jahre später zu sehen! Hoppla: /
am
7

Am einfachsten installieren Sie ack über cpan. Es wird in / usr / local / bin installiert, das Vorrang vor / usr / bin hat. Renn einfach:

sudo cpan App::Ack

oder wenn du den cpan client nicht hast:

curl -L cpanmin.us | perl - --sudo App::Ack
Naveed
quelle
2
Funktionierte nicht für mich auf Ubuntu 10.04 LTS. Fehlermeldung: "Sei nicht albern, du kannst daniel bosold nicht installieren". Tut es sudo cpan -i App::Ackaber.
GeekQ
Bin ich der einzige, der denkt, dass dies nicht sicher ist?
SaveTheRbtz
2

Angenommen, der Kanji-Übersetzer ist noch nicht / usr / bin / ack und befindet sich später in Ihrem Pfad als / usr / bin, dann können Sie dies wahrscheinlich tun:

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

Dadurch werden Sie aufgefordert, den Vorgang zu bestätigen, wenn das Ziel vorhanden ist, und eine Sicherung zu erstellen, wenn Sie Ja auswählen.

Bis auf weiteres angehalten.
quelle
2
Leider lebt die Kanji-Bestätigung in / usr / bin. Wenn Sie also ohne sie leben können: sudo apt-get remove ack
davey
0

Ich würde mit der Symlink-Option gehen, da es die Gefahr der Übertragung dieses Alias ​​auf einen anderen Computer erspart, wenn Sie Ihre Bash-Datei kopieren.

mach mit, funktioniert gut auf meinem Build von Ubuntu 12.04

sudo apt-get install ack-grep
sudo ln -sf /usr/bin/ack-grep /usr/local/bin/ack
John Griffiths
quelle
0

Meine Lösung ist nicht so sauber, weil sie einschreibt, /bin/aber solange /usr/bin/ackes sich um eine Binärdatei und nicht um einen Symlink handelt, war es für mich einfacher, dies zu beheben.

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

So wählen Sie die zu verwendende Option aus

sudo update-alternatives --config ack
Guillermo
quelle