Rwyf am ddweud wrthych am un cyfleustodau chwilio sy'n symleiddio bywyd yn fawr. Pan fyddaf yn cyrraedd y gweinydd ac mae angen i mi chwilio am rywbeth, y peth cyntaf i'w wneud yw gwirio a yw ack wedi'i osod. Mae'r cyfleustodau hwn yn lle ardderchog ar gyfer grep, yn ogystal Γ’ find a wc i ryw raddau. Beth am grep? Mae gan Ack osodiadau brafiach allan o'r bocs, opsiynau mwy darllenadwy gan bobl, perl regex a system ffurfweddu. Os ydych chi'n hoffi (rhaid) chwilio trwy'r derfynell, yna dylech chi roi cynnig arni yn bendant.
Nodweddion Sylfaenol
Mae Ack yn ailadroddus yn ddiofyn, ac mae ysgrifennu llai o opsiynau bob amser yn syniad da.
Gallwn ddefnyddio baner -wi ddweud wrth y cyfleustodau i chwilio am enghraifft o'n patrwm wedi'i amgylchynu gan ffiniau geiriau (whitespace, slaes, etc.).
ack -w mysql
Mae Ack yn cefnogi chwilio yn Γ΄l math o ffeil. Er enghraifft, gadewch i ni ddod o hyd i fersiwn y modiwl mewn ffeiliau json.
ack --json '"version":s+"d+.d+.d+"'
Gellir gweld rhestr gyflawn o fathau o ffeiliau a gefnogir gan ddefnyddio:
ack --help-types
Yn aml mae angen i chi gyfrif sawl gwaith mae ymadrodd yn ymddangos mewn ffeil log, er enghraifft, i ddeall faint o ddata a brosesodd y sgript.
Rydyn ni'n cyfrif sawl gwaith mae'r broses yn digwydd yn y ffeil test.log, heb gymryd i ystyriaeth achos (-i).
Gallwn gyfrif digwyddiadau nid yn unig mewn un ffeil benodol, ond mewn grΕ΅p. Gadewch i ni gwblhau'r chwiliad blaenorol am y gair mysql: cyfrif nifer y digwyddiadau o eiriau (-from) mewn ffeiliau *.js(--js), heb gynnwys ffeiliau na chanfuwyd dim ynddynt (-h) a chrynhoi y canlyniad.
# Π²ΡΠ²Π΅Π΄Π΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ
ack --js -w mysql
# ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΠ±ΡΡΡ ΡΡΠΌΠΌΡ Π²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ
ack --js -wch mysql
Yn ogystal, gallwn gael adroddiad manwl ar nifer y digwyddiadau ym mhob ffeil gan ddefnyddio (-l)
ack --js -w -cl mysql
Os oes angen cyd-destun ychwanegol arnoch ar gyfer eich chwiliad, gallwch ofyn ack
dangos llinellau hyd at (-B) ac ar Γ΄l (-A) o'r mynegiad canfyddedig. I wneud hyn, mae angen i chi nodi ar Γ΄l yr opsiwn nifer y llinellau y mae angen eu dangos.
# 2 ΡΡΡΠΎΠΊΠΈ Π΄ΠΎ
ack --js --column -B 2 "query.once('" ./lib/
# 2 ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΡΠ»Π΅
ack --js --column -A 2 "query.once('" . /lib/
Ac os oes angen y ddau arnoch chi, yna defnyddiwch (-GYDA)
ack --js --column -C 2 "query.once('" ./lib/
Mae yna hefyd opsiwn (-v) i wrthdroiβr chwiliad, h.y. dangos llinellau nad ydynt yn cynnwys patrwm penodol.
Mynegiant rheolaidd
Mae Ac, yn wahanol i grep, yn defnyddio ymadroddion cydnaws Perl.
I mi mae hyn yn fantais fawr; does dim rhaid i mi gofio cystrawen ar wahΓ’n ar gyfer ymadroddion rheolaidd.
ack 'vars+adds+'
Enghraifft fwy cymhleth
ack '*s+[vd+.d+.d+]'
Yn aml, rydych chi eisiau gadael dim ond yr hyn sy'n cyfateb i'r templed yn y canlyniadau. Bydd yr opsiwn -- allbwn yn helpu yma (-o)
ack -o '*s+[vd+.d+.d+]'
Yn ogystal, gan ddefnyddio cromfachau gallwn ddewis y rhan a ddarganfuwyd a'i chyrchu mewn allbwn trwy'r newidyn $[rhif grΕ΅p]. Er enghraifft,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Mae gan Ack opsiynau defnyddiol --ystod-dechrau ΠΈ --ystod-diwedd. Maen nhw'n helpu pan
Mae'r data'n cael ei storio nid mewn un llinell, ond ar ffurf aml-linell.
Er enghraifft, mae ffeil gyda chod sql
Gadewch i ni dynnu enwau'r colofnau. Bydd dechrau'r bloc yn llinell sy'n dechrau gyda SELECT, a'r diwedd fydd llinell sy'n dechrau gyda FROM.
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
Os yw'r ymadrodd chwilio yn cynnwys nodau arbennig megis cyfnod, cromfachau, ac eraill, yna er mwyn peidio Γ’ dianc rhag defnyddio , gallwch ddefnyddio'r opsiwn -Q.
# ΠΠΎΠΈΡΠΊ Ρ ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ack --json 'mysql.'
# ΠΠΎΠΈΡΠΊ Π±Π΅Π· ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
ack --json -Q mysql.
Gweithio gyda ffeiliau
Cael rhestr o ffeiliau gydag estyniad penodol
ack -f --js
Dewch o hyd i bob ffeil js y mae ei henw yn dechrau gyda P* gan ddefnyddio'r opsiwn (-g).
ack -g --js '/Pa.+.js$'
Ffurfweddiad
Mae gan y cyfleustodau ei ffeil ffurfweddu ei hun. Gallwch gael cyfluniad byd-eang ar gyfer y defnyddiwr (~/.ackrc) ac un lleol ar gyfer ffolder benodol (mae angen i chi greu ffeil .ackrc yn y ffolder).
Gellir nodi'r rhan fwyaf o'r opsiynau sydd wedi'u hysgrifennu yn y ffurfweddau Γ’ llaw pan gΓ’nt eu galw. Gadewch i ni edrych ar rai ohonynt.
Anwybyddu ffolder wrth chwilio
--ignore-dir=dist
Gadewch i ni ychwanegu math ffeil arferol -vue.
--type-add=vue:ext:js,vue
Nawr gallwch chi ddefnyddio'r opsiwn --vue i chwilio ffeiliau .vue. Er enghraifft: ack --vue App.
Gallwch chi nodi rhestr o estyniadau ar gyfer yr opsiwn hwn. Er enghraifft, yma, wrth ddefnyddio -vue, bydd y canlynol yn cael eu prosesu: ffeiliau .js.
Anwybyddu ffeiliau, er enghraifft wedi'u miniogi *.min.js
--ignore-file=match:/.min.js$/
Gosod
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
Gosodiad o'r safle
curl https://beyondgrep.com/ack-v3.3.1 > ~/bin/ack && chmod 0755 ~/bin/ack
Ategion ar gyfer golygyddion:
Casgliad
Nid yw'r rhain i gyd yn bosibiliadau. Gellir gweld y rhestr lawn o swyddogaethau trwy redeg:
ack β-help
# ΠΈΠ»ΠΈ
ack --man
Mae'r cyfleustodau ack yn eich galluogi i wneud chwilio yn y derfynell yn fwy cyfleus a hyblyg. A defnyddio piblinell (ack -C 10 helo | ack byd) gallwch greu cyfuniad pwerus ar gyfer chwilio a hidlo data yn y system ffeiliau ac yn y ffeiliau eu hunain.
Ffynhonnell: hab.com