ack-grep để ack trong Ubuntu


19

Tôi chỉ tự hỏi, gần đây tôi đã cài đặt ack (ack-grep trong ubfox) và tôi không thể tìm ra cách nhập ack để nhận ack-grep (vì một số lý do ack được đưa lên bởi một điều dịch kanji).

Có cách nào tốt hơn là chỉ răng cưa thứ trong vỏ (nó không phải là toàn cầu theo cách đó, và không thể gợi lên nó trong vim chẳng hạn).

Cảm ơn rất nhiều!

Câu trả lời:


16

Bạn liên kết hoặc sao chép ack-grepđể /usr/local/binnó được ưu tiên trong PATH:

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

Hoặc, như davey đề xuất, hãy loại bỏ acknếu bạn không cần nó:

sudo apt-get remove ack

Một giải pháp khác sẽ liên quan đến việc sử dụng dpkg-divertđể nói dpkgrằng bạn muốn tất cả các gói được /usr/bin/ackđổi tên cục bộ và sau đó liên kết ack-grepđến acktrong đường dẫn.


20

Trong Ubuntu / Debian bạn có thể "chuyển hướng" ack-grep:

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

8

Sử dụng hệ thống thay thế 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

Lệnh này rất khó để lấy đúng, nhưng giải pháp vượt trội hơn so với chuyển hướng dpkg vì những lý do sau:

  1. Không ép buộc hoặc ghi đè cài đặt gói
  2. Cho phép thiết lập liên kết nô lệ cho trang chủ

Thông tin thêm về Giải pháp thay thế Debian tại đây: http://wiki.debian.org/DebianAlternigin

Cài đặt thay thế cho phép gọi ack-grep ackvà đọc manpage bằng cách sử dụng man ack.


1
Đây là câu trả lời tốt nhất IMHO!
Đổi mới

Đây là cách Debian / Ubuntu "đúng" để làm điều này.
tgies

7

Ít gây khó chịu:

bí danh ack = ack-grep


Câu hỏi yêu cầu một cái gì đó ngoài bí danh, lưu ý chính xác rằng giải pháp này khá hạn chế và không thể giúp loại bỏ các tập lệnh Vim hoặc bash.
Ian Greenleaf Young

@IanGreenleaf wow, bạn nói đúng - thật xấu hổ khi thấy rằng 4 năm sau! Rất tiếc: /
rộng rãi

7

Cách dễ nhất để làm là cài đặt ack qua cpan. Nó sẽ được cài đặt trong / usr / local / bin, được ưu tiên hơn / usr / bin. Chỉ cần chạy:

sudo cpan App::Ack

hoặc nếu bạn không có ứng dụng khách cpan:

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

2
Không hoạt động với tôi trên Ubuntu 10.04 LTS. Thông báo lỗi: "Đừng ngớ ngẩn, bạn không thể cài đặt daniel bosold". Nhưng sudo cpan -i App::Ackkhông.
geekQ

Tôi có phải là người duy nhất nghĩ rằng điều này không an toàn?
SaveTheRbtz

2

Giả sử rằng trình dịch kanji chưa có / usr / bin / ack và vị trí của nó nằm sau trong đường dẫn của bạn hơn / usr / bin, thì bạn có thể làm điều này:

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

Điều này sẽ nhắc bạn xác nhận hoạt động nếu đích tồn tại và tạo bản sao lưu nếu bạn chọn có.


2
Thật không may, kanji ack sống trong / usr / bin vì vậy nếu bạn có thể sống mà không có nó: sudo apt-get remove ack
davey

0

Tôi sẽ sử dụng tùy chọn symlink vì nó giúp giảm nguy cơ chuyển bí danh đó sang máy khác nếu bạn sao chép tệp bash của mình.

đi với điều này, hoạt động tốt trên bản dựng ubfox 12.04 của tôi

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

0

Giải pháp của tôi không sạch sẽ vì nó ghi vào /bin/nhưng miễn /usr/bin/acklà nhị phân và không phải là một liên kết tượng trưng, ​​tôi đã dễ dàng sửa chữa theo cách này hơn.

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

Chọn cái nào để sử dụng

sudo update-alternatives --config ack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.