آموزش اسکریپت نویسی لینوکس (الگوها)
BASH سه نوع مختلف از انطباق الگو را ارائه میکند. انطباق الگو در پوسته، دو نقش ایفا میکند:
انتخاب نام فایلها درون یک دایرکتوری، یا تعیین آنکه آیا یک رشته با یک قالب دلخواه مطابقت مینماید.
در خط فرمان شما غالباً از جانشینها (globs) استفاده میکنید. جانشینها به طور مساعدی شکل ساده الگوها هستند،
که میتوانند به آسانی برای انطباق با گروهی از فایلها به کار بروند، یا متغیرها را در برابر قواعد ساده بررسی کنند.
دومین نوع انطباق الگوها، globهای توسعه یافته را در بر میگیرند، که نسبت به جانشینهای معمولی، کاربرد عبارتهای پیچیدهتری را اجازه میدهند.
پس از نگارش 3.0، BASH از الگوهای عبارتهای منظم نیز پشتیبانی میکند.
اینها در اسکریپتها برای بررسی ورودی کاربر و یا تفکیک دادهها مناسب هستند.
الگوهای جانشین (Glob Patterns)
جانشینها (globs) مفهوم بسیار مهمی در BASH میباشند.
درک صحیح glob ها به طُرق بسیاری برای شما مفید خواهد بود.
جانشینها اساسا الگوهایی میباشند که میتوانند برای انطباق با نام فایلها یا سایر رشتهها به کار بروند.
جانشینها مرکب از کاراکترهای معمولی و فوق کاراکترها هستند.
فوق کاراکترها، آن کاراکترهایی هستند که معنی ویژهای دارند.
فوق کاراکترهای اصلی عبارتند از:
* : بر هر رشتهای ازجمله رشته تهی منطبق میگردد.
? : بر یک کاراکتر منفرد منطبق میشود.
[…] : بر هر یک از کاراکترهای محصور در کروشهها منطبق میشود.
جانشینها به طور صریح از هر دو طرف مهار میگردند.
این به آن معناست که یک جانشین بایستی بر تمام رشته (نام فایل یا رشته دادهای) منطبق شود
*a با رشته cat منطبق نیست، به علت آنکه فقط بر at، منطبق میشود، نه بر تمام رشته. در حالیکه، یک جانشین ca*، با رشته cat منطبق میگردد.
در اینجا مثالی در مورد اینکه چگونه میتوانیم از الگوهای جانشین برای بسط نام فایلها استفاده کنیم:
BASH جانشین را میبیند،
به عنوان مثال a* را، واین جانشین را از طریق نگاه کردن به دایرکتوری جاری و مطابقت glob با تمام فایلهای موجود در آن، بسط میدهد.
هر نام فایلی که با الگوی جانشین مطابقت داشته باشد، به شمار آمده و به جای جانشین به کار میرود.
در نتیجه جمله echo a* با جمله echo a abc تعویض شده و بعد اجرا گردیده است.
BASH بسط نام فایل را بعد از تفکیک کلمهای، که قبلاً انجام داده است، اجرا مینماید،
بنابراین، نام فایلهای ایجاد شده توسط جانشین، همیشه به طور صحیح به کار خواهد رفت.
برای مثال:
در اینجا، * به نام یک فایل منفرد “ “a test.txtبسط یافته، این نام فایل به عنوان یک شناسه منفرد به فرمان rm تحویل میگردد.
BASH همچنین از یک ویژگی به نام جانشینهای توسعه یافته پشتیبانی میکند.
این جانشینها در ماهیت قدرتمندتر هستند، از لحاظ فنی، آنها معادل عبارتهای معمولی هستند،
اگر چه ساختار آنها به ظاهر متفاوت با آنچه اکثریت مردم به کار میبرند، می باشد.
این ویژگی به طور پیشفرض غیر فعال است، لیکن میتواند با دستور shopt، که برای تغییر وضعیت گزینههای پوسته به کار میرود، فعال شود.
این دستور مخفف عبارت shell options میباشد:
shopt -s extglob
- : ?(list) صفر یا یک مورد تطابق با الگوی داده شده.
- : *(list) هر یا هیچ مورد انطباق با الگوی مورد اشاره.
- : +(list) یک مورد انطباق با الگو یا بیشتر.
- : @(list) انطباق با یکی از نمونههای داده شده.
- : !(list) با هر چیزی غیر از موارد ذکر شده انطباق مییابد.
کلمه list داخل پرانتزها لیستی از جانشینهای معمولی یا توسعه یافته میباشد که با کاراکتر | از یکدیگر جدا شدهاند.
این هم یک مثال:
در اینجا الگوی جانشین (list) به هر چیزی که بر *jpg یا *bmp منطبق نمیشود بسط داده میشود.
فقط فایلهای متن همان طور که بسط یافتهاند به دستور تحویل شدهاند.
علاوه بر بسط نام فایل، از جانشینها میتوان برای بررسی انطباق دادهها با یک قالب مشخص شده نیز استفاده نمود.
برای مثال، ممکن است نام فایلی را داده باشیم و انتظار عملیات متفاوت بر اساس پسوند فایل داشته باشیم:
کلمه کلیدی [[ و دستور داخلی case:
هر دو فرصت بررسی یک رشته در برابر جانشین معمولی و یا جانشین توسعه یافته در صورتی که فعال شده باشد را فراهم میکنند.
سپس بسط ابرو را داریم.
از نظر تکنیکی بسط ابرو در زمره جانشینها نمیباشد، اما مشابه آن است.
جانشینها فقط به نام فایلهای حقیقی بسط مییابند، در اینجا چگونگی کارکرد آن:
جهت مشاهده دوره های آموزشی بر روی این لینک کلیک نمایید.
جدیدترین اخبار مجموعه فراز نتورک را در این صفحه اجتماعی دنبال کنید.
آموزش اسکریپت نویسی لینوکس (الگوها) – نویسنده: موسی رشوند
خدمات شبکه فراز نتورک | پیشرو در ارائه خدمات دیتاسنتری و کلود




