Mwen vle di ou sou yon sèl sèvis piblik rechèch ki senplifye lavi anpil. Lè mwen rive nan sèvè a epi mwen bezwen chèche yon bagay, premye bagay mwen fè se tcheke si ack enstale. Sèvis piblik sa a se yon ranplasman ekselan pou grep, osi byen ke jwenn ak wc nan yon sèten mezi. Poukisa pas grep? Ack gen pi bèl anviwònman soti nan bwat la, plis opsyon lizib pou moun, perl regex ak yon sistèm konfigirasyon. Si ou renmen (gen pou) rechèch nan tèminal la, Lè sa a, ou ta dwe definitivman eseye li.
Karakteristik debaz yo
Ack se recursive pa default, epi ekri mwens opsyon se toujou yon bon lide.
Nou ka sèvi ak yon drapo -wpou di sèvis piblik la chèche yon egzanp modèl nou an ki antoure pa limit mo (espas blan, koupe, elatriye).
ack -w mysql
Ack sipòte rechèch pa kalite dosye. Pou egzanp, ann jwenn vèsyon modil la nan dosye json.
ack --json '"version":s+"d+.d+.d+"'
Ou ka wè yon lis konplè kalite dosye sipòte lè l sèvi avèk:
ack --help-types
Souvan ou bezwen konte konbyen fwa yon fraz parèt nan yon dosye log, pou egzanp, konprann konbyen done script la trete.
Nou konte konbyen fwa pwosesis ki fèt nan dosye test.log la, pa pran an kont ka (-i).
Nou ka konte ensidan yo pa sèlman nan yon dosye espesifik, men nan yon gwoup. Ann finalize rechèch anvan an pou mo mysql la: konte kantite aparisyon mo yo (-soti) nan *.js fichye (--js), eksepte dosye kote yo pa jwenn anyen (-h) ak rezime rezilta a.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Anplis de sa, nou ka jwenn yon rapò detaye sou kantite ensidans nan chak dosye lè l sèvi avèk (-l)
ack --js -w -cl mysql
Si ou bezwen plis kontèks pou rechèch ou a, ou ka mande ack
montre liy jiska (-B) ak apre (-A) nan ekspresyon yo jwenn. Pou fè sa, ou bezwen presize apre opsyon ki kantite liy ki bezwen montre.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
Men, si ou bezwen tou de, Lè sa a, sèvi ak (-AK)
ack --js --column -C 2 "query.once('" ./lib/
Genyen tou yon opsyon (-v) pou envèse rechèch la, sa vle di montre liy ki pa genyen yon modèl bay yo.
Ekspresyon regilye
Ack, kontrèman ak grep, sèvi ak ekspresyon konpatib Perl.
Pou mwen sa a se yon gwo avantaj; mwen pa bezwen sonje yon sentaks separe pou ekspresyon regilye.
ack 'vars+adds+'
Egzanp pi konplèks
ack '*s+[vd+.d+.d+]'
Souvan ou vle kite nan rezilta yo sèlman sa ki matche ak modèl la. Opsyon --output la pral ede isit la (-o)
ack -o '*s+[vd+.d+.d+]'
Anplis de sa, lè l sèvi avèk parantèz nou ka chwazi pati yo jwenn ak jwenn aksè nan li nan pwodiksyon atravè $ [nimewo gwoup la] varyab. Pa egzanp,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack gen opsyon itil --ranje-kòmanse и --ranje-fen. Yo ede lè
Done yo estoke pa nan yon sèl liy, men nan fòm milti-liy.
Pou egzanp, gen yon dosye ki gen kòd sql
Ann ekstrè non kolòn yo. Kòmansman an nan blòk la pral yon liy ki kòmanse ak SELECT, epi nan fen a pral yon liy ki kòmanse ak FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Si ekspresyon rechèch la gen karaktè espesyal tankou yon peryòd, yon parantèz, ak lòt moun, Lè sa a, nan lòd pa chape yo lè l sèvi avèk , ou ka itilize opsyon an. -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Travay ak dosye
Jwenn yon lis dosye ki gen yon ekstansyon espesifik
ack -f --js
Jwenn tout fichye js ki gen non kòmanse ak P* lè l sèvi avèk opsyon (-g).
ack -g --js '/Pa.+.js$'
Konfigirasyon
Sèvis piblik la gen pwòp dosye konfigirasyon li yo. Ou ka gen tou de yon konfigirasyon mondyal pou itilizatè a (~/.ackrc) ak yon sèl lokal pou yon katab espesifik (ou bezwen kreye yon fichye .ackrc nan katab la).
Pifò nan opsyon ki ekri nan konfigirasyon yo ka manyèlman espesifye lè yo rele. Ann gade kèk nan yo.
Inyore katab lè w ap chèche
--ignore-dir=dist
Ann ajoute yon kalite dosye koutim -vue.
--type-add=vue:ext:js,vue
Koulye a, ou ka itilize opsyon --vue pou fè rechèch nan dosye yo .vue. Pa egzanp: ack --vue App.
Ou ka presize yon lis ekstansyon pou opsyon sa a. Pou egzanp, isit la, lè w ap itilize -vue, sa ki annapre yo pral trete: .js dosye.
Inyore fichye yo, pou egzanp minified *.min.js
--ignore-file=match:/.min.js$/
Enstalasyon
CentOS
yum update -y && yum install ack -y
Ubentu
apt-get update -y && apt-get install ack-grep -y
Mac OS
brew update && brew install ack
Enstalasyon soti nan sit la
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Plugins pou editè:
Konklizyon
Sa yo se pa tout posiblite yo. Ou ka wè lis konplè fonksyon yo lè w ap kouri:
ack –-help
# или
ack --man
Ack sèvis piblik la pèmèt ou fè rechèch nan tèminal la pi pratik ak fleksib. Ak lè l sèvi avèk tiyo (ack -C 10 bonjou | ack mond lan) ou ka kreye yon konbine pwisan pou rechèch ak filtraj done nan sistèm dosye a ak nan dosye yo tèt yo.
Sous: www.habr.com