Ես ուզում եմ ձեզ պատմել մեկ որոնման օգտակար ծրագրի մասին, որը մեծապես հեշտացնում է կյանքը: Երբ ես հասնում եմ սերվեր և ես պետք է ինչ-որ բան փնտրեմ, առաջին բանը, որ անում եմ, ստուգում եմ, թե արդյոք ack-ը տեղադրված է: Այս կոմունալը հիանալի փոխարինում է grep-ին, ինչպես նաև որոշ չափով find-ին և wc-ին: Ինչու՞ չգրել: Ack-ն ունի ավելի գեղեցիկ կարգավորումներ, ավելի շատ մարդու կողմից ընթեռնելի ընտրանքներ, perl regex և կազմաձևման համակարգ: Եթե ձեզ դուր է գալիս (պետք է) որոնել տերմինալի միջոցով, ապա դուք անպայման պետք է փորձեք այն:
Հիմնական հատկանիշները
Ack-ը լռելյայնորեն ռեկուրսիվ է, և ավելի քիչ տարբերակներ գրելը միշտ լավ գաղափար է:
Մենք կարող ենք օգտագործել դրոշը -wասել, որ օգտակարը փնտրի մեր օրինաչափության օրինակը, որը շրջապատված է բառերի սահմաններով (սպիտակ տարածություն, շեղեր և այլն):
ack -w mysql
Ack-ն աջակցում է որոնումն ըստ ֆայլի տեսակի: Օրինակ՝ json ֆայլերում գտնենք մոդուլի տարբերակը։
ack --json '"version":s+"d+.d+.d+"'
Աջակցվող ֆայլերի տեսակների ամբողջական ցանկը կարելի է դիտել՝
ack --help-types
Հաճախ անհրաժեշտ է հաշվել, թե քանի անգամ է արտահայտությունը հայտնվում գրանցամատյանում, օրինակ՝ հասկանալու համար, թե սկրիպտը որքան տվյալ է մշակել:
Մենք հաշվում ենք, թե քանի անգամ է պրոցեսը տեղի ունենում test.log ֆայլում՝ չհաշված գործը (-i).
Մենք կարող ենք դեպքերը հաշվել ոչ միայն մեկ կոնկրետ ֆայլում, այլ խմբում: Եկեք ավարտենք mysql բառի նախորդ որոնումը. հաշվել բառերի քանակը (-ս) *.js ֆայլերում (--js), բացառությամբ ֆայլերի, որոնցում ոչինչ չի հայտնաբերվել (-h) և ամփոփելով արդյունքը:
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Բացի այդ, մենք կարող ենք մանրամասն հաշվետվություն ստանալ յուրաքանչյուր ֆայլում տեղի ունեցած դեպքերի քանակի վերաբերյալ՝ օգտագործելով (-l)
ack --js -w -cl mysql
Եթե Ձեզ անհրաժեշտ է լրացուցիչ համատեքստ Ձեր որոնման համար, կարող եք խնդրել ընդունել
ցույց տալ տողերը մինչև (-B) եւ հետո (-A) գտնված արտահայտության. Դա անելու համար դուք պետք է ընտրանքից հետո նշեք տողերի քանակը, որոնք պետք է ցուցադրվեն:
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Եվ եթե ձեզ անհրաժեշտ են երկուսն էլ, ապա օգտագործեք (-С)
ack --js --column -C 2 "query.once('" ./lib/
Կա նաև տարբերակ (-v) որոնումը շրջելու համար, այսինքն՝ ցույց տալ տողեր, որոնք չեն պարունակում տվյալ օրինաչափություն։
Կանոնավոր արտահայտություն
Ack-ը, ի տարբերություն grep-ի, օգտագործում է Perl-ի համատեղելի արտահայտություններ։
Ինձ համար սա մեծ պլյուս է, ես չպետք է հիշեմ առանձին շարահյուսություն կանոնավոր արտահայտությունների համար:
ack 'vars+adds+'
Ավելի բարդ օրինակ
ack '*s+[vd+.d+.d+]'
Հաճախ դուք ցանկանում եք արդյունքներում թողնել միայն այն, ինչը համապատասխանում է ձևանմուշին: --output տարբերակը կօգնի այստեղ (-o)
ack -o '*s+[vd+.d+.d+]'
Բացի այդ, փակագծերի միջոցով մենք կարող ենք ընտրել գտնված մասը և մուտք գործել այն $[group number] փոփոխականի միջոցով: Օրինակ,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack-ն ունի օգտակար տարբերակներ -- տիրույթ-սկիզբ и - միջակայք-վերջ. Նրանք օգնում են, երբ
Տվյալները պահվում են ոչ թե մեկ տողով, այլ բազմատողով։
Օրինակ, կա sql կոդով ֆայլ
Եկեք հանենք սյունակների անունները: Բլոկի սկիզբը կլինի SELECT-ով սկսվող տող, իսկ վերջը՝ FROM-ով սկսվող տող:
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Եթե որոնման արտահայտությունը պարունակում է հատուկ նիշեր, ինչպիսիք են կետը, փակագիծը և այլ նիշեր, ապա դրանցից չխուսափելու համար օգտագործելով , կարող եք օգտագործել տարբերակը -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Ֆայլերի հետ աշխատելը
Ստացեք ֆայլերի ցուցակ հատուկ ընդլայնմամբ
ack -f --js
Գտեք բոլոր js ֆայլերը, որոնց անունը սկսվում է P*-ով, օգտագործելով տարբերակը (-g).
ack -g --js '/Pa.+.js$'
Տեսիլ
Կոմունալն ունի իր կազմաձևման ֆայլը: Դուք կարող եք ունենալ և՛ գլոբալ կոնֆիգուրացիա՝ օգտագործողի համար (~/.ackrc), և՛ տեղական՝ կոնկրետ թղթապանակի համար (դուք պետք է թղթապանակում ստեղծեք .ackrc ֆայլ):
Ընտրանքների մեծ մասը, որոնք գրված են կազմաձևերում, կարելի է ձեռքով նշել, երբ կանչվում է: Դիտարկենք դրանցից մի քանիսը:
Անտեսել թղթապանակը որոնելիս
--ignore-dir=dist
Եկեք ավելացնենք հատուկ ֆայլի տեսակ -vue:
--type-add=vue:ext:js,vue
Այժմ դուք կարող եք օգտագործել --vue տարբերակը ֆայլեր որոնելու համար .vue. Օրինակ: ack --vue հավելված.
Այս տարբերակի համար կարող եք նշել ընդլայնումների ցանկը: Օրինակ, այստեղ, երբ -vue-ն օգտագործելիս կմշակվի հետևյալը. .js ֆայլեր:
Անտեսեք ֆայլերը, օրինակ՝ minified *.min.js
--ignore-file=match:/.min.js$/
Տեղակայում
CentOS
yum update -y && yum install ack -y
Ubuntu
apt-get update -y && apt-get install ack-grep -y
Mac OS
brew update && brew install ack
Տեղադրում կայքից
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Փլագիններ խմբագիրների համար.
Ամփոփում
Սրանք բոլոր հնարավորությունները չեն։ Գործառույթների ամբողջական ցանկը կարելի է դիտել՝ գործարկելով.
ack –-help
# или
ack --man
Ack կոմունալը թույլ է տալիս տերմինալում որոնումը դարձնել ավելի հարմար և ճկուն: Եվ օգտագործելով խողովակաշարը (ack -C 10 բարև | ack աշխարհը) կարող եք ստեղծել հզոր կոմբինատ ֆայլային համակարգում և հենց ֆայլերում տվյալների որոնման և զտման համար:
Source: www.habr.com