ဘဝကို အလွန်ရိုးရှင်းလွယ်ကူစေမယ့် ရှာဖွေမှု utility တစ်ခုအကြောင်း ပြောပြချင်ပါတယ်။ ဆာဗာကိုရောက်ပြီး တစ်ခုခုကိုရှာဖို့ လိုအပ်တဲ့အခါ၊ ပထမဆုံးလုပ်ရမှာက ack တပ်ဆင်ထားခြင်းရှိမရှိ စစ်ဆေးပါ။ ဤ utility သည် grep အတွက် ကောင်းမွန်သော အစားထိုးမှုတစ်ခုဖြစ်သလို ရှာဖွေခြင်းနှင့် wc တို့ကို အတိုင်းအတာတစ်ခုအထိ အသုံးပြုနိုင်မည်ဖြစ်သည်။ ဘာကြောင့် grep မလုပ်တာလဲ။ Ack တွင် ပိုမို ကောင်းမွန်သော ဆက်တင်များ၊ လူသားများ ဖတ်နိုင်သော ရွေးချယ်မှုများ၊ perl regex နှင့် config စနစ်တို့ ရှိသည်။ သင်ကြိုက်နှစ်သက်ပါက terminal မှတဆင့်ရှာဖွေရန်၊ သင်သေချာပေါက်ကြိုးစားသင့်သည်။
အခြေခံအင်္ဂါရပ်များ
Ack သည် ပုံသေအားဖြင့် recursive ဖြစ်ပြီး ရွေးစရာနည်းနည်းသာရေးခြင်းသည် အမြဲတမ်းကောင်းမွန်သော အကြံဥာဏ်ဖြစ်သည်။
အလံကိုသုံးနိုင်တယ်။ -wစကားလုံးနယ်နိမိတ်များ (အဖြူကွက်များ၊ မျဉ်းစောင်းများ စသည်ဖြင့်) ဝန်းရံထားသော ကျွန်ုပ်တို့၏ပုံစံကို ရှာရန် utility ကိုပြောရန်။
ack -w mysql
Ack သည် ဖိုင်အမျိုးအစားအလိုက် ရှာဖွေခြင်းကို ပံ့ပိုးပေးသည်။ ဥပမာ၊ json ဖိုင်တွေမှာ module ဗားရှင်းကို ရှာကြည့်ရအောင်။
ack --json '"version":s+"d+.d+.d+"'
ပံ့ပိုးပေးထားသော ဖိုင်အမျိုးအစားများ၏ စာရင်းအပြည့်အစုံကို အသုံးပြု၍ ကြည့်ရှုနိုင်သည်-
ack --help-types
ဥပမာအားဖြင့်၊ script ကိုလုပ်ဆောင်ပြီးဒေတာမည်မျှရှိသည်ကိုနားလည်ရန်စာပိုဒ်တိုတစ်ခုသည်မှတ်တမ်းဖိုင်တစ်ခုတွင်ဘယ်နှစ်ကြိမ်ပေါ်လာသည်ကိုမကြာခဏရေတွက်ရန်လိုအပ်သည်။
ဖြစ်ရပ်ကိုထည့်သွင်းခြင်းမပြုဘဲ test.log ဖိုင်တွင် လုပ်ငန်းစဉ်မည်မျှဖြစ်ပွားသည်ကို ကျွန်ုပ်တို့ရေတွက်သည် (-i).
ကျွန်ုပ်တို့သည် သီးခြားဖိုင်တစ်ခုတွင်သာမက အုပ်စုတစ်ခုတွင် ဖြစ်ပေါ်မှုများကို ရေတွက်နိုင်သည်။ mysql ဟူသော စကားလုံး၏ ယခင်ရှာဖွေမှုကို အပြီးသတ်ကြပါစို့- စကားလုံးများ၏ ဖြစ်ပေါ်မှုအရေအတွက်ကို ရေတွက်ပါ (-with) *.js ဖိုင်များ(--js) မတွေ့ရသည့် ဖိုင်များ အပါအဝင် (-h) ရလဒ်ကို နိဂုံးချုပ်ပါ။
# выведем на экран все вхождения
ack --js -w mysql
# считаем общую сумму вхождений
ack --js -wch mysql
ထို့အပြင်၊ ဖိုင်တစ်ခုစီတွင် ဖြစ်ပွားမှုအရေအတွက်နှင့်ပတ်သက်သည့် အသေးစိတ်အစီရင်ခံစာကို ကျွန်ုပ်တို့ရရှိနိုင်သည် (-l)
ack --js -w -cl mysql
သင့်ရှာဖွေမှုအတွက် နောက်ထပ်အကြောင်းအရာများ လိုအပ်ပါက၊ သင်သည် ack ကို မေးမြန်းနိုင်ပါသည်။
(အထိ လိုင်းများပြပါ-B) နှင့် ပြီးနောက် (-A) တွေ့ရှိသောအသုံးအနှုန်း။ ၎င်းကိုလုပ်ဆောင်ရန်၊ ပြသရန်လိုအပ်သည့်လိုင်းအရေအတွက်ကိုရွေးချယ်မှုပြီးနောက်သင်သတ်မှတ်ရန်လိုအပ်သည်။
# 2 строки до
ack --js --column -B 2 "query.once('" ./lib/
# 2 строки после
ack --js --column -A 2 "query.once('" . /lib/
နှစ်ခုလုံး လိုအပ်ရင် သုံးပါ (-WITH)
ack --js --column -C 2 "query.once('" ./lib/
ရွေးချယ်ခွင့်လည်း ရှိပါတယ် (-v) ရှာဖွေမှုကို ပြောင်းပြန်လှန်ရန်၊ ဆိုလိုသည်မှာ ပေးထားသည့် ပုံစံမပါဝင်သည့် လိုင်းများကို ပြပါ။
ပုံမှန်အသုံးအနှုန်း
Ack သည် grep နှင့်မတူဘဲ Perl လိုက်ဖက်သောအသုံးအနှုန်းများကိုအသုံးပြုသည်။
ငါ့အတွက် ဒါက ကြီးမားတဲ့ အပေါင်းတစ်ခုပါ၊ ပုံမှန်အသုံးအနှုန်းတွေအတွက် သီးခြား syntax တစ်ခုကို မှတ်သားထားဖို့ မလိုပါဘူး။
ack 'vars+adds+'
ပိုရှုပ်ထွေးတဲ့ ဥပမာ
ack '*s+[vd+.d+.d+]'
နမူနာပုံစံနှင့် ကိုက်ညီသည့် ရလဒ်များကိုသာ ချန်ထားချင်လေ့ရှိသည်။ --output option သည် ဤနေရာတွင် ကူညီလိမ့်မည် (-o)
ack -o '*s+[vd+.d+.d+]'
ထို့အပြင်၊ ကွင်းစဥ်များကို အသုံးပြု၍ ကျွန်ုပ်တို့သည် တွေ့ရှိသောအပိုင်းကို ရွေးချယ်ပြီး $[group number] variable မှတဆင့် ၎င်းကို output တွင် ဝင်ရောက်ကြည့်ရှုနိုင်ပါသည်။ ဥပမာအားဖြင့်,
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack တွင် အသုံးဝင်သော ရွေးချယ်မှုများ ရှိသည်။ --range-start и --အကွာအဝေး-အဆုံး. ကူညီလိုက်တာ
ဒေတာကို တစ်ကြောင်းတည်းမဟုတ်ဘဲ လိုင်းပေါင်းစုံပုံစံဖြင့် သိမ်းဆည်းထားသည်။
ဥပမာ၊ sql ကုဒ်ပါတဲ့ ဖိုင်တစ်ခုရှိတယ်။
ကော်လံအမည်များကို ထုတ်ယူကြပါစို့။ ပိတ်ဆို့ခြင်း၏အစမှာ SELECT ဖြင့် စတင်သည့် မျဉ်းတစ်ကြောင်းဖြစ်ပြီး အဆုံးသည် FROM နှင့် စတင်သည့် လိုင်းတစ်ခု ဖြစ်လိမ့်မည်။
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
ရှာဖွေသည့်အသုံးအနှုန်းတွင် ကာလတစ်ခု၊ ကွင်းစဥ်တစ်ခုနှင့် အခြားအက္ခရာများကဲ့သို့သော အထူးအက္ခရာများပါနေပါက၊ ၎င်းတို့ကို အသုံးပြု၍ မလွတ်မြောက်စေရန်၊ ရွေးချယ်မှုကို သင်အသုံးပြုနိုင်သည် -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
ဖိုင်များနှင့်အတူအလုပ်လုပ်
သီးခြားတိုးချဲ့မှုတစ်ခုပါရှိသော ဖိုင်များစာရင်းကို ရယူပါ။
ack -f --js
ရွေးချယ်ခွင့်ကို အသုံးပြု၍ P* ဖြင့် နာမည်ပေးသော js ဖိုင်အားလုံးကို ရှာပါ-g).
ack -g --js '/Pa.+.js$'
configuration များ
utility တွင်၎င်း၏ကိုယ်ပိုင် config ဖိုင်ရှိသည်။ သင့်တွင် အသုံးပြုသူ (~/.ackrc) အတွက် ကမ္ဘာလုံးဆိုင်ရာ config တစ်ခုနှင့် သီးခြား folder တစ်ခုအတွက် local တစ်ခု (သင်ဖိုင်တွဲထဲတွင် .ackrc ဖိုင်ကို ဖန်တီးရန် လိုအပ်သည်) နှစ်ခုစလုံးရှိသည်။
configs တွင်ရေးထားသောရွေးချယ်စရာအများစုကိုခေါ်သောအခါတွင်လူကိုယ်တိုင်သတ်မှတ်နိုင်သည်။ ၎င်းတို့ထဲမှ အချို့ကို ကြည့်ကြပါစို့။
ရှာဖွေနေချိန်တွင် ဖိုဒါကို လျစ်လျူရှုပါ။
--ignore-dir=dist
စိတ်ကြိုက်ဖိုင်အမျိုးအစား -vue ထည့်ကြပါစို့။
--type-add=vue:ext:js,vue
ယခု သင်သည် ဖိုင်များကို ရှာဖွေရန် --vue ရွေးချယ်မှုကို အသုံးပြုနိုင်သည်။ .vue. ဥပမာအားဖြင့်: ack --vue အက်ပ်.
သင်သည် ဤရွေးချယ်မှုအတွက် တိုးချဲ့မှုစာရင်းကို သတ်မှတ်နိုင်သည်။ ဥပမာအားဖြင့်၊ ဤနေရာတွင် -vue ကိုအသုံးပြုသောအခါ၊ အောက်ပါတို့ကို လုပ်ဆောင်သွားပါမည်။ .js ဖိုင်များ။
ဖိုင်များကို လျစ်လျူရှုပါ၊ ဥပမာ *.min.js
--ignore-file=match:/.min.js$/
ustanovka
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 utility သည် သင့်အား terminal တွင် ရှာဖွေခြင်းကို ပိုမိုအဆင်ပြေပြေ ချောမွေ့စေပါသည်။ ပိုက်လိုင်းအသုံးပြုခြင်း (ack -C 10 ဟယ်လို | ack ကမ္ဘာ) သင်သည် ဖိုင်စနစ်နှင့် ဖိုင်များအတွင်း ဒေတာရှာဖွေခြင်းနှင့် စစ်ထုတ်ခြင်းအတွက် အစွမ်းထက်သော ပေါင်းစပ်တစ်ခုကို ဖန်တီးနိုင်သည်။
source: www.habr.com