لینکس پر اونڈ کمانڈ کا استعمال کیسے کریں

لینکس پر ،عجیب کمانڈ لائن ٹیکسٹ ہیرا پھیری ڈائنمو ، نیز ایک طاقتور اسکرپٹنگ لینگویج ہے۔ اس کی عمدہ خصوصیات میں سے کچھ کا تعارف یہاں ہے۔

کتنا عجیب ہے اس کا نام

عجیب کمانڈ کا نام ان تین افراد کے انٹریلیجس کا استعمال کرتے ہوئے رکھا گیا تھا جنھوں نے 1977 میں اصل نسخہ لکھا تھا: الفریڈ آہو ، پیٹر وینبرجر اور برائن کارنیگان۔ یہ تینوں افراد لیجنڈری اے ٹی اینڈ ٹی بیل لیبارٹریز یونکس پینتین سے تھے۔ اس کے بعد بہت سے دوسرے افراد کی شراکت کے ساتھ ، عجیب ارتقاء جاری ہے۔

یہ ایک مکمل سکرپٹ کی زبان ہے ، نیز کمانڈ لائن کے ل text ایک مکمل ٹیکسٹ ہیرا پھیری ٹول کٹ۔ اگر یہ مضمون آپ کی بھوک مٹاتا ہے تو ، آپ اس کے بارے میں ہر تفصیل چیک کرسکتے ہیںعجیب اور اس کی فعالیت۔

قواعد ، نمونے ، اور اقدامات

