BASH: Žolíkové znaky
Ž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>&1Spojení standardního chybového výstupu se standardním výstupem 2>Přesměrování do standardního chybového výstupu <<MARKHere document
Příklady
Při přesměrování standardního výstupu pomocí znaku > je existující soubor přepsán. Přesměrování pomocí >> přidává za konec existujícího souboru. V obou případech platí, že 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 tak, že u příkazu echo je použit přepínač -e, který způsobí v tištěném řetězci interpretaci sekvence \n jako přechod na nový řádek. Následně je soubor text.txt převeden do formátu DOS/WINDOWS příkazem unix2dos a zaznamenán do souboru dos.txt.
/bin/echo -e "prvni\ndruhy" > text.txt unix2dos < text.txt > dos.txt
Pomocí příkazu hexdump je možné provést inspekci obou souborů a zjistit, že v unixovém souboru text.txt je zaznamenán řídící znak LF (hexadecimálně 0x0A) a v převedeném souboru dos.txt je ve formátu DOS/WINDOWS používána sekvence CR/LF (0x0D, 0x0A). V příkladu je tučně zvýrazněn vstup od uživatele a znak $ (dolar) reprezentuje výzvu shellu (prompt):
$ hexdump -C text.txt 00000000 70 72 76 6e 69 0a 64 72 75 68 79 0a |prvni.druhy.| 0000000c $ 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