ack-grep ke ack di ubuntu


19

Saya hanya ingin tahu, saya baru saja menginstal ack (ack-grep di ubuntu), dan saya tidak tahu bagaimana cara mengetik ack untuk mendapatkan ack-grep (untuk beberapa alasan ack diambil oleh penerjemah kanji).

Apakah ada cara yang lebih baik daripada hanya aliasing benda di shell (itu tidak global seperti itu, dan tidak dapat membangkitkannya dalam vim misalnya).

Terima kasih banyak!

Jawaban:


16

Anda menautkan atau menyalin ack-grepke /usr/local/binsehingga mendapat prioritas di PATH:

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

Atau, seperti yang disarankan davey, singkirkan ackjika Anda tidak membutuhkannya:

sudo apt-get remove ack

Solusi lain akan melibatkan menggunakan dpkg-divertuntuk memberitahu dpkgbahwa Anda ingin semua paket untuk memiliki mereka /usr/bin/ackberganti nama lokal dan kemudian link ack-grepke ackdalam jalan.


20

Di Ubuntu / Debian Anda dapat "mengalihkan" ack-grep:

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

8

Gunakan sistem Alternatif 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

Perintah ini sulit untuk dilakukan dengan benar, tetapi solusinya lebih baik daripada dpkg-alihkan karena alasan berikut:

  1. Tidak memaksa atau menimpa instalasi paket
  2. Mengaktifkan pengaturan tautan slave untuk halaman manual

Info lebih lanjut tentang Alternatif Debian di sini: http://wiki.debian.org/DebianAlternatives

Menginstal alternatif memungkinkan memanggil ack-grep sebagai ackdan membaca halaman manual menggunakan man ack.


1
Ini adalah jawaban terbaik IMHO!
Renaud

Ini adalah cara Debian / Ubuntu "benar" untuk melakukan ini.
tgies

7

Paling tidak menonjol:

alias ack = ack-grep


Pertanyaannya menanyakan sesuatu selain alias, dengan benar mencatat bahwa solusi ini sangat terbatas dan tidak dapat membantu dengan keluar dari Vim atau skrip bash.
Ian Greenleaf Young

@IanGreenleaf wow, Anda benar - memalukan melihat itu 4 tahun kemudian! Ups: /
broady

7

Hal termudah untuk dilakukan adalah menginstal ack via cpan. Ini akan diinstal di / usr / local / bin, yang lebih diutamakan dari / usr / bin. Lari saja:

sudo cpan App::Ack

atau jika Anda tidak memiliki klien cpan:

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

2
Tidak bekerja untuk saya di Ubuntu 10,04 LTS. Pesan kesalahan: "Jangan konyol, Anda tidak bisa menginstal daniel bosold". Namun sudo cpan -i App::Ackdemikian.
geekQ

Apakah saya satu-satunya yang berpikir ini tidak aman?
SaveTheRbtz

2

Dengan anggapan bahwa penerjemah kanji belum / usr / bin / ack dan lokasinya lebih lambat dari / usr / bin, maka Anda mungkin dapat melakukan ini:

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

Ini akan meminta Anda untuk mengkonfirmasi operasi jika tujuan ada dan membuat cadangan jika Anda memilih ya.


2
Sayangnya kanji ack tinggal di / usr / bin jadi jika Anda bisa hidup tanpanya: sudo apt-get remove ack
davey

0

Aku akan pergi dengan opsi symlink karena menghemat bahaya mentransfer alias itu ke komputer lain jika Anda menyalin file bash Anda.

ikuti ini, berfungsi dengan baik pada build saya di Ubuntu 12.04

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

0

Solusi saya tidak begitu bersih karena ia menulis /bin/tetapi selama /usr/bin/ackbiner dan bukan symlink, lebih mudah bagi saya untuk memperbaikinya.

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

Untuk memilih mana yang akan digunakan

sudo update-alternatives --config ack
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.