عجیب پروگراموں پر کام کرتا ہے جن میں نمونوں اور اعمال پر مشتمل قواعد شامل ہیں۔ کارروائی اس متن پر کی گئی ہے جو نمونہ سے میل کھاتا ہے۔ مراسلے گھوبگھرالی منحنی خطوط وحدانی میں منسلک ہیں ({}). ایک ساتھ ، ایک نمونہ اور ایک عمل ایک قاعدہ تشکیل دیتا ہے۔ پورے عجیب پروگرام میں ایک حوالہ بند ہے (').

آئیے اس کی آسان ترین قسم پر ایک نظر ڈالتے ہیں عجیب پروگرام. اس کا کوئی نمونہ نہیں ہے ، لہذا اس میں دیئے گئے متن کی ہر لکیر سے میل کھاتا ہے۔ اس کا مطلب ہے کہ ہر لائن پر کارروائی کی جاتی ہے۔ ہم اسے آؤٹ پٹ پر استعمال کریں گے ڈبلیو ایچ او کمانڈ.

یہاں سے معیاری آؤٹ پٹ ہے ڈبلیو ایچ او:

ڈبلیو ایچ او

شاید ہمیں ان تمام معلومات کی ضرورت نہیں ہے ، بلکہ ، صرف اکاؤنٹس میں نام دیکھنا چاہتے ہیں۔ ہم پیداوار کو پائپ کر سکتے ہیں ڈبلیو ایچ او میں عجیب، اور پھر بتائیں عجیب صرف پہلے فیلڈ پرنٹ کرنے کے لئے.

پہلے سے طے شدہ ، عجیب فیلڈ کو وائٹ اسپیس ، لائن کا آغاز ، یا لائن کے آخر میں گھیرے ہوئے حروف کی تار سمجھتا ہے۔ کھیتوں کی شناخت ڈالر کے نشان سے ہوتی ہے ($) اور ایک عدد۔ تو ،$1 پہلے فیلڈ کی نمائندگی کرتا ہے ، جسے ہم استعمال کریں گے پرنٹ کریں پہلے فیلڈ کو پرنٹ کرنے کے لئے کارروائی.

ہم درج ذیل کو ٹائپ کرتے ہیں:

کون | awk '{پرنٹ $ 1}'

عجیب پہلے فیلڈ کو پرنٹ کرتا ہے اور باقی لائن کو خارج کردیتا ہے۔

ہم اپنی پسند کے زیادہ سے زیادہ فیلڈ پرنٹ کرسکتے ہیں۔ اگر ہم بطور جداکار کوما شامل کریں ،عجیب ہر فیلڈ کے درمیان ایک جگہ پرنٹ کرتا ہے۔

ہم لاگ ان وقت پرنٹ کرنے کے لئے مندرجہ ذیل ٹائپ کرتے ہیں جب فرد لاگ ان ہوتا ہے (فیلڈ فور):

کون | awk '{پرنٹ $ 1، $ 4}'

کچھ خاص فیلڈ شناخت کار ہیں۔ یہ متن کی پوری لائن اور متن کی لائن میں آخری فیلڈ کی نمائندگی کرتے ہیں۔

  • $0: متن کی پوری لائن کی نمائندگی کرتا ہے۔
  • $1: پہلے فیلڈ کی نمائندگی کرتا ہے۔
  • $2: دوسرے فیلڈ کی نمائندگی کرتا ہے۔
  • $7: ساتویں فیلڈ کی نمائندگی کرتا ہے۔
  • $45: 45 ویں فیلڈ کی نمائندگی کرتا ہے۔
  • . NF: "کھیتوں کی تعداد" کا مطلب ہے ، اور آخری فیلڈ کی نمائندگی کرتا ہے۔

ہم ایک چھوٹی سی ٹیکسٹ فائل کو سامنے لانے کیلئے درج کریں گے جس میں ڈینس رچی سے منسوب ایک مختصر اقتباس ہے۔

بلی dennes_ritchie.txt

ہم چاہتے ہیںعجیب اقتباس کا پہلا ، دوسرا ، اور آخری فیلڈ پرنٹ کرنے کے لئے۔ نوٹ کریں کہ اگرچہ یہ ٹرمینل ونڈو میں لپیٹا ہوا ہے ، یہ صرف متن کی ایک لائن ہے۔

ہم مندرجہ ذیل کمانڈ کو ٹائپ کرتے ہیں۔

awk '{پرنٹ $ 1، $ 2، $ NF}' dennes_ritchie.txt

ہم اس "سادگی" کو نہیں جانتے ہیں۔ متن کی لکیر میں 18 واں فیلڈ ہے ، اور ہمیں کوئی پرواہ نہیں ہے۔ ہمیں کیا معلوم کہ یہ آخری فیلڈ ہے ، اور ہم استعمال کرسکتے ہیں . NF اس کی قیمت حاصل کرنے کے لئے. مدت صرف میدان کے جسم میں ایک اور کردار سمجھا جاتا ہے۔

آؤٹ پٹ فیلڈ جداکار شامل کرنا

آپ یہ بھی بتا سکتے ہیں عجیب ڈیفالٹ اسپیس کریکٹر کے بجائے کھیتوں کے مابین کسی خاص کردار کو پرنٹ کرنا سے پہلے سے طے شدہ آؤٹ پٹتاریخ کمانڈ قدرے عجیب ہے کیونکہ وقت اس کے وسط میں ٹھیک آ جاتا ہے۔ تاہم ، ہم درج ذیل کو ٹائپ کر کے استعمال کرسکتے ہیں عجیب ہم چاہتے ہیں کھیتوں کو نکالنے کے لئے:

تاریخ
تاریخ | awk '{پرنٹ $ 2، $ 3، $ 6}'

ہم استعمال کریں گے آفس (آؤٹ پٹ فیلڈ جداکار) ماہ ، دن اور سال کے درمیان ایک جداکار ڈالنے کے لئے متغیر۔ نوٹ کریں کہ ذیل میں ہم کمانڈ کو سنگل حوالوں سے منسلک کرتے ہیں (') ، گھوبگھرالی منحنی خطوط وحدانی نہیں ({}):

تاریخ | awk 'OFS = "/" {پرنٹ $ 2، $ 3، $ 6}'
تاریخ | awk 'OFS = "-" {2 $ ، $ 3 ، $ 6 {پرنٹ کریں

شروع اور اختتام کے قواعد

A شروع کریں کسی بھی ٹیکسٹ پروسیسنگ کے شروع ہونے سے پہلے ایک بار اصول لاگو کیا جاتا ہے۔ در حقیقت ، اس سے پہلے اس کو پھانسی دے دی گئی ہے عجیب یہاں تک کہ کوئی متن بھی پڑھتا ہے۔ ایک ختم تمام پروسیسنگ مکمل ہونے کے بعد قاعدہ کو نافذ کیا جاتا ہے۔ آپ ایک سے زیادہ ہوسکتے ہیں شروع کریں اورختم قوانین ، اور وہ ترتیب میں لاگو ہوں گے.

ہماری مثال کے طور پر شروع کریں حکمرانی کریں ، ہم مکمل اقتباس پرنٹ کریں گے dennes_ritchie.txt فائل جو ہم نے اس کے اوپر ایک عنوان کے ساتھ پہلے استعمال کی تھی۔

ایسا کرنے کے ل we ، ہم یہ حکم ٹائپ کرتے ہیں:

awk 'BEGIN {"ڈینس رچی" پرنٹ کریں} {پرنٹ $ 0}' dennes_ritchie.txt

نوٹ کریں شروع کریں قاعدہ کی اپنی ایک سیٹ کے اندر اندر موجود منحنی خطوط وحدانی (منحنی خطوط وحدانی){}).

ہم اسی تکنیک کو اس کمانڈ کے ساتھ استعمال کرسکتے ہیں جس کا استعمال ہم پہلے پائپ آؤٹ کرنے کے لئے کرتے تھے ڈبلیو ایچ او میں عجیب. ایسا کرنے کے ل we ، ہم مندرجہ ذیل ٹائپ کریں:

کون | awk 'BEGIN {"ایکٹو سیشن" پرنٹ کریں} {پرنٹ $ 1، $ 4}'

ان پٹ فیلڈ الگ کرنے والے

اگر آپ چاہیں عجیب اس ٹیکسٹ کے ساتھ کام کرنے کے لئے جو فیلڈز کو الگ کرنے کے لئے وہائٹ ​​اسپیس استعمال نہیں کرتا ہے ، آپ کو یہ بتانا ہوگا کہ کون سا کردار فیلڈ جداکار کے طور پر استعمال کرتا ہے۔ مثال کے طور پر ، / وغیرہ / passwd فائل ایک بڑی آنت کا استعمال کرتی ہے (:) کھیتوں کو الگ کرنا

ہم اس فائل اور استعمال کریں گے (جداکار تار) بتانے کا اختیار عجیب بڑی آنت کو استعمال کرنے کے لئے (:) جداکار کے طور پر۔ ہم بتانے کے لئے درج ذیل کو ٹائپ کریں عجیب صارف اکاؤنٹ اور ہوم فولڈر کا نام پرنٹ کرنے کے لئے:

awk -F: '{پرنٹ کریں $ 1 ، $ 6}' / وغیرہ / passwd

آؤٹ پٹ میں صارف اکاؤنٹ (یا درخواست یا ڈیمون کا نام) اور ہوم فولڈر (یا درخواست کا مقام) شامل ہوتا ہے۔

مراسلے شامل کرنا

اگر ہم جس دلچسپی میں دلچسپی رکھتے ہیں وہ سبھی باقاعدہ صارف اکاؤنٹس ہیں ، تو ہم دیگر تمام اندراجات کو فلٹر کرنے کے ل our اپنی پرنٹ ایکشن کے ساتھ ایک نمونہ شامل کرسکتے ہیں۔ چونکہ صارف شناختی نمبر 1،000 کے برابر یا اس سے زیادہ ہے ، لہذا ہم اس معلومات کو اپنے فلٹر کی بنیاد بناسکتے ہیں۔

ہم اپنی پرنٹ ایکشن کو انجام دینے کے ل only درج ذیل کو صرف اسی وقت ٹائپ کرتے ہیں جب تیسرا فیلڈ ($3) میں ایک ہزار یا اس سے زیادہ کی قدر شامل ہے:

awk -F: '$ 3> = 1000 {پرنٹ $ 1، $ 6}' / وغیرہ / passwd

اس نمونہ کو فوری طور پر اس عمل سے قبل ہونا چاہئے جس سے اس کا وابستہ ہے۔

ہم استعمال کرسکتے ہیں شروع کریں ہماری چھوٹی سی رپورٹ کے لئے ایک عنوان فراہم کرنے کے لئے اصول. ہم مندرجہ ذیل ٹائپ کرتے ہیں ،. n) عنوان کے اسٹرنگ میں ایک نئ لائن کریکٹر داخل کرنے کا اشارہ:

