C shell

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

C shell (csh) je unixový shell vyvinutý Billem Joyem pro BSD Unix.

Byl původně odvozen z šestého vydání Unixu /bin/sh (kterým byl Thompson shell), předchůdce Bourne shell. Jeho syntaxe je silně ovlivněná programovacím jazykem C (odtud pochází název shellu). C shell přidal mnoho vylepšení oproti Bourne shell, jako například aliasy a historii příkazů.

V současné době není původní C shell v Unixu široce využíván; byl nahrazen jinými (částečně kompatibilními) shelly, jako je Tenex C shell (tcsh). Nezávisle vyvinutý a zmodernizovaný C shell, vytvořený Nicolem Hamiltonem, také přežil ve Windows ve formě Hamilton C shell.

Vlastnosti[editovat | editovat zdroj]

Zástupné znaky[editovat | editovat zdroj]

Zástupné znaky slouží k usnadnění zadávání argumentů. Jejich použití je zcela stejné jako u shellu standardního:

  • * – vyhoví libovolný řetězec, př. a* → a, ab
  • ? – vyhoví jeden libovolný znak, př. a? → aa, ab, ac
  • [abc] – vyhoví libovolný znak z uvedených znaků, př. a[ab] → aa, ab
  • \ – zbavuje následující znak jeho speciálního významu

Důležité je, že soubory se jmény začínající tečkou jsou zpracovány jinak. Je to proto, aby při použití zástupných znaků nemohly být omylem postiženy soubory . (což je aktuální adresář) nebo .. (nadřazený adresář) ani další soubory začínající tečkou.

Přesměrování vstupu a výstupu příkazu[editovat | editovat zdroj]

Standardní vstup/výstup může být přesměrován do souboru symboly:

  • < soubor – vstupu je přiřazen soubor
  • > soubor – výstupu je přiřazen soubor
  • >> soubor – výstup je přiřazen na konec souboru
  • >& soubor – výstup a chybový výstup jsou přesměrovány do souboru
  • >>& soubor – výstup a chybový výstup jsou připojeny na konec souboru

Výhody[editovat | editovat zdroj]

Výhodou C shellu je, že umožňuje chránit soubory před nechtěným přepsáním při špatném přesměrování výstupu. Další výhodou je, že pokud máme nastavenou proměnnou noclobber, tak nám C shell odmítne přesměrovat výstup příkazu do již existujícího souboru.

Práce na popředí a pozadí[editovat | editovat zdroj]

Máme-li zadán jeden nebo více příkazů na příkazovém řádku, C shell z nich vytvoří jednotku zvanou job. Pokud je příkazový řádek ukončen znakem &, je job spuštěn na pozadí. Job spuštěný na pozadí probíhá zároveň s jobem prováděným na popředí. Při spouštění jobu na pozadí vrací C shell číslo jobu (je zobrazeno v hranatých závorkách) a identifikační čísla procesů, z nichž je job složen.

Proměnné[editovat | editovat zdroj]

Hodnotou proměnné v C shellu je řetězec. Přiřazení hodnoty proměnné se provádí příkazem set. Samotný příkaz set bez argumentů vypíše hodnoty všech definovaných proměnných, které C shell používá ke své práci.

Přes proměnnou argv má autor scénáře přístup k jednotlivým argumentům – pozičním parametrům dané kopie C shellu. Proměnná cwd je absolutní jméno aktuálního adresáře. home obsahuje absolutní jméno domovského adresáře. V proměnné path hledá C shell příkazové soubory. prompt obsahuje řetězec, kterým dává C shellu výzvu k zadání příkazu. Ve status najdeme stavový příznak vrácený posledním skončeným programem. term označuje typ terminálu, ze kterého uživatel pracuje. user je jméno uživatele přihlašujícího se do systému.

Historie[editovat | editovat zdroj]

C shell je schopný zapamatovat si několik předcházejících příkazových řádků, které uživatel zadal, a tedy lze se k těmto příkazům vrátit nebo je upravit a použít je v pozměněné podobě. Počet příkazových řádků je dán obsahem proměnné history (obvykle je nastaven na hodnotu 10).

Související články[editovat | editovat zdroj]