BASH: Žolíkové znaky: Porovnání verzí
(→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>></code> je existující soubor přepsán. Jestliže soubor neexistuje, je vytvořen. Přesměrování pomocí <code>>></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ě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