گلوب (برنامه‌نویسی) کیست؟ توضیح بده.
در برنامه‌نویسی کامپیوتری، الگوهای گلوب () مجموعه ای از نام فایل‌ها را با کاراکترهای عمومی مشخص می‌کنند. به عنوان مثال، دستور mv *.txt textfiles/ که یک دستور پوسته Bash یونیکس است همه فایل‌هایی که انتهای نام‌شان به codice_1 ختم می‌شوند را از پوشه فعلی به پوشه codice_2 منتقل می‌کند. در اینجا codice_3 یک علامت عمومی و codice_4 یک الگوی گلوب است. علامت عمومی codice_3 در اینجا به معنی "هر رشته‌ای با هر طولی از جمله طول صفر، اما به استثنای کاراکترهای جداکننده مسیر (codice_6 در یونیکس و codice_7 در ویندوز)" است.علامت عمومی رایج دیگر علامت سؤال (codice_8) است که به معنای یک کاراکتر تک است. به عنوان مثال، mv ?.txt shorttextfiles/ همه فایل‌هایی را که با یک کاراکتر به‌دنبال آن codice_1 نامگذاری شده‌اند، از فهرست فعلی به پوشه codice_10 دایرکتوری منتقل می‌کند، در حالی که ??.txt با تمام فایل‌هایی که نام آنها از هر ۲ کاراکتر تشکیل شده است و به .txtختم می‌شوند، مطابقت دارد.علاوه بر تطبیق نام فایل‌ها، از گلوب‌ها به‌طور گسترده برای تطبیق رشته‌های مختلف () نیز استفاده می‌شود. در این عرصه یک مثال عام codice_11 است.خاستگاه.دستور گلوب، مخفف "گلوبال"، از اولین نسخه‌های یونیکس آزمایشگاه بل سرچشمه می‌گیرد. مفسرهای دستور نسخه‌های اولیه یونیکس (نسخه‌های اول تا ششم، ۱۹۶۹–۱۹۷۵) به برنامه‌ای جداگانه متکی بودند تا کاراکترهای عمومی درون آرگومان‌های نقل قول نشده را به یک دستور گسترش دهد: "/etc/glob". آن برنامه گسترش را انجام می‌داد و لیست مسیرهای گسترش یافته را برای دستور، به منظور اجرا شدن، فراهم می‌کرد.گلوب در اصل با زبان برنامه‌نویسی B نوشته شده بود. این اولین نرم‌افزار خط اصلی یونیکس بود که با استفاده از یک زبان برنامه‌نویسی سطح بالا توسعه یافت. بعدها، این قابلیت به صورت یک تابع کتابخانه زبان سی، codice_12 ارائه شد که توسط برنامه‌هایی مانند شل استفاده می‌شد. این تابع معمولاً با استفاده از تابعی دیگر به نام codice_13 تعریف می‌شود. تابع codice_13 تطابق دو رشته را برسی می‌کند. برنامه‌ای که از این تابع استفاده می‌کند می‌تواند بر روی مجموعه ای از رشته‌ها (معمولا نام فایل‌ها) حرکت کند تا مشخص کند کدام رشته‌ها مطابقت دارند. هر دو این توابع بخشی از پازیکس هستند: توابع در POSIX.1 از سال ۲۰۰۱، و نوشتار آن‌ها در POSIX.2 تعریف شده است. ایده تعریف یک تابع تطبیق جداگانه با (تطابق کارت عمومی) که یک کتابخانه ساده برای تطبیق رشته در مقابل گلوب بش است شروع شد.به‌طور سنتی، گلوب‌ها با فایل‌های مخفی به شکل در یونیکس مطابقت ندارند. برای مطابقت با آنها، الگو مورد استفاده باید به الزاماً با نقطه (.) شروع شودcodice_15 برای مثال، codice_3 با تمام فایل‌های قابل مشاهده تطابق دارد در حالی که codice_15 codice_3 با تمام فایل‌های مخفی تطابق خواهد داشت.نوشتار.رایج‌ترین حروف عمومی عبارتند از , ، و .معمولاً، کاراکتر جداکننده مسیر ( در لینوکس/یونیکس، MacOS، و غیره یا در ویندوز) هرگز مطابقت نخواهد داشت. برخی از شل‌ها، مانند Bash، قابلیت ای دارند که به کاربران اجازه می‌دهد تا این مورد را دور بزنند.شبه‌یونیکس.در سیستم‌های شبه یونیکس , به صورت بالا تعریف شده‌اند، در صورتی که دو معنی اضافه دارد:محدوده‌ها همچنین می‌توانند کلاس‌های کاراکتر از پیش تعریف‌شده، کلاس‌های هم ارز برای کاراکترهای تأکیدی، و نمادهای مشابه برای کاراکترهایی که تابپ کردن آن‌ها دشوار است را شامل شوند. آنها برای ترکیب با براکت‌ها در عبارت‌های منظم POSIX تعریف شده‌اند.گلوبینگ یونیکس طبق سنت POSIX توسط پوسته اداره می‌شود. گلوبینگ روی نام فایل‌ها در خط فرمان و در شل اسکریپت‌ها ارائه می‌شود. عبارت codice_19 که توسط پازیکس الزام شده در پوسته‌ها تطبیق الگو را با استفاده از الگوهای glob فراهم می‌کند.برخی از پوسته‌ها (مانند پوسته C و Bash) از نوشتارهای اضافی که به با عنوان‌های متناوب یا گسترش شاخه شناخته می‌شود نیز پشتیبانی می‌کنند. از آنجایی این نوشتارهای اضافی بخشی از نوشتار گلوب نیستند، در codice_19 ارائه نشده‌اند. آن‌ها فقط در خط فرمان قبل از اجرای گلوبینگ گسترش می‌یابند.پوسته بش از افزونه‌های زیر نیز پشتیبانی می‌کند:نسخه اصلی داس مشابه سی‌پی/ام بود که برای کار بر روی پردازنده‌های و ۸۰۸۶ اینتل طراحی شده بود. پوسته‌های ویندوز، به دنبال DOS، به‌طور سنتی هیج گسترش گلوب ای روی مقادیر ارسال شده به برنامه‌های خارجی انجام نمی‌دهند. شل‌ها می‌توانند از یک افزونه برای دستورات داخلی خود استفاده کنند:برنامه‌های ویندوز و داس به‌جای پارامترهایی به سبک argv، یک رشته خط فرمان طولانی دریافت می‌کنند و انجام هرگونه تقسیم، نقل‌قول، یا گسترش با استفاده از گلوب وظیفه خودشان است. در واقع، هیچ روش ثابتی برای توصیف حروف عمومی در برنامه‌ها وجود ندارد، زیرا آنها آزاد هستند تا آنچه را که می‌خواهند انجام دهند. دو گسترش دهنده گلوب رایج عبارتند از:بیشتر بخش‌های دیگر ویندوز، از جمله سرویس نمایه گذاری، از روش استفاده شده توسط MS-DOS برای حروف عمومی که در CMD یافت می‌شود استفاده می‌کنند. یک یادگاری از زمان نام فایل ۸٫۳، این نوشتار توجه ویژه ای به نقاط در الگو و متن (نام فایل) دارد. در داخل، این کار با استفاده از سه حرف عمومی اضافی انجام می‌شود. در سمت API ویندوز، معادل است و متناظر با زیربنای آن، است. (یک آنالوگ fnmatch دیگر، است) هر دوی این گسترش دهنده‌های منبع باز msvcrt از استفاده می‌کنند، بنابراین ویژگی‌های نام فایل ۸٫۳، در آنها نیز اعمال می‌شوند.SQL.عملگر در SQL معادل و ، و نه است.اگرچه اصطلاح "گلوب" به‌طور کلی در جامعه SQL استفاده نمی‌شود، اما SQL استاندارد در عملگر codice_22 خود از یک نوشتار شبه گلوب برای تطبیق رشته ساده استفاده می‌کند. علامت درصد () با صفر یا چند کاراکتر و زیرخط () دقیقاً با یک کاراکتر تطابق دارد.بسیاری از پیاده‌سازی‌های SQL عملگر codice_22 را گسترش داده‌اند تا به زبان تطبیق الگوی غنی‌تری دست یابند که محدوده کاراکترها ()، وجود نداشتن آنها، و عناصر عبارات منظم را در خود بگنجانند.در مقایسه با عبارات منظم.گلوب‌ها شامل نوشتاری برای ستاره کلین نیست که امکان تکرار چندگانه قسمت قبلی عبارت را فراهم می‌کند؛ بنابراین آنها عبارات منظم در نظر گرفته نمی‌شوند که (عبارات منظم) می‌تواند مجموعه کامل زبان‌های منظم را بر روی هر الفبای محدودی توصیف کند.گلوب‌ها تلاش می‌کنند تا کل رشته را تطبیق دهند (به عنوان مثال، با S.DOC و SA.DOC مطابقت دارد، اما نه با POST.DOC یا SURREY.DOCKS)، اگرچه، بسته به جزئیات پیاده‌سازی، عبارات منظم ممکن است با یک رشته زیرمجموعه مطابقت داشته باشند.