C shell
C shell (csh) je unixový shell vyvinutý Billem Joyem pro BSD Unix.
Vývojář | Bill Joy |
---|---|
Operační systém | BSD GNU/Linux |
Vyvíjeno v | C |
Typ softwaru | unixový shell, programovací jazyk, command line interface language a svobodný software |
Licence | 3-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
editovatZástupné znaky
editovatZá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
editovatStandardní 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
editovatVý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í
editovatMá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é
editovatHodnotou 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
editovatC 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
editovatTom 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
editovatReference
editovat- ↑ CHRISTIANSEN, Tom, 1994. Csh Programming Considered Harmful [online]. 1994 [cit. 2023-04-22]. Dostupné v archivu pořízeném dne 2023-03-23.
Externí odkazy
editovat- Csh - The C Shell – stránka podrobně rozebírající kladné i záporné vlastnost C shellu.