ack-grep ถึง ack ใน ubuntu


19

ฉันเพิ่งสงสัยว่าฉันเพิ่งติดตั้ง ack (ack-grep ใน ubuntu) และฉันไม่สามารถคิดได้ว่าจะพิมพ์ ack อย่างไรเพื่อรับ ack-grep (ด้วยเหตุผลบางอย่าง ack ถูกนำขึ้นโดยนักแปลคันจิ)

มีวิธีที่ดีกว่าเพียงนามแฝงสิ่งที่อยู่ในเปลือก (มันไม่ใช่แบบนั้นและไม่สามารถทำให้เป็นตัวอย่างในกลุ่ม)

ขอบคุณมาก!

คำตอบ:


16

คุณเชื่อมโยงหรือคัดลอกack-grepเพื่อ/usr/local/binให้ได้รับความสำคัญใน PATH:

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

หรืออย่างที่ davey แนะนำให้กำจัดackหากคุณไม่ต้องการ:

sudo apt-get remove ack

โซลูชันอื่นจะเกี่ยวข้องกับการใช้dpkg-divertเพื่อบอกdpkgว่าคุณต้องการให้แพคเกจทั้งหมดมีการ/usr/bin/ackเปลี่ยนชื่อภายในเครื่องแล้วเชื่อมโยงack-grepไปยังackในเส้นทาง


20

ใน Ubuntu / Debian คุณสามารถ "เบี่ยงเบน" ack-grep:

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

8

ใช้ระบบ Debian Alternatives

$ 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. เปิดใช้งานการตั้งค่าลิงค์ทาสสำหรับ manpage

ข้อมูลเพิ่มเติมเกี่ยวกับ Debian Alternatives ที่นี่: http://wiki.debian.org/DebianAlternatives

การติดตั้งทางเลือกที่ช่วยให้การเรียกแอ๊-grep เป็นackและการอ่าน manpage man ackโดยใช้


1
นี่คือคำตอบที่ดีที่สุด IMHO!
Renaud

นี่คือวิธี "Debian / Ubuntu" ที่ถูกต้องในการทำสิ่งนี้
tgies

7

เสือกอย่างน้อย:

นามแฝง ack = ack-grep


คำถามถามหาสิ่งอื่นที่ไม่ใช่นามแฝงสังเกตอย่างถูกต้องว่าโซลูชันนี้ค่อนข้าง จำกัด และไม่สามารถช่วยในการปอกเปลือกออกจากสคริปต์ Vim หรือสคริปต์ทุบตี
Ian Greenleaf Young

@IanGreenleaf ว้าวคุณพูดถูก - น่าอายที่เห็นว่า 4 ปีต่อมา! อุ๊ปส์: /
โบรดี้

7

สิ่งที่ง่ายที่สุดที่จะทำคือติดตั้ง ack ผ่าน cpan มันจะได้รับการติดตั้งใน / usr / local / bin ซึ่งมีความสำคัญเหนือกว่า / usr / bin เพิ่งรัน:

sudo cpan App::Ack

หรือถ้าคุณไม่มีไคลเอนต์ cpan:

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

2
ไม่ได้ผลสำหรับฉันบน Ubuntu 10.04 LTS ข้อความแสดงข้อผิดพลาด: "อย่าโง่คุณไม่สามารถติดตั้ง daniel bosold" แต่sudo cpan -i App::Ackไม่
geekQ

ฉันเป็นคนเดียวที่คิดว่าสิ่งนี้ไม่ปลอดภัยหรือไม่?
SaveTheRbtz

2

สมมติว่าตัวแปลคันจิไม่ได้เป็น / usr / bin / ack แล้วและที่ตั้งของมันอยู่ในเส้นทางของคุณในภายหลังมากกว่า / usr / bin ดังนั้นคุณสามารถทำสิ่งนี้ได้:

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

การดำเนินการนี้จะแจ้งให้คุณยืนยันการดำเนินการหากมีปลายทางและสร้างการสำรองข้อมูลหากคุณเลือกใช่


2
แต่น่าเสียดายที่ชีวิตจิแอ๊ใน / usr / bin ดังนั้นหากคุณสามารถอยู่ได้โดยปราศจากมัน sudo apt-get ลบแอ๊
ดาวี่

0

ฉันจะไปกับตัวเลือก symlink เพราะจะช่วยลดความเสี่ยงของการโอนนามแฝงนั้นไปยังเครื่องอื่นหากคุณคัดลอกไฟล์ bash ของคุณ

ไปกับสิ่งนี้ใช้งานได้ดีในรุ่นของอูบุนตู 12.04

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

0

วิธีแก้ปัญหาของฉันไม่สะอาดเพราะมันเขียน/bin/แต่ตราบใดที่/usr/bin/ackเป็นเลขฐานสองและไม่ใช่ symlink ฉันก็สามารถแก้ไขด้วยวิธีนี้ได้ง่ายขึ้น

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.