Кіріспе
Компьютерлік бағдарламалауда қолданылатын үлгілер
Компьютерлік бағдарламалауда glob (/g//l//ɒ//b/) үлгілері жабайы таңбаларды пайдаланып файл атаулары жиынтығын көрсетеді. Мысалы, Unix Bash shell командасы mv *.txt textfiles/ ағымдағы каталогтан textfiles каталогына .txt кеңейтіммен аяқталатын барлық файлдарды көшіреді. Мұнда * – жабайы таңба, ал *.txt – glob үлгісі. Жабайы таңба * "кез келген ұзындығы бар кез келген жол, бос жол да қоса алғанда, бірақ жолдың бөлігіш таңбаларын (Unix-та / және Windows-та \ ) қоспағанда" дегенді білдіреді. Тағы бір көп қолданылатын жабайы таңба – сұрақ белгісі (?), ол бір таңбаны білдіреді. Мысалы, mv ?.txt shorttextfiles/ командасы ағымдағы каталогтан shorttextfiles каталогына бір таңбадан кейін .txt жалғастырылған барлық файлдарды көшіреді, ал ?? .txt командасы .txt жалғастырылған екі таңбадан тұратын барлық файлдарға сәйкес келеді. Файл атауларын сәйкестендіруден басқа, glob-тар кез келген жолдарды сәйкестендіру үшін де кеңінен қолданылады (жабайы таңбаға сәйкес іздеу). Осы мақсатта fnmatch әдеттегі интерфейс болып табылады.
Шығу тегі
Glob командасы, «global» сөзінің қысқартылған түрі, Bell Labs Unix жүйесінің ең алғашқы нұсқаларында пайда болды. Кейіннен бұл мүмкіндік C кітапханасының glob функциясы ретінде ұсынылды, оны shell сияқты бағдарламалар қолданды. Әдетте, ол fnmatch деп аталатын функцияға негізделеді, ол жолдың белгілі бір үлгіге сәйкес келе ме екенін тексереді. Осы функцияны қолданатын бағдарлама, қайсысы сәйкес келеді анықтау үшін жолдар тізбегін (әдетте файл атауларын) қарап шыға алады. Екі функция да POSIX стандартының бөлігі болып табылады: 2001 жылдан бері POSIX.1 стандартында анықталған функциялар және POSIX.2 стандартында анықталған синтаксис. Жеке сәйкестік функциясын анықтау идеясы wildmat (wildcard match) – Bourne Shell globs үлгілерімен жолдарды салыстыратын қарапайым кітапханадан бастау алды. Көбінесе, globs Unix dotfiles түріндегі жасырын файлдармен сәйкес келмейді; оларды сәйкес ету үшін үлгі міндетті түрде нүктеден басталуы керек. Мысалы, * барлық көрінетін файлдармен, ал .* барлық жасырылған файлдармен сәйкес келеді.
Синтаксисі
Ең көп қолданылатын жоқталған белгілер: , , және . Жоқталған белгілердің сипаттамасы Мысал Сәйкес келеді Сәйкес келмейді Кез келген санындағы кез келген таңбаға сәйкес келеді, тіпті ешқайсысына да сәйкес келмейді , немесе , немесе , немесе Кез келген бір таңбаға сәйкес келеді , немесе Жақшада көрсетілген бір таңбаға сәйкес келеді немесе , немесе Жақшада көрсетілген (жергілікті тілге тәуелді) диапазоннан бір таңбаға сәйкес келеді , , дейін немесе Әдетте, жолдың ажыратушы белгісі (Linux/Unix, MacOS және т.б. үшін / және Windows үшін \) ешқашан сәйкес келмейді. Кейбір қабықшалар, мысалы Bash, пайдаланушыларға оны айналып өтуге мүмкіндік беретін мүмкіндіктерге ие.
Wildcard Description Example Matches Does not match matches any number of any characters including none , , or , , or , , or , or matches any single character , , or matches one character given in the bracket or , or matches one character from the (locale dependent) range given in the bracket , , up to , or
Normally, the path separator character ( on Linux/Unix, MacOS, etc. or on Windows) will never be matched. Some shells, such as Bash have functionality allowing users to circumvent this.
Үлгі өрнектер ретінде іске асыру
Түпнұсқа Mozilla прокси авто конфигурациясы, жолдардағы glob сәйкестік функциясын қамтамасыз етеді, жоғарыда көрсетілгендей RegExp іске асыру ретінде алмастыруды пайдаланады. Мұндай мысалда жақша синтаксисі режекспен өте жақсы үйлеседі. Python-ның fnmatch функциясы үлгіні тұрақты өрнекке түрлендіру үшін күрделірек процедураны қолданады.
Басқа іске асырулар
Глобс үлгілері қабықтарда қолданылудан басқа, көптеген бағдарламалау тілдерінде де қолданылады, әсіресе адам енгізген деректерді өңдеу үшін. Файлдарды алу үшін glob стиліндегі интерфейс немесе жолдарды салыстыру үшін fnmatch стиліндегі интерфейс келесі бағдарламалау тілдерінде кездеседі: C# тілінде NuGet арқылы Glob сияқты бірнеше кітапханалар қолжетімді. SQLite-де GLOB функциясы бар. Tcl-де glob мүмкіндігі бар.
C# has multiple libraries available through NuGet such as Glob. SQLite has a GLOB function. Tcl contains a globbing facility.