Кіріспе

Компьютерлік бағдарламалауда қолданылатын үлгілер

Компьютерлік бағдарламалауда 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, пайдаланушыларға оны айналып өтуге мүмкіндік беретін мүмкіндіктерге ие.

Үлгі өрнектер ретінде іске асыру

Түпнұсқа Mozilla прокси авто конфигурациясы, жолдардағы glob сәйкестік функциясын қамтамасыз етеді, жоғарыда көрсетілгендей RegExp іске асыру ретінде алмастыруды пайдаланады. Мұндай мысалда жақша синтаксисі режекспен өте жақсы үйлеседі. Python-ның fnmatch функциясы үлгіні тұрақты өрнекке түрлендіру үшін күрделірек процедураны қолданады.

Басқа іске асырулар

Глобс үлгілері қабықтарда қолданылудан басқа, көптеген бағдарламалау тілдерінде де қолданылады, әсіресе адам енгізген деректерді өңдеу үшін. Файлдарды алу үшін glob стиліндегі интерфейс немесе жолдарды салыстыру үшін fnmatch стиліндегі интерфейс келесі бағдарламалау тілдерінде кездеседі: C# тілінде NuGet арқылы Glob сияқты бірнеше кітапханалар қолжетімді. SQLite-де GLOB функциясы бар. Tcl-де glob мүмкіндігі бар.