Irrid ngħidlek dwar utilità waħda ta 'tfittxija li tissimplifika bil-kbir il-ħajja. Meta nasal fis-server u jkolli bżonn infittex xi ħaġa, l-ewwel ħaġa li nagħmel hija niċċekkja jekk ack huwiex installat. Din l-utilità hija sostitut eċċellenti għall-grep, kif ukoll issib u wc sa ċertu punt. Għaliex ma grep? Ack għandu settings isbaħ barra mill-kaxxa, għażliet aktar li jinqraw mill-bniedem, perl regex u sistema ta 'konfigurazzjoni. Jekk tixtieq (jkollok) tfittex permezz tat-terminal, allura definittivament għandek tipprovaha.
Karatteristiċi Bażiċi
Ack huwa rikorsiv awtomatikament, u l-kitba ta 'inqas għażliet hija dejjem idea tajba.
Nistgħu nużaw bandiera -wbiex tgħid lill-utilità biex tfittex eżempju tal-mudell tagħna mdawra bil-konfini tal-kliem (spazju abjad, slashes, eċċ.).
ack -w mysql
Ack jappoġġja t-tiftix skont it-tip ta' fajl. Pereżempju, ejja nsibu l-verżjoni tal-modulu fil-fajls json.
ack --json '"version":s+"d+.d+.d+"'
Lista kompluta ta' tipi ta' fajls appoġġjati tista' tara billi tuża:
ack --help-types
Ħafna drabi għandek bżonn tgħodd kemm-il darba frażi tidher f'fajl ta 'ġurnal, pereżempju, biex tifhem kemm dejta pproċessa l-iskrittura.
Aħna ngħoddu kemm-il darba l-proċess iseħħ fil-fajl test.log, mingħajr ma nqisu l-każ (-i).
Nistgħu ngħoddu okkorrenzi mhux biss f'fajl wieħed speċifiku, iżda fi grupp. Ejja nifinalizzaw it-tfittxija preċedenti għall-kelma mysql: għadd in-numru ta 'okkorrenzi ta' kliem (-с) f'fajls *.js(--js), esklużi fajls li fihom ma nstab xejn (-h) u jiġbor ir-riżultat.
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
Barra minn hekk, nistgħu niksbu rapport dettaljat dwar in-numru ta' okkorrenzi f'kull fajl billi tuża (-l)
ack --js -w -cl mysql
Jekk għandek bżonn kuntest addizzjonali għat-tfittxija tiegħek, tista' titlob ack
uri linji sa (-B) u wara (-A) tal-espressjoni misjuba. Biex tagħmel dan, għandek bżonn tispeċifika wara l-għażla n-numru ta 'linji li jeħtieġ li jintwerew.
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
U jekk għandek bżonn it-tnejn, imbagħad uża (-MILL)
ack --js --column -C 2 "query.once('" ./lib/
Hemm ukoll għażla (-v) biex taqleb it-tfittxija, jiġifieri turi linji li ma fihomx mudell partikolari.
Espressjoni regolari
Ack, b'differenza grep, juża espressjonijiet kompatibbli Perl.
Għalija dan huwa vantaġġ kbir; m'għandix għalfejn niftakar sintassi separata għal espressjonijiet regolari.
ack 'vars+adds+'
Eżempju aktar kumpless
ack '*s+[vd+.d+.d+]'
Ħafna drabi trid tħalli fir-riżultati biss dak li jaqbel mal-mudell. L-għażla --output tgħin hawn (-o)
ack -o '*s+[vd+.d+.d+]'
Barra minn hekk, bl-użu tal-parentesi nistgħu nagħżlu l-parti misjuba u naċċessawha fl-output permezz tal-varjabbli $[numru tal-grupp]. Pereżempju,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack għandu għażliet utli --range-start и --range-end. Huma jgħinu meta
Id-dejta hija maħżuna mhux f'linja waħda, iżda f'forma ta 'ħafna linji.
Per eżempju, hemm fajl b'kodiċi sql
Ejja estratt l-ismijiet tal-kolonni. Il-bidu tal-blokk se jkun linja li tibda b'SELECT, u t-tmiem ikun linja li tibda b'FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Jekk l-espressjoni tat-tfittxija fiha karattri speċjali bħal punt, parentesi, u oħrajn, allura biex ma taħrabhomx billi tuża , tista’ tuża l-għażla -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
Ħidma ma 'fajls
Ikseb lista ta 'fajls b'estensjoni speċifika
ack -f --js
Sib il-fajls js kollha li isimhom jibda b'P* billi tuża l-għażla (-g).
ack -g --js '/Pa.+.js$'
Konfigurazzjoni
L-utilità għandha l-fajl tal-konfigurazzjoni tagħha stess. Jista' jkollok kemm konfigurazzjoni globali għall-utent (~/.ackrc) kif ukoll waħda lokali għal folder speċifiku (jeħtieġlek toħloq fajl .ackrc fil-folder).
Ħafna mill-għażliet li huma miktuba fil-konfigurazzjonijiet jistgħu jiġu speċifikati manwalment meta msejħa. Ejja nħarsu lejn ftit minnhom.
Injora folder meta tfittex
--ignore-dir=dist
Ejja nżidu tip ta' fajl personalizzat -vue.
--type-add=vue:ext:js,vue
Issa tista' tuża l-għażla --vue biex tfittex fajls .vue. Pereżempju: ack --vue App.
Tista' tispeċifika lista ta' estensjonijiet għal din l-għażla. Pereżempju, hawnhekk, meta tuża -vue, dan li ġej se jiġi pproċessat: .js fajls.
Injora l-fajls, per eżempju minifikat *.min.js
--ignore-file=match:/.min.js$/
Installazzjoni
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
Installazzjoni mis-sit
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Plugins għall-edituri:
Konklużjoni
Dawn mhumiex il-possibbiltajiet kollha. Il-lista sħiħa ta' funzjonijiet tista' tara billi taħdem:
ack –-help
# или
ack --man
L-utilità ack tippermettilek tagħmel it-tiftix fit-terminal aktar konvenjenti u flessibbli. U tuża pipeline (ack -C 10 hello | ack dinja) tista 'toħloq taħlita qawwija għat-tiftix u l-iffiltrar tad-dejta fis-sistema tal-fajls u fil-fajls infushom.
Sors: www.habr.com