awk -F: 'BEGIN {print "صارف اکاؤنٹس ounts n -------------"} $ 3> = 1000 {پرنٹ $ 1 ،، 6}' / وغیرہ / passwd

نمونوں کے ساتھ بھر پور باقاعدہ اظہار ہوتا ہے اور وہ اس کی ایک خوبی ہیں عجیب.

ہم کہتے ہیں کہ ہم نصب فائل سسٹم کے عالمی سطح پر منفرد شناخت کار (UIDs) دیکھنا چاہتے ہیں۔ اگر ہم تلاش کریں / وغیرہ / fstab "UID" کے اسٹرنگ کے واقعات کے ل file فائل کرنا ، اس معلومات کو ہمارے ل return واپس کرنا چاہئے۔

ہم اپنے کمانڈ میں سرچ پیٹرن "/ UID /" استعمال کرتے ہیں۔

awk '/ UID / {پرنٹ $ 0}' / وغیرہ / fstab

اس میں "UID" کے تمام واقعات پائے جاتے ہیں اور ان لائنوں کو پرنٹ کرتا ہے۔ ہم واقعتا اسی نتائج کو بغیر حاصل کریں گے پرنٹ کریں عمل کیونکہ ڈیفالٹ کارروائی متن کی پوری لائن کو پرنٹ کرتی ہے۔ وضاحت کے لئے ، اگرچہ ، واضح ہونا اکثر کارآمد ہوتا ہے۔ جب آپ کسی اسکرپٹ یا اپنی ہسٹری فائل کو دیکھتے ہیں تو ، آپ کو خوشی ہوگی کہ آپ نے اپنے لئے اشارے چھوڑ دیے۔

