Օգտագործելով ripgrep հրամանը Linux-ում
Rust-ի վրա հիմնված ripgrep-ը չի կարող ճշգրիտ փոխարինել դասական grep հրամանին, այն ապահովում է բազմաթիվ օգտակար որոնման գործառույթներ, ինչպիսիք են grep հրամանը:
ripgrep-ը բաց կոդով համայնքում ընթացող RIIR-ի (վերագրել այն Rust-ով) ջանքերի հիանալի արդյունք է: Այն նախատեսված է որպես դասական grep հրամանի գերազանց փոխարինում:
Ripgrep-ի օգտագործման շարահյուսությունը հետևյալն է.
rg <pattern> [files/directories]
Ripgrep-ով ֆայլի անունը նշելու կարիք չկա: Երբ ֆայլի անուն չի տրվում, բոլոր ֆայլերը որոնվում են: Սա աներևակայելի օգտակար է, եթե չգիտեք, թե որ ֆայլն է պարունակում ձեր որոնած օրինակը:
Դուք կարող եք նաև օգտագործել grep-ը բոլոր ֆայլերում որոնելու համար, բայց ripgrep-ն դա անում է առանց որևէ լրացուցիչ ջանքերի:
Ի՞նչ է ripgrep-ը:
ripgrep-ը ռեկուրսիվ ռեգեքսի օրինաչափությունների համապատասխան գործիք է, որը հաշվի է առնում ձեր gitignore-ը: Եթե ձեր gitignore-ում ունեք որոշակի ֆայլեր, ընդարձակումներ կամ դիրեկտորիաներ, ripgrep-ը կանտեսի դրանք՝ արագացնելով կատարման ժամանակը:
Մի քանի առանձնահատկություններ, որոնք առանձնացնում են ripgrep-ը, հետևյալն են.
Գրացուցակներում ռեկուրսիվ կերպով որոնում է օրինաչափություններ
Գույնի ընդգծում ելքի մեջ
Աջակցում է կոդավորման մեծ բազմազան ձևաչափեր, ինչպիսիք են UTF-8, SHIFT_JIS
Սեղմված zip ֆայլերում որոնելու ունակություն
Լռելյայն անտեսում է թաքնված ֆայլերը և օգտագործում է ձեր gitignore ֆայլը ավելի արագ որոնման համար
Դուք կարող եք այն պատկերացնել որպես grep, բայց հիմնականում նպատակաուղղված է փնտրելու ֆայլեր/ֆայլերի բովանդակություն՝ չմշակված բայթ հոսքի փոխարեն, որով զբաղվում է grep-ը:
Տեղադրեք ripgrep
Թեև grep-ը նախապես տեղադրված է Linux համակարգերի մեծ մասում, ripgrep-ը չունի այդ արտոնությունը:
Այնուամենայնիվ, այն հասանելի է բոլոր հիմնական Linux բաշխումների պահոցներում, և այն տեղադրելու համար կարող եք օգտագործել փաթեթի կառավարիչը:
Եթե դուք Arch Linux-ի օգտատեր եք, արդեն գիտեք, թե ինչպես տեղադրել փաթեթներ :p, բայց այնուամենայնիվ, ահա հրամանը, որը դուք պետք է օգտագործեք.
pacman -S ripgrep
Gentoo-ի օգտվողները կարող են տեղադրել ripgrep հետևյալ հրամանով.
emerge sys-apps/ripgrep
Եթե դուք օգտագործում եք Fedora կամ Red Hat-ը, մի փոքր թեքեք ձեր գլխարկը՝ տերմինալում մուտքագրելով այս հրամանը.
sudo dnf install ripgrep
openSUSE օգտվողները (15.1 և ավելի ուշ) պետք է օգտագործեն հետևյալ հրամանը իրենց տերմինալում.
sudo zypper install ripgrep
Debian Buster (v10) կամ ավելի ուշ օգտագործող օգտվողների համար օգտագործեք apt. Ubuntu Cosmic Cuttlefish-ը (18.10) կամ ավելի ուշ կարող է նաև օգտագործել բաշխման պաշտոնական պահեստները:
sudo apt install ripgrep
Օգտագործելով ripgrep հրամանը
Եթե դուք ծանոթ եք grep հրամանի օգտագործմանը, ապա դուք կգտնեք, որ ripgrep-ն աշխատում է նույն կերպ: Դուք դրան տալիս եք որոնման տող և ֆայլի անուն, և այն կփնտրի ֆայլը և ցույց կտա, թե որտեղ է մուտքագրված տողը համընկնում ֆայլի բովանդակության հետ:
Այս ձեռնարկի համար ես կլոնավորել եմ փոշու նախագծի պահեստը և կկատարեմ հրամանները կլոնավորված պահեստի ներսում:
Հիմնական որոնումներ
Cargo.html ֆայլում բառի նկարագրության օրինակելի որոնում.
$ rg description Cargo.toml
3:description = "A more intuitive version of du"
53:extended-description = """\
Ինչպես և սպասվում էր, ripgrep գործիքը որոնեց իմ նշած ֆայլում և ցուցադրեց ֆայլերը համապատասխան տեքստով և տողի համարով:
Եթե դուք նշեք մի քանի ֆայլ, որոնք պետք է որոնվեն (եթե որևէ ֆայլ չնշեք, այն կփնտրի բոլորը), ripgrep-ը նաև կորոշի ֆայլի անունը, որի բովանդակությունը համընկնում է:
Որպես այլընտրանք, կարող եք նաև օգտագործել «--file» տարբերակը, որը պարունակում է այն օրինակը, որը ցանկանում եք համապատասխանեցնել: Երբ կանոնավոր կերպով որոնում եք համապատասխան նախշերի հավաքածու, կարող եք այն պահել ֆայլում և նշել՝ օգտագործելով «--file» տարբերակը:
Համատեքստային որոնում
Երբեմն հաճելի է ունենալ համապատասխան տողի համատեքստ, հատկապես կոդի պահեստում որոնելիս: Այստեղ օգնում է «-C» կամ «--համատեքստ» տարբերակը: Այս տարբերակը ընդունում է թվային արժեք և ցույց է տալիս տողեր խաղից առաջ և հետո:
Կարող են լինել դեպքեր, երբ դուք ցանկանում եք տեսնել միայն մի քանի տող վերևում, ներառյալ համընկնող տողը: Երբեմն, դուք ցանկանում եք տողերը միայն ներքևում, ներառյալ համընկնողը:
Դուք կարող եք օգտագործել «-A» տարբերակը, կարճ «--հետո-համատեքստ»-ը և թվային արժեք՝ յուրաքանչյուր համընկնումից հետո տողեր ցույց տալու համար:
Եվ յուրաքանչյուր համընկնումից առաջ տողերի համար կարող եք օգտագործել «-B» տարբերակը, կարճ «--մինչև համատեքստը»՝ թվային արժեքի հետ միասին:
Սյունակներ
Սյունակների վերաբերյալ կան մի քանի տարբերակներ, որոնք տրամադրում է ripgrep-ը:
Դուք կգնահատեք «--column» դրոշը, եթե vim-ի օգտատեր եք: Այն տպում է ֆայլի համապատասխանող տեքստի «գիծ:սյունակ»:
Սյունակների հետ կապված մեկ այլ տարբերակ է «-M» կամ «--max-columns», որը թվային արժեք է վերցնում սյունակների առավելագույն քանակի համար: Եթե համընկնող տողերի սյունակները գերազանցեն, դա ձեզ կտեղեկացնի, որ որոշակի տող բաց է թողնվել տերմինալում:
Տարբեր
Կան մի քանի տարբերակներ, որոնք կարող եք օգտագործել ripgrep-ի հետ:
Դուք կարող եք օգտագործել «-s» կամ «--case-sensitive» տարբերակը՝ տեքստը մեծատառերի զգայունության հետ համապատասխանեցնելու համար:
Եթե ցանկանում եք տառատեսակը պահել անզգայուն, կարող եք օգտագործել «-i» կամ «--ignore-case» դրոշակը:
Եթե դուք ունեք հսկայական կոդի բազա, կարող եք օգտագործել բազմաթիվ թելեր՝ նախշերի համապատասխանության համար: Դուք կարող եք ձեռքով նշել թելեր՝ օգտագործելով «-j» կամ «--threads» տարբերակը; այն ընդունում է թվային արժեք:
$ rg -j 4 TODO
Կարող են լինել դեպքեր, երբ դուք ցանկանում եք բացառել օրինաչափությունը որոնման արդյունքներից: Դա անելու համար կարող եք օգտագործել «-v» կամ «-invert-match»՝ նշված օրինաչափությունը բացառելու համար:
ripgrep-ը կարող է տեքստ որոնել սեղմված արխիվում (եթե սեղմված ֆայլը տեքստային ֆայլ է)՝ օգտագործելով «-z» կամ «--search-zip» դրոշը: Այս դրոշը սովորաբար ուղեկցվում է «-a» դրոշով, որը երկուական ֆայլերը վերաբերվում է որպես տեքստային ֆայլեր:
Եզրակացություն
ripgrep-ը ֆանտաստիկ գործիք է, որը դուք կարող եք օգտագործել, հատկապես որպես ծրագրավորող UNIX-ի նման միջավայրում:
ripgrep-ը, չնայած որ անունը կարող է այլ բան հուշել, նախատեսված չէ փոխարինել grep-ին, քանի որ այն այլ կերպ է վարվում: Բայց երկու գործիքներն էլ, այնուամենայնիվ, օգտակար են. դա կախված է ձեր օգտագործման դեպքից: