A | B | C | D | E | F | G | H | CH | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Globy jsou v oblasti programování řetězce obsahující žolíkový znak a řetězec. Vytváření globů se nazývá globování. Například příkaz v programovacím jazyce Bash mv *.txt textfiles/
přesune všechny txt soubory z aktuálního adresáře do adresáře textfiles
. V tomto případě je *
žolíkový znak pro jakýkoli řetězec znaků vyjma znaku /,
část *.txt
je glob. Dalším běžným zástupným znakem je otazník (?
), který zastupuje jeden znak. Například mv ?.txt shorttextfiles/
přesune všechny txt soubory pojmenované jedním znakem z aktuálního adresáře do adresáře shorttextfiles
, zatímco ??.txt
bude odpovídat všem textovým souborům, jejichž název se skládá ze 2 znaků.
Kromě shody názvů souborů se globs také široce používají pro porovnávání libovolných řetězců (shoda zástupných znaků). V této funkci je společným rozhraním fnmatch
.
Původ
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/36/Unix_Glob_Reference.png/220px-Unix_Glob_Reference.png)
glob
Příkaz glob, zkratka pro global (česky globální), pochází z nejstarších verzí Unixu.[1] Interpreti příkazů raných verzí Unixu (1. až 6. vydání, 1969–1975) se spoléhali na samostatný program pro rozšíření zástupných znaků v argumentech bez uvozovek na příkaz glob. Tento program provedl rozšíření a dodal rozšířený seznam cest k souboru příkazu k provedení.
Glob byl původně napsán v programovacím jazyce B.[2] Později byla tato funkce přidána do knihovny programovacího jazyka C. Tuto funkci ve formátu glob()
, používají programy jako je shell. Obvykle je definována na základě funkce s názvem fnmatch()
, která testuje, zda řetězec odpovídá danému vzoru – program používající tuto funkci pak může iterovat řadu řetězců (obvykle názvy souborů), aby určil, které z nich jsou si rovny. Obě funkce jsou součástí dokumentace POSIX: funkce definované v POSIX.1 od roku 2001 a syntaxe definovaná v POSIX.2.[3][4]
Globy nanehrazují unixové označení skrytých souborů. Pokud má glob zahrnout i skrytý soubor, který bývá na začátku označen čárkou, musí se před zástupný znak vložit tečka. Například *
odpovídá všem viditelným souborům, zatímco .*
odpovídá všem skrytým souborům.
Syntax
Nejběžnější žolíkové znaky jsou *
, ?
a .
Žolíkový znak | Popis | Příklad | Odpovídá | Neodpovídá |
---|---|---|---|---|
|
odpovídá libovolnému počtu libovolných znaků včetně žádného | řád*
|
řád , řády , řád a neřád
|
neřád , ád
|
*řád*
|
řád , řády , řády a neřády , neřád
|
řá
| ||
?
|
odpovídá libovolnému jednotlivému znaku | ?es
|
Pes , pes , bes
|
es , náves , eso
|
???
|
odpovídá libovolným třem znakům | ???es
|
náves , 256es , a pes
|
pes , es , maxipes
|
|
odpovídá jednomu znaku uvedenému v závorce | es
|
Pes , Ves
|
pes , ves , PVes , Les , les , náves , Eso
|
|
odpovídá jednomu znaku z rozsahu (závislého na národním prostředí) uvedeného v závorce | es
|
aes , bes , ces , čes až zes
|
žes , es , a pes
|
Obvykle se znak oddělovače cesty (/
na Linuxu/Unixu, MacOS atd. nebo \
na Windows) nikdy nebude shodovat. Některé shelly, jako je Bash, mají funkce, které uživatelům umožňují toto obejít.[5]
Systémy na bázi Unix
Na systémech podobných Unixu fungují znaky *
a ?
tak, jak je uvedeno výše, zatímco řetězec má dva další významy:[6][7]
Žolýkový znak | Popis | Příklad | Odpovídá | Neodpovídá |
---|---|---|---|---|
|
odpovídá jednomu znaku, který není uveden v závorce | es
|
les , Les , pes
|
Pes
|
|
odpovídá jednomu znaku, který není z rozsahu uvedeného v závorce | es
|
aes , bes , žes , es , a pes
|
ces , pes , les
|
Rozsahy mohou také zahrnovat předdefinované třídy znaků, třídy ekvivalence pro znaky s diakritikou a symboly řazení pro znaky, které se obtížně zadávají. Jsou definovány tak, aby odpovídaly hranatým závorkám v regulárních výrazech standardu POSIX.[6][7]
Unixové globování je řešeno shellem podle POSIXu. Globuje se s názvy souborů na příkazovém řádku a v shellových skryptech. Příkaz case
v shellu nařízený POSIXem poskytuje porovnávání vzorů pomocí vzorů glob.
Některé shelly (jako je C shell a Bash) podporují další syntaxi známou jako alternace nebo expanze složených závorek. Protože to není součástí syntaxe glob, není poskytováno v case
. Rozbaluje se pouze na příkazovém řádku před globováním.
Shell Bash také podporuje následující rozšíření:[8]
- Rozšířené globování (extglob): umožňuje použití jiných operátorů pro párování vzorů s více výskyty vzoru uzavřeného v závorkách, což v podstatě poskytuje chybějící kleene hvězdu a alternaci pro popis regulárních jazyků. Lze jej povolit nastavením možnosti
extglob
shell. Tato možnost pochází z Korn shellu verze 3.[9] GNU fnmatch a glob mají totožné rozšíření.[3] - globstar: umožňuje, aby
**
jako komponenta názvu rekurzivně odpovídala libovolnému počtu vrstev neskrytých adresářů.[9] Podporováno také knihovnami Javascriptu a globováním v Pythonu[10].
Odkazy
Reference
V tomto článku byl použit překlad textu z článku glob (programming) na anglické Wikipedii.
- ↑ Wayback Machine. web.archive.org . 2000-08-29 . Dostupné v archivu pořízeném z originálu dne 2000-08-29.
- ↑ https://www.cs.dartmouth.edu/~doug/reader.pdf
- ↑ a b fnmatch(3) - Linux manual page. man7.org . . Dostupné online.
- ↑ glob(3) - Linux manual page. man7.org . . Dostupné online.
- ↑ Bash Reference Manual. www.gnu.org . . Dostupné online.
- ↑ a b Shell Command Language. pubs.opengroup.org . cit. 2023-04-24. Dostupné online.
- ↑ a b glob(7) - Linux manual page. man7.org online. cit. 2023-04-24. Dostupné online.
- ↑ glob - Greg's Wiki. mywiki.wooledge.org online. cit. 2023-04-24. Dostupné online.
- ↑ a b Pattern Matching (Bash Reference Manual). www.gnu.org online. cit. 2023-04-24. Dostupné online.
- ↑ BOYLE, Tara. The Python Glob Module. Medium online. 2021-01-16 cit. 2023-04-24. Dostupné online. (anglicky)
Text je dostupný za podmienok Creative Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších podmienok. Podrobnejšie informácie nájdete na stránke Podmienky použitia.
Antropológia
Aplikované vedy
Bibliometria
Dejiny vedy
Encyklopédie
Filozofia vedy
Forenzné vedy
Humanitné vedy
Knižničná veda
Kryogenika
Kryptológia
Kulturológia
Literárna veda
Medzidisciplinárne oblasti
Metódy kvantitatívnej analýzy
Metavedy
Metodika
Text je dostupný za podmienok Creative
Commons Attribution/Share-Alike License 3.0 Unported; prípadne za ďalších
podmienok.
Podrobnejšie informácie nájdete na stránke Podmienky
použitia.
www.astronomia.sk | www.biologia.sk | www.botanika.sk | www.dejiny.sk | www.economy.sk | www.elektrotechnika.sk | www.estetika.sk | www.farmakologia.sk | www.filozofia.sk | Fyzika | www.futurologia.sk | www.genetika.sk | www.chemia.sk | www.lingvistika.sk | www.politologia.sk | www.psychologia.sk | www.sexuologia.sk | www.sociologia.sk | www.veda.sk I www.zoologia.sk