میں آپ کو ایک تلاش کی افادیت کے بارے میں بتانا چاہتا ہوں جو زندگی کو بہت آسان بناتی ہے۔ جب میں سرور پر پہنچتا ہوں اور مجھے کچھ تلاش کرنے کی ضرورت ہوتی ہے، تو میں سب سے پہلے یہ چیک کرتا ہوں کہ آیا ack انسٹال ہے۔ یہ افادیت گریپ کے ساتھ ساتھ کسی حد تک فائنڈ اور ڈبلیو سی کا بہترین متبادل ہے۔ grep کیوں نہیں؟ Ack میں باکس سے باہر اچھی ترتیبات، زیادہ انسانی پڑھنے کے قابل اختیارات، پرل ریجیکس اور ایک کنفگ سسٹم ہے۔ اگر آپ ٹرمینل کے ذریعے تلاش کرنا چاہتے ہیں، تو آپ کو اسے ضرور آزمانا چاہیے۔
بنیادی خصوصیات
Ack بذریعہ ڈیفالٹ تکرار ہوتا ہے، اور کم اختیارات لکھنا ہمیشہ اچھا خیال ہوتا ہے۔
ہم ایک جھنڈا استعمال کر سکتے ہیں۔ -wیوٹیلیٹی کو الفاظ کی حدود (وائٹ اسپیس، سلیشز وغیرہ) سے گھرا ہوا ہمارے پیٹرن کی مثال تلاش کرنے کے لیے بتانا۔
ack -w mysql
Ack فائل کی قسم کے ذریعہ تلاش کی حمایت کرتا ہے۔ مثال کے طور پر، آئیے json فائلوں میں ماڈیول ورژن تلاش کرتے ہیں۔
ack --json '"version":s+"d+.d+.d+"'
معاون فائل کی اقسام کی مکمل فہرست اس کا استعمال کرتے ہوئے دیکھی جا سکتی ہے:
ack --help-types
اکثر آپ کو یہ گننا پڑتا ہے کہ لاگ فائل میں کوئی جملہ کتنی بار ظاہر ہوتا ہے، مثال کے طور پر، یہ سمجھنے کے لیے کہ اسکرپٹ نے کتنے ڈیٹا پر کارروائی کی۔
ہم شمار کرتے ہیں کہ test.log فائل میں کتنی بار عمل ہوتا ہے، کیس کو مدنظر نہیں رکھتے ہوئے (-i).
ہم واقعات کو صرف ایک مخصوص فائل میں نہیں بلکہ ایک گروپ میں گن سکتے ہیں۔ آئیے لفظ mysql کے لیے پچھلی تلاش کو حتمی شکل دیں: الفاظ کے واقعات کی تعداد گنیں (-ایس) *.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/
اور اگر آپ کو دونوں کی ضرورت ہو تو استعمال کریں (-کے ساتھ)
ack --js --column -C 2 "query.once('" ./lib/
ایک آپشن بھی ہے(-v) تلاش کو الٹنے کے لیے، یعنی ایسی لائنیں دکھائیں جن میں دیا ہوا پیٹرن نہ ہو۔
باقاعدہ اظہار
Ack، grep کے برعکس، پرل کے موافق اظہار کا استعمال کرتا ہے۔
میرے لیے یہ ایک بڑا پلس ہے؛ مجھے ریگولر ایکسپریشنز کے لیے الگ نحو یاد رکھنے کی ضرورت نہیں ہے۔
ack 'vars+adds+'
زیادہ پیچیدہ مثال
ack '*s+[vd+.d+.d+]'
اکثر آپ نتائج میں صرف وہی چھوڑنا چاہتے ہیں جو ٹیمپلیٹ سے میل کھاتا ہے۔ --output آپشن یہاں مدد کرے گا (-o)
ack -o '*s+[vd+.d+.d+]'
اس کے علاوہ، قوسین کا استعمال کرتے ہوئے ہم پائے گئے حصے کو منتخب کر سکتے ہیں اور $[گروپ نمبر] متغیر کے ذریعے آؤٹ پٹ میں اس تک رسائی حاصل کر سکتے ہیں۔ مثال کے طور پر،
ack --output='version is $1' '*s+[v(d+.d+.d+)]'
Ack کے پاس مفید اختیارات ہیں۔ -- رینج شروع и -- رینج کا اختتام. وہ جب مدد کرتے ہیں۔
ڈیٹا ایک لائن میں نہیں بلکہ ملٹی لائن فارم میں محفوظ کیا جاتا ہے۔
مثال کے طور پر، sql کوڈ والی ایک فائل ہے۔
آئیے کالم کے نام نکالتے ہیں۔ بلاک کا آغاز SELECT سے شروع ہونے والی ایک لائن ہوگی، اور اختتام FROM سے شروع ہونے والی لائن ہوگی۔
ack --range-start ^SELECT --range-end ^FROM 'td+.' ./test.sql
اگر تلاش کے اظہار میں خاص حروف جیسے پیریڈ، ایک قوسین اور دیگر شامل ہیں، تو ان کو استعمال کرنے سے بچنے کے لیے، آپ اختیار استعمال کر سکتے ہیں۔ -Q.
# Поиск с экранированием
ack --json 'mysql.'
# Поиск без экранирования
ack --json -Q mysql.
فائلوں کے ساتھ کام کرنا
ایک مخصوص توسیع کے ساتھ فائلوں کی فہرست حاصل کریں۔
ack -f --js
آپشن کا استعمال کرتے ہوئے تمام js فائلوں کو تلاش کریں جن کا نام P* سے شروع ہوتا ہے۔-g).
ack -g --js '/Pa.+.js$'
تشکیل
یوٹیلیٹی کی اپنی تشکیل فائل ہے۔ آپ صارف کے لیے ایک عالمی کنفیگریشن (~/.ackrc) اور ایک مخصوص فولڈر کے لیے ایک مقامی دونوں رکھ سکتے ہیں (آپ کو فولڈر میں .ackrc فائل بنانے کی ضرورت ہے)۔
زیادہ تر آپشنز جو کنفیگس میں لکھے جاتے ہیں جب کال کی جاتی ہے تو دستی طور پر بتائی جا سکتی ہے۔ آئیے ان میں سے چند ایک کو دیکھتے ہیں۔
تلاش کرتے وقت فولڈر کو نظر انداز کریں۔
--ignore-dir=dist
آئیے اپنی مرضی کے مطابق فائل کی قسم -vue شامل کریں۔
--type-add=vue:ext:js,vue
اب آپ فائلوں کو تلاش کرنے کے لیے --vue آپشن استعمال کر سکتے ہیں۔ .vue مثال کے طور پر: ack --vue ایپ.
آپ اس اختیار کے لیے ایکسٹینشنز کی فہرست بتا سکتے ہیں۔ مثال کے طور پر، یہاں، -vue استعمال کرتے وقت، درج ذیل پر کارروائی کی جائے گی۔ .js فائلیں
فائلوں کو نظر انداز کریں، مثال کے طور پر minified *.min.js
--ignore-file=match:/.min.js$/
تنصیب
CentOS
yum update -y && yum install ack -y
اوبنٹو
apt-get update -y && apt-get install ack-grep -y
میک 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 یوٹیلیٹی آپ کو ٹرمینل میں تلاش کو زیادہ آسان اور لچکدار بنانے کی اجازت دیتی ہے۔ اور پائپ لائن کا استعمال کرتے ہوئے (ack -C 10 ہیلو | ایک دنیا) آپ فائل سسٹم میں اور خود فائلوں میں ڈیٹا کو تلاش کرنے اور فلٹر کرنے کے لیے ایک طاقتور کمبائن بنا سکتے ہیں۔
ماخذ: www.habr.com