BASH: Žolíkové znaky: Porovnání verzí
m (→Příklady: fix) |
(Doplnění) |
||
(Není zobrazeno 15 mezilehlých verzí od stejného uživatele.) | |||
Řádka 1: | Řádka 1: | ||
− | '''Žolíkové znaky | + | '''Žolíkové znaky''' slouží k tomu, aby nebylo nutné uvádět všechny parametry příkazů explicitně, ale bylo možné použít obecné zadání. Lze například pracovat se všemi soubory s příponou <code>txt</code> nebo se všemi, které vyhovují jiným podmínkám (začínají na určité znaky, obsahují slovo atd.). |
− | == | + | == Zpracování žolíkových znaků == |
− | Žolíkové znaky | + | Žolíkové znaky, které jsou uvedeny na příkazovém řádku, zpracovává použitý ''shell''. Programu jsou předány již expandované parametry. Tímto způsobem je dosaženo jednotného zpracování parametrů pro spouštěné příkazy (na rozdíl od DOSu a Windows, kde si je zpracovává každý program sám a dochází tak k rozdílům a nejednotnostem). |
+ | |||
+ | == Význam přípony ve jméně souboru == | ||
+ | Jméno souboru nemá v unixových systémech strukturu a jádro operačního systému přípony nijak nevyužívá. Proto jsou přípony pouze věcí dohody, případně slouží pro uživatele jako vodítko, co je v daném souboru obsaženo. V grafických prostředích slouží přípony pro asociaci s aplikacemi. Z těchto důvodů se při použití žolíkových znaků pracuje s celým jménem (bez rozlišení přípony), což je zřejmý rozdíl od DOSu nebo Windows (kde přípona slouží k rozlišení spustitelných souborů, což způsobuje opakované bezpečnostní problémy). | ||
:{| class=wikitable | :{| class=wikitable | ||
Řádka 16: | Řádka 19: | ||
| align=center | <code>[abc]</code> | | align=center | <code>[abc]</code> | ||
| Jeden z uvedených znaků (zde a, b nebo c) | | Jeden z uvedených znaků (zde a, b nebo c) | ||
+ | |- | ||
+ | | align=center | <code>[a-e]</code> | ||
+ | | Jeden z rozsahu znaků (zde a až e), moderní shelly respektují národní znaky (locale) | ||
|- | |- | ||
| align=center | <code>[^abc]</code> | | align=center | <code>[^abc]</code> | ||
− | | Žádný z uvedených znaků (cokoliv kromě a, b nebo c) | + | | Žádný z uvedených znaků (cokoliv kromě a, b nebo c), lze též využít rozsah |
|- | |- | ||
| align=center | <code>{slovo1,slovo2}</code> | | align=center | <code>{slovo1,slovo2}</code> | ||
Řádka 24: | Řádka 30: | ||
|} | |} | ||
− | + | == Příklady == | |
ls /bin/*sh # vypíše z adresáře ''/bin'' vše, co končí na ''sh'' | ls /bin/*sh # vypíše z adresáře ''/bin'' vše, co končí na ''sh'' | ||
− | |||
ls /bin/[bcd]* # vypíše z adresáře ''/bin'' vše začínající na ''b'', ''c'' nebo ''d'' | ls /bin/[bcd]* # vypíše z adresáře ''/bin'' vše začínající na ''b'', ''c'' nebo ''d'' | ||
− | ls -d /etc/[ab]* # vypíše z adresáře ''/etc'' vše začínající na ''a'' nebo ''b | + | ls /bin/[a-d]* # vypíše z adresáře ''/bin'' vše začínající na ''a'', ''b'', ''c'' nebo ''d'' |
+ | ls /bin/[a-zA-Z] # vypíše z adresáře ''/bin'' vše začínající na písmeno | ||
+ | ls -d /etc/[ab]* # vypíše z adresáře ''/etc'' vše začínající na ''a'' nebo ''b' | ||
ls /bin/[^abc]* # vypíše z adresáře ''/bin'' vše, co nezačíná na ''a'', ''b'' nebo ''c'' | ls /bin/[^abc]* # vypíše z adresáře ''/bin'' vše, co nezačíná na ''a'', ''b'' nebo ''c'' | ||
+ | ls *{txt,doc} # vypíše v aktuálním adresáři vše končící na ''.txt'' nebo ''.doc'' | ||
ls /{bin,sbin}/c* # vypíše z adresářů ''/bin'' a ''/sbin'' vše, co začíná na ''c'' | ls /{bin,sbin}/c* # vypíše z adresářů ''/bin'' a ''/sbin'' vše, co začíná na ''c'' | ||
ls /{,s}bin/c* # vypíše z adresářů ''/bin'' a ''/sbin'' vše, co začíná na ''c'' | ls /{,s}bin/c* # vypíše z adresářů ''/bin'' a ''/sbin'' vše, co začíná na ''c'' | ||
+ | ls {,/usr}/bin/z* # vypíše z adresářů /bin a /usr/bin vše, co začíná na písmeno ''z'' | ||
− | == | + | == Externí odkazy == |
− | : | + | * http://docs.linux.cz/programming/interpreted/bashdoc-1.4/bashs38.html |
− | + | * http://www.abclinuxu.cz/blog/firefox_bal/2008/10/bash-a-pseudoznaky-pattern-matching | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | [[Kategorie:Práce s Linuxem]] |
Aktuální verze z 25. 11. 2009, 16:51
Žolíkové znaky slouží k tomu, aby nebylo nutné uvádět všechny parametry příkazů explicitně, ale bylo možné použít obecné zadání. Lze například pracovat se všemi soubory s příponou txt
nebo se všemi, které vyhovují jiným podmínkám (začínají na určité znaky, obsahují slovo atd.).
Zpracování žolíkových znaků
Žolíkové znaky, které jsou uvedeny na příkazovém řádku, zpracovává použitý shell. Programu jsou předány již expandované parametry. Tímto způsobem je dosaženo jednotného zpracování parametrů pro spouštěné příkazy (na rozdíl od DOSu a Windows, kde si je zpracovává každý program sám a dochází tak k rozdílům a nejednotnostem).
Význam přípony ve jméně souboru
Jméno souboru nemá v unixových systémech strukturu a jádro operačního systému přípony nijak nevyužívá. Proto jsou přípony pouze věcí dohody, případně slouží pro uživatele jako vodítko, co je v daném souboru obsaženo. V grafických prostředích slouží přípony pro asociaci s aplikacemi. Z těchto důvodů se při použití žolíkových znaků pracuje s celým jménem (bez rozlišení přípony), což je zřejmý rozdíl od DOSu nebo Windows (kde přípona slouží k rozlišení spustitelných souborů, což způsobuje opakované bezpečnostní problémy).
Konstrukce Funkce *
Jakékoliv znaky (i žádný znak) ?
Jakýkoliv právě jeden znak [abc]
Jeden z uvedených znaků (zde a, b nebo c) [a-e]
Jeden z rozsahu znaků (zde a až e), moderní shelly respektují národní znaky (locale) [^abc]
Žádný z uvedených znaků (cokoliv kromě a, b nebo c), lze též využít rozsah {slovo1,slovo2}
Jedno z uvedených slov (zde slovo1 nebo slovo2)
Příklady
ls /bin/*sh # vypíše z adresáře /bin vše, co končí na sh ls /bin/[bcd]* # vypíše z adresáře /bin vše začínající na b, c nebo d ls /bin/[a-d]* # vypíše z adresáře /bin vše začínající na a, b, c nebo d ls /bin/[a-zA-Z] # vypíše z adresáře /bin vše začínající na písmeno ls -d /etc/[ab]* # vypíše z adresáře /etc vše začínající na a nebo b' ls /bin/[^abc]* # vypíše z adresáře /bin vše, co nezačíná na a, b nebo c ls *{txt,doc} # vypíše v aktuálním adresáři vše končící na .txt nebo .doc ls /{bin,sbin}/c* # vypíše z adresářů /bin a /sbin vše, co začíná na c ls /{,s}bin/c* # vypíše z adresářů /bin a /sbin vše, co začíná na c ls {,/usr}/bin/z* # vypíše z adresářů /bin a /usr/bin vše, co začíná na písmeno z