Expansní operátory

Stránky: E-learning VŠCHT Praha
Kurz: Linux, shell
Kniha: Expansní operátory
Vytiskl(a): Nepřihlášený host
Datum: pondělí, 7. října 2024, 01.17

1. Expanse

Shell před samotným vykonáním příkazů uvedených v příkazové řádce provádí několik různých kontrol. Mezi ně patří například ověření pravidel syntaxe, tedy jestli zápis příkazů splňuje všechny požadované náležitosti, ale také kontroluje výskyt speciálních operátorů, které do jisté míry modifikují zadanou vstupní informaci a mohou mít tedy na chod programů zcela zásadní vliv. Tyto operátory se speciální funkcí se nazývají expansní operátory. Nejvýznamnější z expansních operátorů představíme v následujících kapitolách. Všechny uvedené expanse se provádějí zcela automaticky, ne vždy však uživatel potřebuje, aby se expanse určitého typu prováděla, proto existují i operátory pro potlačení expansí (viz kapitolu Potlačení expanse).


2. Expanse potlačení mezer

Expanse potlačení mezer kontroluje výskyt nadbytečných mezer v příkazovém řádku. Pokud shell při interpretaci příkazu narazí na výskyt nadbytečných mezer, pomocí této expanse je odstraní.



Je-li potřeba v příkazu záměrně zachovat vícenásobnou mezeru, lze využít některý z operátorů pro potlačení expanse (viz kapitolu Potlačení expanse).



3. Expanse cesty

viz kapitolu Wildcards, tedy operátory * (hvězdička), ? (otazník), [ ] (znak) a [: :] (znaková třída).


4. Expanse tildy

Symbol ~ (tilda) reprezentuje domovský adresář. Pomocí příkazu echo je možné nechat operátor tilda expandovat a vypsat cestu domovského adresáře aktuálně přihlášeného uživatele nebo jiného uživatele systému.



5. Aritmetická expanse

Aritmetická expanse $(( )) umožní v rámci příkazové řádky řešit jednoduché početní operace s celými čísly. V případě kombinace více operací ve výrazu se priorita vymezuje pomocí kulatých závorek. Povolené operace jsou

  • součet (+)
  • rozdíl (-)
  • součin (*)
  • podíl (/)
  • modulo (%) - zbytek po celočíselném dělení
  • mocnina (**)
  • inkrementace (++) - zvýšení hodnoty o 1
  • dekrementace (--) - snížení hodnoty o 1



Existuje starší zápis aritmetické expanse $[ ], který nepodporuje operaci přiřazení, jinak je plnohodnotnou náhradou.



6. Expanse složených závorek

Expanse složených závorek (angl. brace) se používá jako generátor hodnot na základě daného seznamu prvků. Seznam prvků může být dán

  • výčtem - jednotlivé prvky se oddělí čárkou
  • rozsahem - krajní prvky rozsahu se oddělí dvěmi tečkami



Tento typ expanse je možné do sebe vnořovat. Expanse pak postupně vytvoří všechny kombinace uvedených prvků.



7. Expanse parametru

Expanse parametru ${ } zajistí návrat hodnoty uložené pod názvem parametru. Nejčastěji se používá pro výpis hodnot proměnných.



8. Expanse příkazu

Expanse příkazu (angl. command substitution) $( ) umožní vykonat příkaz uvedený v expansi. Návratovou hodnotu provedené expanse je pak možné použít např. jako argument pro jiný příkaz.



Existuje starší alternativa této expanse zapisovaná pomocí zpětných uvozovek ` `. Její použití je plnohodnotně ekvivalentní.



9. Potlačení expanse

Všechny existující typy expansí je možné potlačit. Lze využít celkem tří operátory k potlačení všech typů expansí

  • \
  • " "
  • ' '

Operátor \ (zpětné lomítko) umí potlačit jeden speciální znak (symbol), který má funkci expanse. To znamená, týká se to především expanse mezery a operátorů expanse cesty, tzv. wildcards (*, ?). Využití operátoru \ způsobí potlačení expanse následujícího operátoru a symbol daného operátoru se chová jako prostý znak.



Operátor " " (dvojité uvozovky) umí potlačit všechny expanse kromě těch, které jsou uvozeny symbolem $.



Operátor ' ' (jednoduché uvozovky) umí potlačit všechny expanse.