Rozšíření prostředí
Při práci v shellu se sady nebo rozsahy informací často opakují. Rozšíření shellu pomáhá generovat velké množství tokenů shellu pomocí kompaktní syntaxe. Rozšíření se provádí na příkazovém řádku po rozdělení příkazu na tokeny. Z mnoha dostupných rozšíření je název cesty, název souboru a rozšíření složených závorek vysvětlen výše.
Rozšíření názvu cesty
Rozšíření názvu cesty zjednodušuje změny umístění v hierarchii adresářů. Rozšíření názvu cesty zahrnuje:
– tildu (~) znak, který představuje absolutní cestu k domovskému adresáři aktuálního uživatele
– Znak vlnovky (~) s uživatelským jménem, které představuje domovský adresář zadaného uživatele
– pomlčka ( -) znak, který představuje předchozí pracovní adresář
Zvažte následující příklady pro každý znak rozšíření:
1. Změňte adresáře na dir1 pomocí znaku tilda (~).
$ cd ~/dir1 $ pwd /home/user/dir1/
2. Změňte adresáře na domovský adresář uživatele pomocí znaku tilda (~) následovaného uživatelským jménem.
$ cd ~user $ pwd /home/user
3. Přepínejte mezi uživatelským a tmp adresářem pomocí rozšiřujícího znaku –.
$ cd $ pwd /home/user
$ cd /tmp $ pwd /tmp
$ cd - /export/home/user1 $ cd - /tmp
Rozšíření názvu souboru
Rozšíření názvu souboru jsou:
- Hvězdička (*)
- Znak otazníku (?)
- Znaky hranatých závorek ([])
1. Hvězdička (*) Znak
Rozšiřující znak hvězdička (*) se také nazývá zástupný znak a představuje nula nebo více znaků, kromě úvodní tečky (.) skrytého souboru. Například vypište všechny soubory a adresáře, které začínají písmenem f následovaným nulou nebo více dalšími znaky.
$ ls f* file.1 file.2 file.3 file4
Dalším příkladem je vypsání všech souborů a adresářů, které končí číslem 3, kterému předchází nula nebo více znaků.
$ ls *3 file.3 file3
2. Otazník (?) Znak
Znak otazníku (?) se také nazývá zástupný znak a představuje libovolný jednotlivý znak kromě úvodní tečky (.) skrytého souboru. Například vypište všechny soubory a adresáře, které začínají řetězcem dir a za kterým následuje jeden další znak.
$ ls dir? dir1: coffees fruit trees dir2: beans notes recipes
Pokud žádné soubory neodpovídají položce se znakem otazníku (?), zobrazí se chybová zpráva.
$ ls z? z?: No such file or directory
3. Hranatá závorka ([]) Znaky
Hranatá závorka ([] ) znaky představují sadu nebo rozsah znaků pro jednu pozici znaku.
– Sada znaků je libovolný počet konkrétních znaků, například [acb]. Postavy v sadě nemusí být nutně v libovolném pořadí. Například [abc] je totéž jako [cab].
– Rozsah znaků je řada uspořádaných znaků.
- Rozsah uvádí první znak následovaný pomlčkou (-) a poté poslední znak, například [a–z] nebo [0–9].
- Při zadávání rozsahu uspořádejte znaky v pořadí, v jakém se mají objevit ve výstupu.
- Například použijte [A–Z] nebo [a–z] k vyhledání jakýchkoli velkých nebo malých písmen abecedy.
Například vypište všechny soubory a adresáře, které začínají písmeny a až f.
$ ls [a-f]* brands dante_1 file.1 file2 file4 celery feathers file1 file.3 fruit dante feathers_6 file.2 file3 fruit2
Například vypište všechny soubory a adresáře, které začínají písmeny f nebo p.
$ ls [fp]* perm file.1 file.2 file.3 file4 fruit2 feathers_6 file1 file2 file3 fruit
Rozšíření závorky
Expanze složená závorka {} je mechanismus, kterým lze generovat libovolné řetězce. Vzory, které mají být rozbaleny složenými závorkami, mají formu volitelné preambule, po níž následuje buď řada řetězců oddělených čárkami, nebo sekvenční výraz mezi párem složených závorek, za kterým následuje volitelný postscript. Preambule „a“ je uvedena před každým řetězcem obsaženým ve složených závorkách a ke každému výslednému řetězci se pak připojí postscriptum „e“ s rozšířením zleva doprava.
$ echo a{d,c,b}e ade ace abe