ubuntu में ack करने के लिए ack-grep


19

मैं बस सोच रहा था, मैंने हाल ही में ack (ack-grep को ubuntu) में स्थापित किया है, और मैं पता नहीं लगा सकता कि कैसे ack-grep पाने के लिए ack में सिर्फ टाइप करना है (किसी कारणवश ack को kaner अनुवादक द्वारा लिया गया है)।

क्या शेल में केवल वस्तु को अलग करने से बेहतर तरीका है (यह वैश्विक तरीका नहीं है, और उदाहरण के लिए इसे व्यर्थ नहीं कर सकता)।

आपका बहुत बहुत धन्यवाद!

जवाबों:


16

आप लिंक करें या कॉपी 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


20

उबंटू / डेबियन में आप "डायवर्ट" कर सकते हैं ack-grep:

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

8

डेबियन अल्टरनेटिव सिस्टम का उपयोग करें।

$ 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. मैनपेज के लिए एक दास लिंक सेट करने में सक्षम करता है

डेबियन अल्टरनेटिव्स पर अधिक जानकारी यहाँ: http://wiki.debian.org/DebianAlternatives

विकल्प को स्थापित करने के रूप में ack-grep को इनवॉइस करने में सक्षम बनाता है ackऔर उपयोग कर रहा है man ack


1
यह सबसे अच्छा जवाब है IMHO!
रेनॉड

यह ऐसा करने का "सही" डेबियन / उबंटू तरीका है।
tgies

7

कम से कम आज्ञाकारी:

alias ack = ack-grep


सवाल उपनाम के अलावा कुछ और के लिए पूछता है, सही ढंग से यह देखते हुए कि यह समाधान बहुत सीमित है और विम या वाश स्क्रिप्ट से बाहर निकलने में मदद नहीं कर सकता है।
इयान ग्रीनलीफ़ यंग

@IanGreenleaf वाह, तुम सही हो - 4 साल बाद उसको देखकर शर्मनाक! ऊप्स: /
ब्रॉड

7

सबसे आसान काम करने के लिए cpan के माध्यम से स्थापित है। यह / usr / लोकल / बिन में इंस्टाल हो जाएगा, जिसमें / usr / bin की पूर्वता है। बस दौडो:

sudo cpan App::Ack

या यदि आपके पास cpan क्लाइंट नहीं है:

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

2
मेरे लिए Ubuntu 10.04 LTS पर काम नहीं किया। त्रुटि संदेश: "मूर्ख मत बनो, तुम डैनियल बोसॉल्ड स्थापित नहीं कर सकते"। लेकिन sudo cpan -i App::Ackकरता है।
geekQ

क्या मैं अकेला हूँ जो सोचता है कि यह सुरक्षित नहीं है?
SaveTheRbtz

2

यह मानते हुए कि कांजी अनुवादक पहले से ही / usr / bin / ack नहीं है और इसका स्थान बाद में / usr / bin से आपकी राह में है, तो आप शायद ऐसा कर सकते हैं:

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

यदि गंतव्य मौजूद है और यदि आप हाँ का चयन करते हैं तो बैकअप बनाने के लिए यह आपको ऑपरेशन की पुष्टि करने के लिए प्रेरित करेगा।


2
दुर्भाग्य से कांजी ack / usr / bin में रहता है इसलिए यदि आप इसके बिना रह सकते हैं: sudo apt-get remove ack
davey

0

यदि आप अपनी बैश फ़ाइल की प्रतिलिपि बनाते हैं तो मैं उस लिंक को किसी अन्य मशीन में स्थानांतरित करने के खतरे से बचाता है, क्योंकि यह सिम्लिंक विकल्प के साथ जाएगा।

इसके साथ जाओ, ubuntu 12.04 के मेरे निर्माण पर ठीक काम करता है

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

0

मेरा समाधान इतना साफ नहीं है क्योंकि यह लिखते हैं /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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.