Օգտագործելով 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-ին, քանի որ այն այլ կերպ է վարվում: Բայց երկու գործիքներն էլ, այնուամենայնիվ, օգտակար են. դա կախված է ձեր օգտագործման դեպքից: