BASH: Žolíkové znaky: Porovnání verzí
(Doplnění) |
(→Přesměrování: doplnění) |
||
Řádka 46: | Řádka 46: | ||
| align=center | <code><</code> | | align=center | <code><</code> | ||
| Přesměrování standardního vstupu | | Přesměrování standardního vstupu | ||
− | |||
− | |||
− | |||
|- | |- | ||
| align=center | <code>2>&1</code> | | align=center | <code>2>&1</code> | ||
Řádka 55: | Řádka 52: | ||
| align=center | <code>2></code> | | align=center | <code>2></code> | ||
| Přesměrování do standardního chybového výstupu | | Přesměrování do standardního chybového výstupu | ||
+ | |- | ||
+ | | align=center | <code><<MARK</code> | ||
+ | | Here document | ||
|} | |} | ||
=== 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. | ||
+ | |||
+ | 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 <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). | ||
+ | |||
+ | $ '''/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 == | == Kolona == |
Verze z 19. 10. 2009, 06:48
Ž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. Všimněte si, že znak konce řádku (\n
) je ve výsledném unixovém souboru zaznamenán jako řídící znak LF (hexadecimálně 0x0A
). Následně je soubor 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