5 पॉइंट द्वारा GN⁺ 2023-12-01 | 1 टिप्पणियां | WhatsApp पर शेयर करें

सारांश: नए कमांड-लाइन सर्च टूल ripgrep का परिचय

  • ripgrep The Silver Searcher की उपयोगिता और GNU grep के प्रदर्शन को मिलाने वाला एक नया कमांड-लाइन सर्च टूल है.
  • यह Linux, Mac, Windows के लिए बाइनरी देता है और Rust में लिखा गया है.
  • सिंगल फ़ाइल और बड़े डायरेक्टरी सर्च में प्रदर्शन और शुद्धता, दोनों के लिहाज़ से उत्कृष्ट है.
  • Unicode सपोर्ट बेहतरीन है, और memory map का उपयोग करने वाले टूल्स से आम तौर पर अधिक तेज़ है.

ripgrep का परिचय

फ़ायदे

  • यह दूसरे सर्च टूल्स से तेज़ है और .gitignore द्वारा ignore की गई फ़ाइलों को सर्च नहीं करता.
  • केवल खास फ़ाइल टाइप्स में सर्च करने या उन्हें बाहर रखने की सुविधा देता है.
  • grep की कई सुविधाओं को सपोर्ट करता है और Unicode को हमेशा सपोर्ट करता है.
  • वैकल्पिक रूप से PCRE2 regular expression engine का उपयोग किया जा सकता है.
  • अलग-अलग text encoding और compressed फ़ाइलों में सर्च को सपोर्ट करता है.
  • मनचाहे input preprocessing filter को सपोर्ट करता है.

आपत्तियाँ

  • यह POSIX standard का पालन नहीं करता और grep जितना सार्वभौमिक नहीं है.
  • दूसरे टूल्स में मौजूद कुछ खास सुविधाएँ या बग ripgrep में नहीं हो सकते.
  • प्रदर्शन के कुछ edge case में ripgrep दूसरे टूल्स से धीमा हो सकता है.

इंस्टॉलेशन

  • ripgrep का बाइनरी नाम rg है और इसे कई प्लेटफ़ॉर्म पर इंस्टॉल किया जा सकता है.
  • Homebrew, Archlinux, और Rust प्रोग्रामरों के लिए इंस्टॉलेशन तरीके दिए गए हैं.
  • इसे source से सीधे build करना भी संभव है.

त्वरित टूर

  • ripgrep का कमांड-लाइन उपयोग दूसरे समान टूल्स से बहुत अलग नहीं है.
  • यह terminal output, रंग, line number display आदि को अपने आप सपोर्ट करता है.
  • अलग-अलग सर्च विकल्पों और pattern का उपयोग करके सर्च किया जा सकता है.

ripgrep की संरचना

पृष्ठभूमि

  • grep और ack से निकले टूल्स के बीच के अंतर और समानताओं को समझाया गया है.
  • ripgrep, grep की बड़े फ़ाइल सर्च करने की क्षमता और ack की "smart" search default settings को जोड़ता है.

फ़ाइल सर्च की तैयारी

  • तेज़ directory iterator का उपयोग और फ़ाइल path filtering महत्वपूर्ण है.
  • .gitignore फ़ाइल के नियमों को तेज़ी से लागू करना प्रदर्शन को प्रभावित करता है.

सर्च

  • तेज़ regular expression engine और literal optimization महत्वपूर्ण हैं.
  • पूरी फ़ाइल को line-by-line सर्च करने के बजाय बड़े buffer को एक बार में सर्च करता है.

आउटपुट

  • सर्च परिणामों को memory buffer में लिखा जाता है और फिर उन्हें stdout में serialize करके आउटपुट दिया जाता है.

कार्यप्रणाली

अवलोकन

  • उपयोगकर्ता जिस समस्या को हल करना चाहता है, उस पर ध्यान दिया गया है और निष्पक्ष benchmark की कोशिश की गई है.
  • कई टूल्स का benchmark किया गया है, और तुलना करते समय हर टूल के default behavior के अंतर को ध्यान में रखा गया है.

GN⁺ की राय

इस लेख की सबसे महत्वपूर्ण बात यह है कि इसमें विस्तार से बताया गया है कि ripgrep के पास मौजूदा सर्च टूल्स की तुलना में कौन-कौन से फ़ायदे हैं. खास तौर पर, तेज़ प्रदर्शन, Unicode सपोर्ट, और अलग-अलग फ़ाइल फ़ॉर्मैट व encoding के लिए सपोर्ट जैसी बातें उपयोगकर्ताओं को आकर्षित कर सकती हैं. यह लेख इसलिए रोचक है क्योंकि यह समझने में मदद करता है कि नया टूल मौजूदा टूल्स से कैसे अलग है, और यह अंतर वास्तविक उपयोगकर्ताओं पर क्या असर डाल सकता है.

1 टिप्पणियां

 
GN⁺ 2023-12-01
Hacker News राय
  • ripgrep और fzf का संयोजन बहुत तेज़ है, और इसे उपयोग करने वाले Powershell फ़ंक्शन का एक उदाहरण दिया गया है। यह फ़ंक्शन ripgrep से खोज करने के बाद fzf का उपयोग करके fuzzy search करता है, और bat के जरिए परिणाम का context दिखाता है। यह तरीका कई repository प्रोजेक्ट्स में किसी खास सामग्री की लोकेशन जल्दी खोजने में उपयोगी है.
  • Emacs के project.el पैकेज और dumb-jump पैकेज का उपयोग करके ripgrep इस्तेमाल करने का तरीका बताया गया है। dumb-jump किसी खास project directory के भीतर मौजूदा फ़ाइल प्रकार के लिए खोज को अपने-आप सीमित करता है, और ag नाम के एक अन्य तेज़ टूल को भी सपोर्ट करता है.
  • यह दिलचस्प है कि ripgrep, Node.js wrapper के जरिए VS Code की search functionality प्रदान करता है.
  • ripgrep उपयोगकर्ता grep की तुलना में इसकी आसान usability और बेहतर speed को मुख्य कारण बताते हैं, और खास तौर पर gitignore नियमों को अपने-आप लागू करने वाली सुविधा को उपयोगी मानते हैं.
  • यह उल्लेख किया गया है कि ripgrep और ag जैसे parallelized grep replacement, grep से कहीं अधिक तेज़ हैं, इसलिए speed gap कोई बहुत बड़ा differentiator नहीं है और इन्हें दूसरे तरीकों से आँकना चाहिए.
  • यह इंगित किया गया है कि ripgrep की शुरुआती घोषणा 2016 में हुई थी, और सुझाव दिया गया है कि शीर्षक में वर्ष दिखाया जाना चाहिए.
  • qgrep index का उपयोग करके तेज़ speed देता है, लेकिन यह भी कहा गया है कि जब UTF8 multiline match की ज़रूरत हो, तब ripgrep धीमा पड़ सकता है.
  • Emacs के भीतर ripgrep का उपयोग करने वाले Consult पैकेज के जरिए पूरे project में editing करने वाला एक सुविधाजनक workflow साझा किया गया है.
  • यह जानकारी दी गई है कि ripgrep-all संस्करण PDF और doc फ़ाइलों जैसे अन्य document types पर भी काम करता है.
  • यह सवाल उठाया गया है कि grep को क्यों replace या improve नहीं किया जाता, और इस विषय को कुछ पुराना बताया गया है.