Ninataka kukuambia juu ya matumizi moja ya utaftaji ambayo hurahisisha maisha. Ninapofika kwenye seva na ninahitaji kutafuta kitu, jambo la kwanza ninalofanya ni kuangalia ikiwa ack imewekwa. Huduma hii ni mbadala bora ya grep, na vile vile find na wc kwa kiwango fulani. Kwa nini sio grep? Ack ana mipangilio mizuri zaidi nje ya kisanduku, chaguo zaidi zinazoweza kusomeka na binadamu, perl regex na mfumo wa usanidi. Ikiwa ungependa (lazima) utafute kupitia terminal, basi hakika unapaswa kujaribu.
Vipengele vya Msingi
Ack inajirudia kwa chaguo-msingi, na kuandika chaguo chache daima ni wazo zuri.
Tunaweza kutumia bendera -wkuambia shirika litafute mfano wa muundo wetu uliozungukwa na mipaka ya maneno (nafasi nyeupe, mikwaju, n.k.).
ack -w mysql
Ack inasaidia kutafuta kwa aina ya faili. Kwa mfano, hebu tupate toleo la moduli katika faili za json.
ack --json '"version":s+"d+.d+.d+"'
Orodha kamili ya aina za faili zinazotumika zinaweza kutazamwa kwa kutumia:
ack --help-types
Mara nyingi unahitaji kuhesabu ni mara ngapi kifungu kinaonekana kwenye faili ya kumbukumbu, kwa mfano, kuelewa ni data ngapi ambayo hati ilichakatwa.
Tunahesabu ni mara ngapi mchakato unatokea kwenye faili ya test.log, bila kuzingatia kesi (-i).
Tunaweza kuhesabu matukio sio tu katika faili moja maalum, lakini katika kikundi. Wacha tukamilishe utaftaji uliopita wa neno mysql: hesabu idadi ya kutokea kwa maneno (-toka) katika *.js faili (--js), ukiondoa faili ambazo hazikupatikana (-h) na muhtasari wa matokeo.
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
ack --js -w mysql
# ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql
Kwa kuongezea, tunaweza kupata ripoti ya kina juu ya idadi ya matukio katika kila faili kwa kutumia (-l)
ack --js -w -cl mysql
Ikiwa unahitaji muktadha wa ziada kwa utafutaji wako, unaweza kuuliza ack
onyesha mistari hadi (-B) na baada (-A) ya usemi uliopatikana. Ili kufanya hivyo, unahitaji kutaja baada ya chaguo idadi ya mistari ambayo inahitaji kuonyeshwa.
# 2 ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ
ack --js --column -B 2 "query.once('" ./lib/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
Na ikiwa unahitaji zote mbili, basi tumia (-NA)
ack --js --column -C 2 "query.once('" ./lib/
Pia kuna chaguo (-v) ili kugeuza utafutaji, yaani, onyesha mistari ambayo haina muundo fulani.
Kujieleza mara kwa mara
Ack, tofauti na grep, hutumia misemo inayolingana na Perl.
Kwangu mimi hii ni nyongeza kubwa; sio lazima nikumbuke syntax tofauti ya misemo ya kawaida.
ack 'vars+adds+'
Mfano ngumu zaidi
ack '*s+[vd+.d+.d+]'
Mara nyingi unataka kuacha katika matokeo tu kile kinacholingana na kiolezo. Chaguo la --output litasaidia hapa (-o)
ack -o '*s+[vd+.d+.d+]'
Kwa kuongeza, kwa kutumia mabano tunaweza kuchagua sehemu iliyopatikana na kuipata katika matokeo kupitia $[group number] variable. Kwa mfano,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack ina chaguzi muhimu --range-anza ΠΈ --range-mwisho. Wanasaidia wakati
Takwimu hazihifadhiwa kwa mstari mmoja, lakini kwa fomu ya safu nyingi.
Kwa mfano, kuna faili iliyo na msimbo wa sql
Hebu tutoe majina ya safu. Mwanzo wa kizuizi utakuwa mstari unaoanza na SELECT, na mwisho utakuwa mstari unaoanza na FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Ikiwa usemi wa utaftaji una herufi maalum kama vile kipindi, mabano na zingine, basi ili usiziepuke kwa kutumia , unaweza kutumia chaguo. -Q.
# ΠΠΎΠΈΡΠΊ Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ack --json 'mysql.'
# ΠΠΎΠΈΡΠΊ Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ack --json -Q mysql.
Kufanya kazi na faili
Pata orodha ya faili zilizo na kiendelezi maalum
ack -f --js
Pata faili zote za js ambazo jina lake linaanza na P* kwa kutumia chaguo (-g).
ack -g --js '/Pa.+.js$'
Usanidi
Huduma ina faili yake ya usanidi. Unaweza kuwa na usanidi wa kimataifa kwa mtumiaji (~/.ackrc) na wa ndani kwa folda maalum (unahitaji kuunda faili ya .ackrc kwenye folda).
Chaguzi nyingi ambazo zimeandikwa kwenye usanidi zinaweza kubainishwa kwa mikono zinapoitwa. Hebu tuangalie baadhi yao.
Puuza folda unapotafuta
--ignore-dir=dist
Wacha tuongeze aina ya faili maalum -vue.
--type-add=vue:ext:js,vue
Sasa unaweza kutumia --vue chaguo kutafuta faili .vue. Kwa mfano: ack --vue App.
Unaweza kubainisha orodha ya viendelezi vya chaguo hili. Kwa mfano, hapa, unapotumia -vue, yafuatayo yatashughulikiwa: .js faili.
Puuza faili, kwa mfano minified *.min.js
--ignore-file=match:/.min.js$/
Ufungaji
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
Ufungaji kutoka kwa tovuti
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Programu-jalizi za wahariri:
Hitimisho
Haya sio yote yanayowezekana. Orodha kamili ya vitendaji inaweza kutazamwa kwa kuendesha:
ack β-help
# ΠΈΠ»ΠΈ
ack --man
Huduma ya ack hukuruhusu kufanya utaftaji kwenye terminal iwe rahisi zaidi na rahisi. Na kutumia bomba (ack -C 10 hujambo | ack dunia) unaweza kuunda mchanganyiko wenye nguvu wa kutafuta na kuchuja data katika mfumo wa faili na faili zenyewe.
Chanzo: mapenzi.com