پائی جانے والی پہلی لائن ایک کمنٹ لائن تھی ، اور اگرچہ "UID" تار اس کے وسط میں ہے ، عجیب پھر بھی اسے مل گیا۔ ہم باقاعدہ اظہار کو موافقت کرسکتے ہیں اور بتا سکتے ہیں عجیب صرف U لائن سے شروع ہونے والی لائنوں پر کارروائی کرنا۔ ایسا کرنے کے ل we ، ہم درج ذیل کو ٹائپ کرتے ہیں جس میں لائن ٹوکن کا آغاز بھی شامل ہے (^):

awk '/ ^ UID / {پرنٹ $ 0}' / وغیرہ / fstab

یہ بہتر ہے! اب ، ہم صرف حقیقی پہاڑی ہدایات دیکھتے ہیں۔ آؤٹ پٹ کو مزید بہتر بنانے کے ل we ، ہم درج ذیل کو ٹائپ کرتے ہیں اور ڈسپلے کو پہلے فیلڈ تک محدود کرتے ہیں۔

awk '/ ^ UID / {پرنٹ $ 1}' / وغیرہ / fstab

اگر ہمارے پاس اس مشین پر ایک سے زیادہ فائل سسٹم لگے ہوئے ہیں ، تو ہمیں ان کے یو یو ڈیز کی ایک صاف میز مل جائے گی۔

بلٹ ان افعال

عجیب کمانڈ لائن سے اور اسکرپٹ دونوں میں آپ اپنے پروگراموں میں کال اور استعمال کرسکتے ہیں۔ اگر آپ کچھ کھدائی کرتے ہیں تو ، آپ کو یہ بہت نتیجہ خیز نظر آئے گا۔

کسی فنکشن کو کال کرنے کے لئے عمومی تکنیک کا مظاہرہ کرنے کے لئے ، ہم کچھ عددی چیزوں کو دیکھیں گے۔ مثال کے طور پر ، درج ذیل 625 کے مربع روٹ پرنٹ کرتا ہے:

awk 'BEGIN {پرنٹ مربع (625)}'

یہ کمانڈ 0 (صفر) اور -1 (جو ریاضی کی مستقل حیثیت سے ہوتا ہے ، pi) کے آرکٹینجنٹ پرنٹ کرتا ہے:

awk 'BEGIN {پرنٹ atan2 (0 ، -1)}'

مندرجہ ذیل کمانڈ میں ، ہم نے نتیجہ کو تبدیل کیا اتان 2 () اس سے پہلے کہ ہم اسے پرنٹ کریں فنکشن:

awk 'BEGIN {پرنٹ atan2 (0، -1) * 100}'

افعال پیرامیٹرز کے طور پر اظہار خیال کو قبول کرسکتے ہیں۔ مثال کے طور پر ، 25 کے مربع جڑ کے بارے میں پوچھنے کا ایک جامع طریقہ یہ ہے:

awk 'BEGIN {پرنٹ اسکوائرٹ ((2 + 3) * 5)}'

عجیب سکرپٹ

اگر آپ کی کمانڈ لائن پیچیدہ ہوجاتی ہے ، یا آپ معمول تیار کرتے ہیں تو آپ جانتے ہیں کہ آپ دوبارہ استعمال کرنا چاہتے ہیں تو ، آپ اپنی منتقلی کرسکتے ہیں عجیب اسکرپٹ میں کمانڈ کریں۔

