C shell

programovací jazyk

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

C shell
VývojářBill Joy
Operační systémBSD
GNU/Linux
Vyvíjeno vC
Typ softwaruunixový shell, programovací jazyk, command line interface language a svobodný software
Licence3-clause BSD License
Některá data mohou pocházet z datové položky.

Byl původně odvozen z šestého vydání Unixu /bin/sh (kterým byl Thompson shell), předchůdce Bourne shellu. 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ů.

Protože mnoho z vlastností C shellu bylo implementováno do jiných shellů, původní C shell je používán minimálně; 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 shellu.

Vlastnosti editovat

Zástupné znaky editovat

Zástupné znaky (žolíky) slouží k usnadnění zadávání argumentů. Jejich použití je 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ími tečkou nevyhovují žolíkovému zápisu *. 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. Pokud chceme pracovat se soubory, jejichž jméno začíná tečkou a vyhnout se uvedeným dvěma položkám pro aktuální a nadřízený adresář, je třeba použít složitější zápis; jednou z možností je .[^.]*, který ovšem nepostihuje soubory, jejichž jména začínají dvěma tečkami.

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

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

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

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

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

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).

Kritika editovat

Tom Christiansen ve svém článku „Csh Programming Considered Harmful“ kritizuje některé nedomyšlenosti návrhu C shellu a chyby jeho historických implementací. Dospívá k názoru, že by se C shell neměl používat pro programování skriptů.[1]

Odkazy editovat

Reference editovat

  1. CHRISTIANSEN, Tom, 1994. Csh Programming Considered Harmful [online]. 1994. Dostupné online. 

Externí odkazy editovat

  • Csh - The C Shell – stránka podrobně rozebírající kladné i záporné vlastnost C shellu.