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

Z Milan Kerslager
Přejít na: navigace, hledání
(Přesměrování: doplnění)
m (Příklady: fix)
Řádka 58: Řádka 58:
  
 
=== Příklady ===
 
=== Příklady ===
Při přesměrování standardního výstupu pomocí znaku > je existující soubor přepsán. Jestliže soubor neexistuje, je vytvořen. Přesměrování pomocí >> přidává za konec existujícího souboru. Pokud soubor neexistuje, je vytvořen.
+
Při přesměrování standardního výstupu pomocí znaku <code>&gt;</code> je existující soubor přepsán. Jestliže soubor neexistuje, je vytvořen. Přesměrování pomocí <code>&gt;&gt;</code> přidává za konec existujícího souboru. Pokud soubor neexistuje, je vytvořen.
  
 
  ls /bin > text.txt
 
  ls /bin > text.txt
Řádka 64: Řádka 64:
 
  echo na strejdu >> text.txt
 
  echo na strejdu >> text.txt
  
Většina programů považuje za svůj standardní vstup soubory, které jsou předány na příkazovém řádku jako parametry. Některé programy však toto vylepšení nemají implementováno a vždy předpokládají vstup na standardním vstupu. V následujícím příkladu je nejprve vytvořen soubor <code>text.txt</code> se dvěma řádky a pomocí příkazu <code>hexdump</code> je provedena inspekce jeho obsahu. Všimněte si, že znak konce řádku (<code>\n</code>) je ve výsledném unixovém souboru zaznamenán jako řídící znak LF (hexadecimálně <code>0x0A</code>). Následně je soubor převeden do formátu DOS/WINDOWS příkazem <code>unix2dos</code> a zaznamenán do souboru <code>dos.txt</code>. V něm jsou na konci řádku používány znaky CR/LF (<code>0x0D</code>, <code>0x0A</code>), jak dokládá jeho opětovná analýza příkazem <code>hexdump</code>. V příkladu je tučně zvýrazněn vstup od uživatele a znak $ (dolar) reprezentuje výzvu shellu (prompt).
+
Většina programů považuje za svůj standardní vstup soubory, které jsou předány na příkazovém řádku jako parametry. Některé programy však toto vylepšení nemají implementováno a vždy předpokládají vstup na standardním vstupu. V následujícím příkladu je nejprve vytvořen soubor <code>text.txt</code> se dvěma řádky a pomocí příkazu <code>hexdump</code> je provedena inspekce jeho obsahu. Přechod na nový řádek je zajištěn tak, že u příkazu <code>echo</code> způsobí přepínač <code>-e</code> interpretaci sekvence <code>\n</code> v tištěném řetězci jako přechod na nový řádek. Všimněte si, že znak konce řádku je ve výsledném unixovém souboru zaznamenán jako řídící znak LF (hexadecimálně <code>0x0A</code>). Následně je soubor <code>text.txt</code> převeden do formátu DOS/WINDOWS příkazem <code>unix2dos</code> a zaznamenán do souboru <code>dos.txt</code>. V něm jsou na konci řádku používány znaky CR/LF (<code>0x0D</code>, <code>0x0A</code>), jak dokládá jeho opětovná analýza příkazem <code>hexdump</code>. V příkladu je tučně zvýrazněn vstup od uživatele a znak $ (dolar) reprezentuje výzvu shellu (prompt).
  
 
  $ '''/bin/echo -e "prvni\ndruhy" > text.txt'''
 
  $ '''/bin/echo -e "prvni\ndruhy" > text.txt'''

Verze z 19. 10. 2009, 06:56

Žolíkové znaky, přesměrování a kolony jsou základním nástrojem, pomocí kterého se z příkazového řádku stává mocný a výkonný nástroj. Základní příkazy Unixu je možné používat flexibilně, kombinovat jejich schopnosti a spojovat je jich schopnosti do větších celků.

Žolíkové znaky

Žolíkové znaky slouží k tomu, aby nebylo nutné uvádět všechny parametry příkazy 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.).

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)
[^abc] Žádný z uvedených znaků (cokoliv kromě a, b nebo c)
 {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 *{txt,doc}         # vypíše v aktuálním adresáři vše končící na .txt nebo .doc
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/[^abc]*       # vypíše z adresáře /bin vše, co nezačíná na a, b nebo 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

Přesměrování

Konstrukce Funkce
> Přesměrování standardního výstupu (vytvoří nebo přemaže existující soubor)
>> Přesměrování standardního výstupu (vytvoří nebo přidá za konec existujícího souboru)
< Přesměrování standardního vstupu
2>&1 Spojení standardního chybového výstupu se standardním výstupem
2> Přesměrování do standardního chybového výstupu
<<MARK Here document

Příklady

Při přesměrování standardního výstupu pomocí znaku > je existující soubor přepsán. Jestliže soubor neexistuje, je vytvořen. Přesměrování pomocí >> přidává za konec existujícího souboru. Pokud soubor neexistuje, je vytvořen.

ls /bin > text.txt
echo kuk > text.txt
echo na strejdu >> text.txt

Většina programů považuje za svůj standardní vstup soubory, které jsou předány na příkazovém řádku jako parametry. Některé programy však toto vylepšení nemají implementováno a vždy předpokládají vstup na standardním vstupu. V následujícím příkladu je nejprve vytvořen soubor text.txt se dvěma řádky a pomocí příkazu hexdump je provedena inspekce jeho obsahu. Přechod na nový řádek je zajištěn tak, že u příkazu echo způsobí přepínač -e interpretaci sekvence \n v tištěném řetězci jako přechod na nový řádek. Všimněte si, že znak konce řádku je ve výsledném unixovém souboru zaznamenán jako řídící znak LF (hexadecimálně 0x0A). Následně je soubor text.txt převeden do formátu DOS/WINDOWS příkazem unix2dos a zaznamenán do souboru dos.txt. V něm jsou na konci řádku používány znaky CR/LF (0x0D, 0x0A), jak dokládá jeho opětovná analýza příkazem hexdump. V příkladu je tučně zvýrazněn vstup od uživatele a znak $ (dolar) reprezentuje výzvu shellu (prompt).

$ /bin/echo -e "prvni\ndruhy" > text.txt
$ hexdump -C text.txt
00000000  70 72 76 6e 69 0a 64 72  75 68 79 0a              |prvni.druhy.|
0000000c
$ unix2dos < text.txt > dos.txt
$ hexdump -C dos.txt
00000000  70 72 76 6e 69 0d 0a 64  72 75 68 79 0d 0a        |prvni..druhy..|
0000000e

Kolona

Konstrukce Funkce
| Vytvoření roury

Příklady