BASH: Žolíkové znaky: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
m (+kat)
(Doplnění)
 
(Nejsou zobrazeny 3 mezilehlé verze od stejného uživatele.)
Řádka 1: Řádka 1:
 
'''Ž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.).
 
'''Ž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, 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 13: Řá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 | &nbsp;<code>{slovo1,slovo2}</code>&nbsp;
 
| align=center | &nbsp;<code>{slovo1,slovo2}</code>&nbsp;
Řádka 24: Řádka 33:
 
  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 *{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 ==
 
== Externí odkazy ==

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

Externí odkazy