ہماری مثال کے اسکرپٹ میں ، ہم مندرجہ ذیل میں سے سب کچھ کرنے جارہے ہیں:

  • اسکرپٹ کو چلانے کے لئے کون سا عملدرآمد کرنے کے لئے استعمال کریں۔
  • تیار کریں عجیب استعمال کرنے کے لئے ایف ایس کولون کے ذریعہ جدا جدا کھیتوں کے ساتھ ان پٹ متن پڑھنے کیلئے فیلڈ جداکار متغیر (:).
  • کا استعمال کرتے ہیں آفس بتانے کے لئے آؤٹ پٹ فیلڈ جداکار عجیب کالون استعمال کرنے کے لئے (:) آؤٹ پٹ میں کھیتوں کو الگ کرنا
  • 0 (صفر) پر ایک کاؤنٹر سیٹ کریں۔
  • متن کی ہر سطر کے دوسرے فیلڈ کو ایک خالی قیمت پر سیٹ کریں (یہ ہمیشہ "x" ہوتا ہے ، لہذا ہمیں اسے دیکھنے کی ضرورت نہیں ہے)۔
  • ترمیم شدہ دوسرے فیلڈ کے ساتھ لائن پرنٹ کریں۔
  • کاؤنٹر میں اضافہ کریں۔
  • کاؤنٹر کی قدر پرنٹ کریں۔

ہماری اسکرپٹ نیچے دکھایا گیا ہے۔

شروع کریں قاعدہ ابتدائی اقدامات کرتا ہے ، جبکہختم قاعدہ انسداد قیمت کو ظاہر کرتا ہے۔ درمیانی اصول (جس کا کوئی نام نہیں ، نہ ہی نمونہ ہے لہذا یہ ہر لائن سے ملتا ہے) دوسرے فیلڈ میں ترمیم کرتا ہے ، لائن پرنٹ کرتا ہے اور انسداد میں اضافہ کرتا ہے۔

اسکرپٹ کی پہلی لائن شیل کو بتاتی ہے جو استعمال کرنے کے قابل ہے (عجیب، ہماری مثال میں) اسکرپٹ چلانے کے لئے۔ یہ بھی گزر جاتا ہے (فائل کا نام) کا اختیار عجیب، جس سے وہ متن کو آگاہ کرتا ہے جس پر اس پر عملدرآمد ہونے والا ہے وہ ایک فائل سے آئے گا۔ جب ہم چلاتے ہیں تو ہم اس کا نام اسکرپٹ میں بھیج دیں گے۔

ہم نے ذیل میں اسکرپٹ کو بطور متن شامل کیا ہے تاکہ آپ کاٹ کر پیسٹ کرسکیں:

! # پوری لائن پرنٹ کریں $ 0 # دوسرے اکاؤنٹ اکاؤنٹوں کی گنتی کریں ++} END {# نتائج پرنٹ اکاؤنٹس پرنٹ کریں "اکاؤنٹس۔ \ n"}

اس کو ایک فائل میں محفوظ کریں omit.awk. اسکرپٹ کو قابل عمل بنانے کے ل we ، ہم استعمال کرکے درج ذیل ٹائپ کریں chmod:

chmod + x omit.awk

اب ، ہم اسے چلائیں گے اور پاس کریں گے / وغیرہ / passwd اسکرپٹ میں فائل کریں۔ یہ فائل ہےعجیب اسکرپٹ میں قواعد کا استعمال کرتے ہوئے ، ہمارے لئے کارروائی کریں گے:

./omit.awk / etc / passwd

فائل پر کارروائی کی گئی ہے اور ہر سطر ظاہر کی گئی ہے ، جیسا کہ ذیل میں دکھایا گیا ہے۔

دوسرے فیلڈ میں موجود "x" اندراجات کو ہٹا دیا گیا تھا ، لیکن نوٹ کریں کہ فیلڈ الگ کرنے والے اب بھی موجود ہیں۔ لکیریں گنتی جاتی ہیں اور کُل پیداوار کے نچلے حصے میں دیا جاتا ہے۔

عجیب کے لئے کھڑا نہیں ہے

عجیب عجیب کے لئے کھڑا نہیں ہے؛ یہ خوبصورتی کے لئے کھڑا ہے. یہ ایک پروسیسنگ فلٹر اور ایک رپورٹ مصنف کے طور پر بیان کیا گیا ہے۔ زیادہ درست طور پر ، یہ دونوں ، یا بلکہ ، ایک ٹول ہے جو آپ ان دونوں کاموں کے لئے استعمال کرسکتے ہیں۔ صرف چند لائنوں میں ،عجیب روایتی زبان میں جس کوڈ کوڈنگ کی ضرورت ہوتی ہے اسے حاصل کرتا ہے۔

اس طاقت کا استعمال قواعد کے آسان تصور سے ہوتا ہے جس میں نمونوں پر مشتمل ہوتا ہے ، جو عمل کرنے کے لئے متن کا انتخاب کرتے ہیں ، اور عمل کی وضاحت کرنے والے اقدامات کا استعمال کرتے ہیں۔


$config[zx-auto] not found$config[zx-overlay] not found