Linux csh-kommando



csh-kommando

Unix-liknande operativsystem, csh kommandot startar C-skalet, är en kommandotolk med en syntax inspirerad av C programmeringsspråk .

Beskrivning

csh är en kommandospråkstolk med många kraftfulla funktioner, inklusive en historikmekanism (se Historikbyten ), jobbkontrollanläggningar (se Jobb ), interaktiv filnamn och Användarnamn slutförande (se Slutförande av filnamn ) och en C-liknande syntax. Den används både som en interaktiv logga in skal och en kommandoprocessor för skalskript.

Om det första argumentet (argument 0) till skalet är ett streck (' - '), då csh körs som ett inloggningsskal. Ett inloggningsskal kan också anges genom att anropa skalet med -l flagga som enda argument.

Syntax

csh [-bcefimnstVvXx] [  argument  ...]
csh [-l]

alternativ

-b Denna flagga tvingar en ' ha sönder 'från alternativbearbetning, vilket gör att ytterligare skalargument behandlas som icke-alternativargument. De återstående argumenten tolkas inte som skalalternativ. Detta kan användas för att skicka alternativ till ett skalskript utan förvirring eller eventuell störning. Skalet kör inte ett set-user-ID-skript utan detta alternativ.
-c Kommandon läses från följande argument -c , som måste vara närvarande. Eventuella återstående argument placeras i argv .
-är Skalet avslutas om något anropat kommando avslutas onormalt eller ger en utgångsstatus som inte är noll.
-f Skalet startar snabbare eftersom det varken söker efter eller kör kommandon från filen .cshrc i inkallarens hemkatalog. Observera att om miljöfaktor HEM är inte inställt är snabb start standard.
-i Skalet är interaktivt och uppmanas till sin toppnivåingång, även om det inte verkar vara en terminal. Skal är interaktiva utan detta alternativ om deras in- och utgångar är terminaler.
-l Skalet är ett inloggningsskal (men bara om -l är den enda angivna flaggan).
-m Läsa .cshrc , oavsett dess ägare och grupp. Detta alternativ är farligt och bör endast användas av superanvändare .
-n Kommandon är analyserad , men inte utförd. Detta är användbart för att kontrollera syntaxen för skalskript. När det används interaktivt kan skalet avslutas genom att trycka på kontroll-D (slutet av filtecken), eftersom exit inte fungerar.
-s Kommandoinmatningen hämtas från standardingång .
-t En enda ingångsrad läses och körs. Ett motsatt snedstreck ( ) kan användas för att undkomma ny linje i slutet av denna linje och fortsätt till en annan linje.
-V Orsakar det närmare variabel att ställas in redan innan .cshrc utförs.
-v Orsakar att den närmare variabeln ska ställas in, med den effekten att kommandoeinmatningen ekas efter historikbyte.
-X Orsakar att ekovariabeln ska ställas in redan innan .cshrc utförs.
-x Orsakar kastade ut variabel som ska ställas in så att kommandon återges omedelbart före körning.

Efter att flaggargument har bearbetats, om argument kvarstår men inget av -c , -i , -s , eller -t alternativ gavs, tas det första argumentet som namnet på en kommandofil som ska köras. Skalet öppnar den här filen och sparar sitt namn för eventuell ersättning genom $ 0 . Eftersom många system använder antingen standardversion 6 eller version 7 skal vars skal skript inte är kompatibla med detta skal, kommer skalet att utföra ett sådant 'standard' -skal om det första tecknet i ett skript inte är ett hashmärke ( # ); dvs. om manuset inte börjar med en kommentar. Återstående argument initialiserar variabeln argv .

kan du ladda ner filmer från youtube

En instans av csh börjar med att köra kommandon från filen /etc/csh.cshrc och, om detta är ett inloggningsskal, /etc/csh.login . Det kör sedan kommandon från .cshrc i invokers hemkatalog och, om detta är ett inloggningsskal, filen .logga in på samma plats. Det är typiskt för användare på CRT övervakar för att sätta kommandot ' stty crt i deras .login-fil och även åberopa tset där.

I det normala fallet kommer skalet att börja läsa kommandon från terminalen och uppmanas med %. Bearbetning av argument och användningen av skalet för att bearbeta filer som innehåller kommandoskript beskrivs nedan.

Skalet utför upprepade gånger följande åtgärder: en rad med kommandainmatning läses och delas in i 'ord'. Denna ordsekvens placeras i listan med kommandot historik och analyseras. Slutligen körs varje kommando i den aktuella raden.

När ett inloggningsskal avslutas kör det kommandon från filerna .logga ut i användarens hemkatalog och /etc/csh.logout .

Lexikalisk struktur

Skalet delar inmatningslinjer i ord i tomma och flikar med följande undantag. Tecknen & , | , ; , < , > , ( och ) bilda separata ord. Om det fördubblats && , || , << , eller >> , dessa par bildar enstaka ord. Dessa parser-metatecken kan göras till en del av andra ord, eller ha sin speciella betydelse förhindrad, genom att föregripa dem med en backslash ( ). En ny linje som föregås av a motsvarar ett tomt.

Strängar inneslutna i matchade par citat, '' , '' , eller '' , bilda delar av ett ord; metatecken i dessa strängar, inklusive blanksteg och flikar, bildar inte separata ord. Dessa citat har semantik som kommer att beskrivas senare. Inom par av '' eller '' tecken, en ny rad föregången av a ger en riktig newline-karaktär.

När skalets ingång inte är en terminal, kommer tecknet # introducerar en kommentar som fortsätter till slutet av inmatningsraden. Denna speciella betydelse förhindras när den föregås av och i citat med '' , '' och '' .

Kommandon

Ett enkelt kommando är en ordsekvens, den första som anger kommandot som ska köras. Ett enkelt kommando eller en sekvens av enkla kommandon åtskilda av | karaktärer bildar en pipeline. Utgången för varje kommando i en pipeline är ansluten till nästa ingång. Sekvenser av rörledningar kan separeras med ; och exekveras sedan sekventiellt. En sekvens av rörledningar kan köras utan att direkt vänta på att den ska avslutas genom att följa den med en & .

Något av ovanstående kan placeras i ( ) för att bilda ett enkelt kommando (som till exempel kan vara en komponent i en rörledning). Det är också möjligt att separera rörledningar med || eller && visar, som i C-språket, att det andra endast ska köras om det första misslyckas eller lyckas, respektive. Ser Uttryck .

Jobb

Skalet kopplar ett jobb till varje rörledning. Den håller en tabell över aktuella jobb, skrivs ut med jobbkommandot och tilldelar dem små heltal. När ett jobb startas asynkront med & , skriver skalet ut en linje som ser ut som:

[1] 1234

visar att jobbet som startades asynkront var jobbnummer 1 och hade en (toppnivå) process, vars process-ID var 1234 .

Om du kör ett jobb och vill göra något annat kan du slå ^ Z (kontroll-Z), som skickar en SIGSTOP signal till det aktuella jobbet. Skalet visar då normalt att jobbet har 'Stoppats' och skriver ut en ny uppmaning. Du kan sedan manipulera det här jobbet och lägga det i bakgrunden med bg kommandot, eller kör några andra kommandon och så småningom ta jobbet tillbaka i förgrunden med kommandot fg. A ^ Z träder i kraft omedelbart och är som ett avbrott genom att väntande utdata och oläst inmatning kastas när den skrivs. Det finns en annan specialnyckel ^ Och som inte genererar en SIGSTOP tills ett program försöker läsa det. Denna begäran kan med fördel skrivas framåt när du har förberett några kommandon för ett jobb som du vill stoppa när det har läst dem.

Ett jobb som körs i bakgrunden slutar om det försöker läsa från terminalen. Bakgrundsjobb får normalt producera utdata, men detta kan inaktiveras genom att ge kommandot stty tostop . Om du ställer in detta tty alternativet, kommer bakgrundsjobb att sluta när de försöker producera utdata som de gör när de försöker läsa inmatning.

Det finns flera sätt att referera till jobb i skalet. Karaktären % introducerar ett jobbnamn. Om du vill hänvisa till jobb nummer 1 kan du namnge det som % 1 . Att bara namnge ett jobb tar det i förgrunden; så, % 1 är en synonym för fg% 1 och tar tillbaka jobb nummer 1 i förgrunden. På samma sätt säger % 1 & återupptar jobb nummer 1 i bakgrunden. Jobb kan också namnges efter prefix av strängen som skrivs in för att starta dem, om dessa prefix är entydiga. Således %före detta skulle normalt starta om ett avstängt ex-jobb, om det bara fanns ett avstängt jobb vars namn började med strängen 'ex'. Det är också möjligt att säga %? sträng , som anger ett jobb vars text innehåller sträng , om det bara finns ett sådant jobb.

Skalet behåller en uppfattning om nuvarande och tidigare jobb. I utdata om jobb markeras det aktuella jobbet med a + och det tidigare jobbet med en - . Förkortningen % + avser det nuvarande jobbet och % - hänvisar till det tidigare jobbet. För nära analogi med syntaxen för historikmekanismen (beskrivs nedan), %% är också en synonym för det aktuella jobbet.

Arbetskontrollmekanismen kräver att stty alternativet nytt ställs in. Det är en artefakt från en ny implementering av tty-drivrutinen som gör det möjligt att generera avbrottstecken från tangentbordet för att be jobb att sluta. Ser stty för detaljer om inställningsalternativ i den nya tty-drivrutinen.

Statusrapportering

Skalet lär sig omedelbart när en process ändrar tillstånd. Det informerar dig normalt när ett jobb blockeras så att inga ytterligare framsteg är möjliga, men bara innan det skrivs ut en uppmaning. Detta görs så att det annars inte stör ditt arbete. Om du emellertid ställer in skalvariabeln meddelar du omedelbart om statusändringar i bakgrundsjobb. Det finns också ett skalkommando meddela som markerar en enda process så att dess statusändringar kommer att rapporteras omedelbart. Som standard meddela markerar den aktuella processen; säga meddela efter att ha startat ett bakgrundsjobb för att markera det.

När du försöker lämna skalet medan jobb stoppas kommer du att varnas för att du har stoppat jobb. Du kan använda jobb befaller att se vad de är. Om du försöker avsluta omedelbart omedelbart kommer varningen inte att varna dig en gång till och de avbrutna jobben kommer att avslutas.

Slutförande av filnamn

När funktionen för komplettering av filnamn är aktiverad genom att ställa in skalvariabeln filec (ser uppsättning ), csh kommer att interaktivt komplettera filnamn och användarnamn från unika prefix när de matas in från terminalen följt av escape-tecknet (Escape-tangenten, eller kontrollera-[ ). Till exempel om den aktuella katalogen ser ut

DSC.OLD bin cmd lib xmpl.c DSC.NEW chaosnet cmtest mail xmpl.o bench class dev mbox xmpl.out 

och ingången är

% vi ch    

csh kommer att slutföra prefixet ' ch 'till det enda matchande filnamnet' kaosnät ', ändra inmatningsraden till

% vi chaosnet

Men givet

% vi D    

csh kommer bara att utöka inmatningen till

% vi DSC.

och kommer att ljuda terminalklockan för att indikera att expansionen är ofullständig, eftersom det finns två filnamn som matchar prefixet D .

Om ett delvis filnamn följs av filens slut-tecken (vanligtvis kontroll-D ), istället för att fylla i namnet, csh kommer att lista alla filnamn som matchar prefixet. Till exempel ingången

% vi D    

orsakar alla filer som börjar med D att listas:

DSC.NEW DSC.OLD

medan ingångsraden förblir oförändrad.

Samma system för flykt och slutet av filen kan också användas för att utvidga partiella användarnamn, om ordet som ska slutföras (eller listas) börjar med tilde-tecknet ( ~ ). Till exempel att skriva

cd ~ro    

kan producera expansionen

cd ~root

Användningen av terminalklockan för att signalera fel eller flera matchningar kan förhindras genom att ställa in variabeln nobeep .

Normalt är alla filer i den aktuella katalogen kandidater för att slutföra namnet. Filer med vissa suffix kan uteslutas från övervägande genom att ställa in variabeln fignore till listan över suffix som ska ignoreras. Således, om fignore ställs in av kommandot

% set fignore = (.o .out)

sedan skriva

% vi x    

skulle resultera i slutförandet till

% vi xmpl.c

ignorerar filerna xmpl.o 'och' xmpl.out '. Men om den enda möjliga slutförandet kräver att inte ignorera dessa suffix, ignoreras de inte. Dessutom, fignore påverkar inte listningen av filnamn efter kontroll-D . Alla filer listas oavsett suffix.

Historikbyten

Historikbyten placera ord från föregående kommandoinmatning som delar av nya kommandon, vilket gör det enkelt att upprepa kommandon, upprepa argument från ett tidigare kommando i det aktuella kommandot eller fixa stavfel i det tidigare kommandot med lite skrivning och hög grad av självförtroende. Historikbyten börjar med karaktären ! och kan börja var som helst i inmatningsströmmen (förutsatt att de inte häckar). Detta ! kan föregås av a för att förhindra dess speciella betydelse; för enkelhets skull, a ! tecken skickas oförändrat när det följs av en tom, flik, ny rad, = eller ( . Historikbyten inträffar också när en inmatningsrad börjar med ^ . Denna speciella förkortning beskrivs nedan. Alla inmatningsrader som innehåller historikersättning ersätts på terminalen innan den körs, eftersom den skulle ha skrivits utan historikersättning.

Kommandon från terminalen som består av ett eller flera ord sparas i historiklistan. Historiksubstitutionerna återinsätter ordsekvenser från dessa sparade kommandon i ingångsströmmen. Storleken på historiklistan styrs av historia variabel; föregående kommando behålls alltid, oavsett värdet på historia variabel. Kommandon numreras sekventiellt från 1 .

Tänk på följande resultat från historia kommando:

09 write michael 10 ex write.c 11 cat oldwrite.c 12 diff *write.c

Kommandona visas med deras händelse nummer. Det är vanligtvis inte nödvändigt att använda händelsenummer, men det aktuella händelsenumret kan göras till en fråga genom att placera ett ! i snabbsträngen.

Med den aktuella händelsen 13 vi kan hänvisa till tidigare händelser efter evenemangsnummer !elva , relativt som i !-två (med hänvisning till samma händelse), med ett prefix av ett kommandoord som i ! d för evenemang 12 eller ! wri för evenemang 9 , eller av en sträng som finns i ett ord i kommandot som i !?liten? hänvisar också till händelse 9 . Dessa former, utan ytterligare förändring, återinföra orden för de angivna händelserna, var och en åtskilda av ett tomt. Som ett speciellt fall !! hänvisar till föregående kommando; Således !! ensam är en re-do.

För att välja ord från en händelse kan vi följa händelsens specifikation med a : och en beteckning för önskade ord. Orden på en inmatningsrad är numrerade från 0 , det första (vanligtvis kommandot) ordet är 0 , det andra ordet (första argumentet) är 1 etc. De grundläggande ordbeteckningarna är:

0 första (kommando) ord
n n argumentet
^ första argumentet; dvs 1
$ sista argumentet
% ord matchat med (omedelbart föregående)? s? Sök
x - Y ordintervall
- Y förkortar ” 0- Y ''
* förkortar ” ^ - $ ”, Eller ingenting om bara ett ord i händelse
x * förkortar ” x - $ ''
x - tycka om ' x * Men utelämnar ordet “ $ ''

De : att separera händelsespecifikationen från ordet designator kan utelämnas om argumentväljaren börjar med a ^ , $ , * , - , eller % . Efter den valfria ordbeteckningen kan en sekvens av modifierare placeras, var och en föregås av a : . Följande modifierare definieras:

h Ta bort en efterföljande sökvägskomponent och lämna huvudet.
r Ta bort en efterföljande .xxx-komponent och lämna rotnamnet.
är Ta bort allt utom tilläggsdelen .xxx.
s / l / r / Ersättning l för r .
t Ta bort alla ledande vägnamnskomponenter och lämna svansen.
& Upprepa föregående byte.
g Tillämpa ändringen en gång på varje ord, med prefix ovan; ägg&'.
till Tillämpa ändringen så många gånger som möjligt på ett enda ord och föregå ovanstående. Den kan användas tillsammans med 'g' för att tillämpa en substitution globalt.
sid Skriv ut den nya kommandoraden men kör inte den.
Vad Citera de ersatta orden, förhindra ytterligare utbyten.
x Tycka om ' Vad ', Men bryta in ord i tomma, flikar och nylinjer.

Om inte föregås av a g ändringen tillämpas endast på det första modifierbara ordet. Med utbyten är det ett fel att inget ord kan tillämpas.

Vänster sida av utbyten är inte vanliga uttryck i betydelsen av redaktörerna, men istället strängar. Vilket tecken som helst kan användas som avgränsare istället för / ; till citerar avgränsaren i l och r strängar. Karaktären & på höger sida ersätts med texten från vänster. A också citat & . EN NULL l ( // ) använder den tidigare strängen antingen från en l eller från en kontextuell skanningsträng s i !? s ? . Den efterföljande avgränsaren i utbytet kan utelämnas om en ny linje följer omedelbart liksom efterföljaren ? i en kontextuell genomsökning.

En historikreferens kan ges utan en händelsespecifikation; t.ex., ! $ . Här är referensen till föregående kommando såvida inte en tidigare historikreferens inträffade på samma rad, i vilket fall detta formulär upprepar föregående referens. Således ' !? foo? ^! $ 'ger de första och sista argumenten från kommandomatchningen' ? foo? '.

En speciell förkortning av en historikreferens inträffar när det första icke-tomma tecknet i en inmatningsrad är a ^ . Detta motsvarar ' !: s ^ 'ger en bekväm förkortning för att ersätta texten i föregående rad. Således ^ lb ^ lib fixar stavningen av ' lib i föregående kommando. Slutligen kan en historikbyte omges med { och } om det behövs för att isolera det från karaktärerna som följer. Således efter ls -ld ~ paul vi kanske gör !{la att göra ls -ld ~ paula , medan !de skulle leta efter ett kommando som börjar med ' de '.

Citat med 'och'

Citatet av strängar av '' och '' kan användas för att förhindra alla eller några av de återstående ersättningarna. Strängar inneslutna i '' förhindras från ytterligare tolkning. Strängar inneslutna i '' kan expanderas enligt beskrivningen nedan.

I båda fallen blir den resulterande texten (hela eller delar av) ett enda ord; endast i ett speciellt fall (se Kommandosubstitution , nedan) gör en '' citerad sträng ger delar av mer än ett ord; '' citerade strängar gör aldrig.

Aliasbyte

Skalet upprätthåller en lista med alias som kan skapas, visas och modifieras med kommandona alias och unalias. Efter att en kommandorad har skannats analyseras den i olika kommandon och det första ordet i varje kommando, från vänster till höger, kontrolleras för att se om det har ett alias. Om den gör det läses texten som är alias för det kommandot igen med historikmekanismen tillgänglig som om det kommandot var den föregående inmatningsraden. De resulterande orden ersätter kommandot och argumentlistan. Om ingen hänvisning görs till historiklistan lämnas argumentlistan oförändrad.

Om alias för ' ls ' är ' ls -l ', kommandot ls / usr skulle mappa till ls -l / usr , argumentlistan här är ostörd. Om alias för ' slå upp 'var' grep! ^ / etc / passwd 'då skulle uppslagsräkningen kartläggas till grep bill / etc / passwd .

Om ett alias hittas utförs ordtransformationen av inmatningstexten och aliaseringsprocessen börjar igen på den reformerade inmatningsraden. Looping förhindras om det första ordet i den nya texten är detsamma som det gamla genom att flagga det för att förhindra ytterligare aliasing. Andra slingor upptäcks och orsakar ett fel.

Observera att mekanismen tillåter alias att införa tolkningsmetasyntax. Således kan vi alias skriva ut 'pr ! * | lpr ' att göra ett kommando som pr är dess argument till linjeskrivaren.

Variabel ersättning

Skalet upprätthåller en uppsättning variabler, som alla har som värde en lista med noll eller fler ord. Några av dessa variabler ställs in av skalet eller hänvisas till av det. Till exempel argv variabel innehåller skalets argumentlista, och ord med denna variabels värde hänvisas till på speciella sätt.

Värdena för variabler kan visas och ändras med kommandona set och unset. Av de variabler som avses i skalet är ett antal växlar; skalet bryr sig inte om vad deras värde är, bara om de är inställda eller inte. Till exempel mångordig variabel är en växling som gör att kommandoinmatningen ekas. Inställningen av denna variabel är resultatet av -v kommandoradsalternativ.

Andra operationer behandlar variabler numeriskt. De @ med kommandot kan numeriska beräkningar utföras och resultatet tilldelas en variabel. Variabla värden representeras dock alltid som (noll eller fler) strängar. För numeriska operationer är noll sträng anses vara noll, och de andra och ytterligare orden i flerordsvärden ignoreras.

Efter att inmatningsraden är aliaserad och analyserad, och innan varje kommando utförs, utförs variabel ersättning, nycklad av $ tecken. Denna expansion kan förhindras genom att föregå $ med en utom inom dubbla citat ( '' ) där substitution alltid förekommer och inom enstaka citat ( '' ), där det aldrig förekommer. Strängar citerade av backticks ( '' ) tolkas senare (se Kommandosubstitution , nedan), så $ substitution sker inte där förrän senare, om alls. A $ skickas oförändrad om den följs av en tom, flik eller slutet på raden.

Ingångs- / utdataomdirigeringar känns igen före variabel expansion och expanderas variabelt separat. Annars utökas kommandonamnet och hela argumentlistan tillsammans. Det är således möjligt för det första (kommandot) ordet (till denna punkt) att generera mer än ett ord, varav det första blir kommandonamnet och resten blir argument.

Såvida inte ingående i '' eller ges : Vad modifierare kan resultaten av variabel substitution så småningom ersättas med kommando och filnamn. Inom '' , en variabel vars värde består av flera ord expanderar till (en del av) ett enda ord, med orden i variabelns värde åtskilda av tomma. När : Vad modifierare tillämpas på en substitution variabeln expanderar till flera ord med varje ord åtskilda av ett tomt och citerat för att förhindra senare kommando eller filnamnbyte.

Följande metasekvenser tillhandahålls för att införa variabla värden i skalingången. Förutom som nämnts är det ett fel att referera till en variabel som inte är inställd.

$ namn

$ { namn }
Ersätts med orden på värdet på variabeln namn , vardera åtskilda av ett tomt. Hängslen isolerar namn från att följa karaktärer som annars skulle vara en del av det. Shell-variabler har namn som består av upp till 20 bokstäver och siffror som börjar med en bokstav. Understrecket karaktär anses vara ett brev. Om namn är inte en skalvariabel utan ställs in i miljön, då returneras det värdet (men : modifierare och övriga formulär som anges nedan finns inte tillgängliga här).
$ namn [ väljare ]

$ { namn [ väljare ]}
Kan användas för att bara välja några av orden från värdet på namn . De väljare utsätts för $ substitution och kan bestå av ett enda nummer eller två nummer åtskilda av a - . Det första ordet i en variabels värde är numrerat 1 . Om det första numret i ett område utelämnas är det som standard 1 . Om det sista numret i ett område utelämnas är det som standard $ # namn . De väljare * väljer alla ord. Det är inte ett fel att ett intervall är tomt om det andra argumentet utelämnas eller inom intervallet.
$ # namn

$ {# namn }
Ger antalet ord i variabeln. Detta är användbart för senare användning i en $ argv [ väljare ] '.
$ 0 Ersätter namnet på filen från vilken kommandoinmatning läses. Ett fel uppstår om namnet inte är känt.
$ siffra

$ { siffra }
Ekvivalent med ' $ argv [ siffra ] '.
$ * Ekvivalent med ' $ argv [*] '.

Modifierarna :är , : h , : t , : r , : Vad och : x kan tillämpas på substitutionerna ovan som kan : gh , : gt och : gr . Om hängslen { } visas i kommandoformen måste modifierarna visas inom hakparenteserna. Det nuvarande genomförandet tillåter bara en : modifierare på varje $ expansion.

Följande ersättningar kanske inte ändras med : modifierare.

$? namn

$ {? namn }
Ersätter strängen ' 1 'om namn är inställt' 0 'om det inte är det.
$? 0 Ersättare 1 om det aktuella inmatade filnamnet är känt, 0 om det inte är det.
$$ Ersätt (decimal) processnummer för (överordnat) skal. Använd INTE denna mekanism för att skapa tillfälliga filnamn; ser mktemp istället.
$! Ersätt (decimal) processnummer för den senaste bakgrundsprocessen som startades av detta skal.
$< Ersätter en rad från standardinmatningen utan ytterligare tolkning. Den kan användas för att läsa från tangentbordet i ett skalskript.

Ersättning av kommando och filnamn

De återstående substitutionerna, kommandot och filnamnssubstitutionen, tillämpas selektivt på argumenten för inbyggda kommandon. Här betyder 'selektivt' att delar av uttryck som inte utvärderas inte utsätts för dessa utvidgningar. För kommandon som inte är interna i skalet ersätts kommandonamnet separat från argumentlistan. Detta inträffar mycket sent, efter att omdirigering av input-output har utförts, och i ett barn av huvudskalet.

Kommandosubstitution

Kommandosubstitution visas med ett kommando som ingår i '' . Utdata från ett sådant kommando är normalt uppdelat i separata ord i tomma, flikar och nya rader, med nollord kasseras; texten ersätter sedan den ursprungliga strängen. Inom dubbla citat ( '' ), endast nya rader tvingar nya ord; ämnen och flikar bevaras.

I vilket fall som helst tvingar inte den enda sista nylinjen ett nytt ord. Observera att det därför är möjligt för en kommandosubstitution att endast ge en del av ett ord, även om kommandot matar ut en fullständig rad.

Byte av filnamn

Om ett ord innehåller något av tecknen * , ? , [ , eller { eller börjar med karaktären ~ , då är det ordet en kandidat för filnamnersättning, även känd som 'globbing'. Detta ord betraktas sedan som ett mönster och ersätts med en alfabetiskt sorterad lista över filnamn som matchar mönstret. I en lista med ord som anger byte av filnamn är det ett fel att inget mönster matchar ett befintligt filnamn, men det krävs inte för varje mönster att matcha. Endast metatecken * , ? och [ antyder mönstermatchning, karaktärerna ~ och { att vara mer besläktad med förkortningar.

I matchande filnamn, karaktären . i början av ett filnamn eller omedelbart efter ett / , liksom karaktären / måste matchas uttryckligen. Karaktären * matchar alla teckensträngar, inklusive nullsträngen. Karaktären ? matchar varje enskild karaktär.

Sekvensen ' [ ... ] 'matchar någon av de bifogade karaktärerna. Inom ' [ ... ] ', ett par tecken åtskilda av - matchar alla karaktärer lexiskt mellan de två (inklusive). Inom ' [ ... ] ', namnet på en karaktärsklass som ingår i [: och :] står för listan över alla tecken som tillhör den klassen. Stödda karaktärsklasser:

  • skopa
  • alfa
  • tom
  • cntrl
  • siffra
  • Graf
  • lägre
  • skriva ut
  • Plats
  • övre
  • punkt
  • xdigit

Dessa matchar tecken med hjälp av de makron som anges i ctype . En teckenklass får inte användas som en slutpunkt för ett intervall.

Karaktären ~ i början av ett filnamn avser hemkataloger. Stå ensam, dvs. ~ expanderar den till invokerens hemkatalog, vilket återspeglas i värdet på variabeln home. När det följs av ett namn som består av bokstäver, siffror och - tecken söker skalet efter en användare med det namnet och ersätter sin hemkatalog; Således ' ~ ken 'kan expandera till' / usr / ken 'och' ~ ken / chmach 'till' / usr / ken / chmach '. Om karaktären ~ följs av en annan karaktär än en bokstav eller / , eller visas inte i början av ett ord, lämnas det ostört.

Metanotationen ' a {b, c, d} e 'är en stenografi för' abe ace ade '. Vänster till höger ordning bevaras, med resultat från matchningar som sorteras separat på låg nivå för att bevara denna ordning. Denna konstruktion kan vara kapslad . Således, ' ~ källa / s1 / {oldls, ls} .c 'expanderar till' /usr/source/s1/oldls.c /usr/source/s1/ls.c 'utan risk för fel om hemkatalogen för' källa ' är ' / usr / källa '. På samma sätt ' ../{memo,*box} 'kan expandera till' ../memo ../box ../mbox '. Anteckna det ' PM 'sorterades inte med matchens resultat till' *låda '. Som ett specialfall { , } och {} passeras ostörd.

Ingång / utgång

Standardinmatningen och standardutgången för ett kommando kan omdirigeras med följande syntax:

< namn Öppna fil namn (som är den första variabeln, kommandot och filnamnet utökas) som standardingång.
<< ord Läs skalinmatningen upp till en rad som är identisk med ord . De ord utsätts inte för att ersätta variabler, kommandon eller filnamn, och varje ingångsrad jämförs med ord innan några utbyten görs på inmatningsraden. Om inte ett citat , '' , '' eller '' visas i ord , variabel- och kommandosubstitution utförs på mellanliggande rader, vilket tillåter att citera $ , och '' . Kommandon som ersätts har alla tomma, flikar och nya rader bevarade, förutom den sista nya raden som tappas. Den resulterande texten placeras i en anonym tillfällig fil som ges till kommandot som standardinmatning.
> namn

>! namn

>> & namn

>> &! namn
Filen namn används som standardutgång. Om filen inte finns skapas den. om filen finns trunkeras den; dess tidigare innehåll går förlorade.

Om variabeln noclobber är inställd, då får filen inte existera eller vara en specialteckenfil (t.ex. en terminal eller / dev / null ) eller ett fel uppstår. Detta hjälper till att förhindra oavsiktlig förstörelse av filer. Här, den ! formulär kan användas för att undertrycka denna kontroll.

Formerna som involverar & dirigera standardfelutmatningen till den angivna filen såväl som standardutmatningen. Namnet expanderas på samma sätt som < inmatade filnamn är.
>> namn

>> & namn

>>! namn

>> &! namn
Använder fil namn som standardutgång; tycka om > men placerar utdata i slutet av filen. Om variabeln noclobber är inställt, då är det ett fel för filen att inte existera om inte en av ! formulär ges. Annars, liknar > .

Ett kommando tar emot miljön där skalet anropades som modifierat av input-output-parametrarna och närvaron av kommandot i en pipeline. Således, till skillnad från vissa tidigare skal, har kommandon som körs från en fil med skalkommandon som standard ingen tillgång till kommandoteksten; istället får de den ursprungliga standardinmatningen för skalet. De << bör användas för att presentera integrerade data. Detta gör det möjligt för kommandoskript för skal att fungera som komponenter i rörledningar och gör det möjligt för skalet att blockera läsa dess ingång. Observera att standardinmatningen för en fristående kommandokörning inte ändras till att vara den tomma filen / dev / null ; istället förblir standardingången som den ursprungliga standardingången för skalet. Om detta är en terminal och om processen försöker läsa från terminalen kommer processen att blockeras och användaren kommer att meddelas (se Jobb ovan).

Standardfelutmatningen kan ledas genom ett rör med standardutmatningen. Använd formuläret | & istället för bara | .

Uttryck

Flera av de inbyggda kommandona (som kommer att beskrivas senare) tar uttryck där operatörerna liknar de för C, med samma företräde, men med motsatt gruppering: höger till vänster. Dessa uttryck visas i @ , utgång , om och medan kommandon. Följande operatörer är tillgängliga:

  • ||
  • &&
  • |
  • & uarr;
  • &
  • ==
  • ! =
  • = ~
  • ! ~
  • <=
  • > =
  • <
  • >
  • <<
  • >>
  • +
  • -
  • *
  • /
  • %
  • !
  • ~
  • (
  • )

Här ökar företräde ner på listan, med == ! = = ~ och ! ~ , <= > = < och > , << och >> , + och - , * / och % vara i grupper på samma nivå. De == ! = = ~ och ! ~ operatörer jämför sina argument som strängar; alla andra arbetar på siffror. Operatörerna = ~ och ! ~ är som ! = och == förutom att höger sida är ett mönster (som innehåller t.ex. * 's, ? och instanser av ' [...] ') mot vilken vänster operand matchas. Detta minskar behovet av användning av växla uttalande i skalskript när allt som verkligen behövs är mönstermatchning.

Strängar som börjar med 0 betraktas som oktala tal. Noll eller saknade argument beaktas 0 . Resultaten av alla uttryck är strängar som representerar decimaltal. Det är viktigt att notera att inga två komponenter i ett uttryck kan visas i samma ord; utom när de ligger intill komponenter av uttryck som är syntaktiskt signifikanta för tolkaren ( & , | , < , > , ( och ) ), bör de omges av utrymmen.

Också tillgängligt i uttryck som primitiva operander är kommandokörningar som är inneslutna i { och } och lämna in förfrågningar från formuläret -Jag heter var l är en av:

r läsåtkomst
i skrivåtkomst
x kör åtkomst
är existens
eller äganderätt
med nollstorlek
f vanlig fil
d katalog

Det angivna namnet är kommandot och filnamnet expanderas och testas sedan för att se om det har det angivna förhållandet till den riktiga användaren. Om filen inte finns eller är oåtkomlig återkommer alla förfrågningar falsk , dvs 0 . Kommandokörningar lyckas, returnerar sanna, dvs. 1 , om kommandot avslutas med status 0 , annars misslyckas de, returnerar falsk, dvs. 0 . Om mer detaljerad statusinformation krävs ska kommandot köras utanför ett uttryck och variabelstatus undersöks.

Styrningsflöde

Skalet innehåller flera kommandon som kan användas för att reglera flödet av kontroll i kommandofiler (skalskript) och (på begränsade men användbara sätt) från terminalingång. Dessa kommandon fungerar alla genom att tvinga skalet att läsa om eller hoppa över inmatningen och på grund av implementeringen begränsar placeringen av några av kommandona.

De för varje , växla och medan uttalanden, liksom om då annars form av om uttalande kräver att de viktigaste nyckelorden visas i ett enda enkelt kommando på en inmatningsrad som visas nedan.

Om skalets ingång inte är sökbar, buffrar skalet upp ingången när en slinga läses och utför söker i denna interna buffert för att åstadkomma den omläsning som impliceras av slingan. I den utsträckning detta tillåter, bakåt gå till kommer att lyckas med icke-sökbara ingångar.

Inbyggda kommandon

Inbyggda kommandon körs i skalet. Om ett inbyggt kommando förekommer som någon komponent i en rörledning utom den sista körs det i ett underskal.

alias

alias namn

alias namn ordlista
Den första blanketten skriver ut alla alias. Den andra formen skriver ut aliaset för namn . Den slutliga formuläret tilldelar den angivna ordlistan som alias för namn ; ordlista är kommando och filnamn ersatt. De namn får inte vara 'alias' eller 'unalias'.
alloc Visar mängden dynamik minne förvärvad, uppdelad i använt och ledigt minne. Med ett argument visas antalet fria och använda block i varje storlekskategori. Kategorierna börjar med storlek 8 och dubbla vid varje steg. Detta kommandos utdata kan variera mellan olika systemtyper, eftersom andra system än VAX kan använda en annan minnesallokerare.
bg

bg% jobb ...
Sätter den aktuella eller specificerade jobb i bakgrunden och fortsätter dem om de stoppades.
ha sönder Följer att körningen fortsätter efter slutet av närmaste bilagan för varje eller medan . De återstående kommandona på den aktuella raden körs. Pauser på flera nivåer är således möjliga genom att skriva dem alla på en rad.
bryter Orsaker a ha sönder från en växla , återupptas efter slutar .
fall märka: TILL märka i en växla uttalande som diskuteras nedan.
CD

CD namn

chdir

chdir namn
Byt skal arbetskatalog till katalognamn. Om inget argument ges ändrar du till användarens hemkatalog. Om namn inte hittas som en underkatalog för den aktuella katalogen (och inte börjar med / , ./ eller ../ ), sedan varje komponent i variabeln cdpath kontrolleras för att se om den har ett underkatalognamn. Slutligen, om allt annat misslyckas är namnet en skalvariabel vars värde börjar med / , sedan försöker man se om det är en katalog.
Fortsätta Fortsätt utförandet av närmaste bilaga medan eller för varje . Resten av kommandona på den aktuella raden körs.
standard: Märker standardfallet i ett switch-uttalande. Standarden ska komma efter alla falletiketter.
dirs Skriver ut katalogstacken; toppen av stacken är till vänster, den första katalogen i stacken är den aktuella katalogen.
kastade ut ordlista

eko -n ordlista
De angivna orden skrivs till skalets standardutgång, åtskilda av mellanslag och avslutas med en ny rad såvida inte -n alternativet anges.
annan

slutet

endif

slutar
Se beskrivningen av för varje , om , växla och medan uttalanden nedan.
eval arg ... Efterliknar eval i sh: argumenten läses som inmatning till skalet och det eller de resulterande kommandona som utförs i samband med det aktuella skalet. Detta används vanligtvis för att utföra kommandon som genereras som ett resultat av kommando eller variabel substitution, eftersom analysering sker före dessa substitutioner. Ser tset bruksanvisning för ett exempel på användning eval .
exec kommando Det angivna kommandot körs istället för det aktuella skalet.
utgång

utgång (expr)
Skalet avslutas antingen med värdet på statusvariabeln (första formen) eller med värdet för den angivna expr (andra form).
fg

fg% jobb ...
Ger aktuell eller specificerad jobb i förgrunden och fortsätter dem om de stoppades.
för varje namn ( ordlista )
...
slutet
Variabelnamnet ställs in successivt för varje medlem i ordlista och sekvensen av kommandon mellan detta kommando och matchningen slutet utförs. Både för varje och slutet måste visas ensamma på separata rader. Det inbyggda kommandot Fortsätta kan användas för att fortsätta slingan i förtid och det inbyggda kommandot ha sönder att avsluta det för tidigt. När detta kommando läses från terminalen läses slingan en gång med en uppmaning med ? innan några uttalanden i slingan körs. Om du gör ett misstag att skriva in en slinga på terminalen kan du gnugga ut den.
klot ordlista Tycka om kastade ut men nej escapes känns igen och ord avgränsas av NUL-tecken i utdata. Användbar för program som vill använda skalet för att filnamn utöka en lista med ord.
gå till ord Det angivna ord är filnamn och kommando utökat för att ge en sträng av formuläret märka . Skalet spolar tillbaka sin inmatning så mycket som möjligt och söker efter en rad i formen ' märka: ', möjligen föregås av tomma eller flikar. Körningen fortsätter efter den angivna raden.
hashstat Skriv ut en statistikrad som visar hur effektivt det interna hash tabell har varit på att hitta kommandon (och undvika körningar). Ett exec försöks för varje komponent i sökvägen där hash-funktionen indikerar en möjlig träff, och i varje komponent som inte börjar med en / .
historia

historia n

historia -h n

historia -r n
Visar historikhändelselistan; om n ges, bara n de senaste händelserna skrivs ut. De -h alternativet gör att historiklistan skrivs ut utan ledande nummer. Detta format producerar filer som är lämpliga för inköp med -h möjlighet att källa. De -r alternativet vänder utskriftsordningen till att vara den senaste först i stället för den äldsta först.
om (expr) kommando Om det angivna uttrycket utvärderas till Sann , körs sedan det enda kommandot med argument. Variabel ersättning vid kommando sker tidigt, samtidigt som det gör för resten av om kommando. kommandot måste vara ett enkelt kommando, inte en pipeline, en kommandolista eller en parentes-kommandolista. In- / utdata omdirigering sker även om expr är falsk , dvs när kommandot inte körs (detta är faktiskt ett fel).
om (expr) sedan
...
annars om (expr2) sedan
...
annan
...
endif
Om det anges expr är Sann sedan kommandona upp till det första annan utförs; annars om expr2 är Sann sedan kommandona fram till andra annan exekveras etc. Vilket som helst antal annars-om par är möjliga; bara en endif behövs. De annan del är också valfri. Orden annan och endif måste visas i början av inmatningsraderna; de om måste visas ensam på inmatningsraden eller efter en annan .
jobb

jobb -l
Listar aktiva jobb; de -l alternativet listar process-ID utöver den normala informationen.
döda % jobb

döda [ -s signal_name ] pid

kill -sig pid ...

döda -l [ exit_status ]
Skickar antingen SIGTERM (avsluta) signal eller den angivna signalen till de angivna jobben eller processerna. Signalerna ges antingen med nummer eller med namn (som anges i , berövade prefixet ' SIG '). Signalnamnen listas med ' döda -l '; om en exit_status är specificerat skrivs endast motsvarande signalnamn. Det finns ingen standard; säger bara ' döda 'skickar ingen signal till det aktuella jobbet. Om signalen som skickas är SIGTERM (avsluta) eller SIGHUP (hangup), då skickas jobbet eller processen a SIGCONT (fortsätt) signal också.
begränsa

begränsa resurs

begränsa resurs maximal användning

gräns -h

gräns -h resurs

gräns -h resurs maximal användning
Begränsar förbrukningen av den aktuella processen och varje process den skapar för att inte överstiga individuellt maximal användning på den angivna resursen. Om inte maximal användning anges, då skrivs den aktuella gränsen ut; om inte resurs anges, då ges alla begränsningar. Om -h flaggan ges, används de hårda gränserna istället för de nuvarande gränserna. De hårda gränserna sätter ett tak på värdena för de nuvarande gränserna. Endast superanvändaren kan höja de hårda gränserna, men en användare kan sänka eller höja de nuvarande gränserna inom det lagliga området.

Resurser som kan kontrolleras inkluderar för närvarande:

cputime : det maximala antalet CPU-sekunder som ska användas av varje process.

filstorlek : den största enskilda filen (i byte) som kan skapas.

datasize : den maximala tillväxten av data + stack-regionen via sbrk bortom slutet på programtexten.

stapelstorlek : den maximala storleken på det automatiskt utökade stackområdet.

coredumpsize : storleken på den största kärnavfall (i byte ) som kommer att skapas.

minnesanvändning : den maximala storleken (i byte) till vilken processens inbyggda storlek (RSS) kan växa.

minneslåst : Den maximala storleken (i byte) som en process kan låsa i minnet med mlock fungera.

maxproc : Det maximala antalet samtidiga processer för detta användar-ID.

öppna filer : Det maximala antalet öppna filer samtidigt för detta användar-ID.

vmemoryuse : den maximala storleken (i byte) som processens totala storlek kan växa till.

De maximal användning kan ges som ett (flytande eller heltal) tal följt av en skalfaktor. För alla andra gränser än cputime standardskalan är till eller ' kilobyte '( 1024 byte ); en skalfaktor på m eller ' megabyte 'kan också användas. För cputime standardskalan är ' sekunder '; en skalfaktor på m i minuter eller h i timmar, eller en tid av formuläret ' mm: ss 'ger minuter och sekunder kan också användas.

För både resursnamn och skalfaktorer räcker det med entydiga prefix av namnen.
logga in Avsluta ett inloggningsskal och ersätt det med en instans av / usr / bin / login . Det här är ett sätt att logga ut, inkluderat för kompatibilitet med sh .
logga ut Avsluta ett inloggningsskal. Särskilt användbart om ignorerar är inställd.
trevlig

trevlig + siffra

trevlig kommando

trevlig + nummerkommando
Den första formuläret ställer in schemaläggningsprioriteten för detta skal till 4 . Det andra formuläret anger prioriteten för det givna siffra . De sista två formerna kör kommandot med prioritet 4 och siffra respektive. Ju större antal desto mindre CPU processen blir. Superanvändaren kan ange negativ prioritet med ' trevligt -nummer ... '. kommando körs alltid i ett underskal och begränsningarna för kommandon är enkla om uttalanden gäller.
nohup

nohup kommando
Den första formuläret kan användas i skalskript för att få upphängningar att ignoreras under resten av skriptet. Det andra formuläret gör att det angivna kommandot körs med upphängningar ignorerade. Alla processer fristående med & är effektivt nohup ed.
meddela

meddela% jobb ...
Får att skalet meddelar användaren asynkront när status för den aktuella eller specificerade jobb förändra; normalt visas en anmälan före en uppmaning. Detta är automatiskt om skalvariabeln meddela är inställd.
onintr

onintr -

onintr märka
Kontrollera skalets verkan vid avbrott. Den första formen återställer standardåtgärden för skalet på avbrott, vilket är att avsluta skalskript eller att återgå till terminalens kommandon. Den andra formen onintr - orsakar att alla avbrott ignoreras. Den slutliga formen får skalet att köra a gå till etikett när ett avbrott tas emot eller en underordnad process avslutas eftersom den avbröts.

I vilket fall som helst, om skalet är fristående och avbrott ignoreras, alla former av onintr har ingen mening och avbrott fortsätter att ignoreras av skalet och alla påkallade kommandon. Till sist, onintr uttalanden ignoreras i systemets startfiler där avbrott är inaktiverade ( /etc/csh.cshrc , /etc/csh.login ).
popd

popd + n
Pops katalogstacken och återgår till den nya toppkatalogen. Med ett argument ' + n kasserar n inträde i stacken. Medlemmarna i katalogstacken är numrerade från början från och med 0 .
pushd

pushd namn

pushd + n
Utan argument pushd utbyter de två översta elementen i katalogen stack . Med tanke på en namn argument, pushd ändringar i den nya katalogen (ala CD ) och trycker på den gamla nuvarande arbetskatalogen (som i pwd ) på katalogstacken. Med ett numeriskt argument, pushd roterar n argumentet i katalogen staplas runt för att vara det översta elementet och ändras till det. Medlemmarna i katalogstacken är numrerade från början från och med 0 .
uppkok Orsakar den interna hashtabellen över innehållet i katalogerna i väg variabel som ska beräknas om. Detta behövs om nya kommandon läggs till i katalogen i sökvägen medan du är inloggad. Detta bör bara vara nödvändigt om du lägger till kommandon i någon av dina kataloger, eller om en systemprogrammerare ändrar innehållet i en systemkatalog.
upprepa räkna kommandot Det angivna kommando , som är föremål för samma begränsningar som kommandot i en rad om uttalandet ovan, körs räkna gånger. I / O omdirigeringar sker exakt en gång, även om räkningen är 0 .
uppsättning

uppsättning namn

uppsättning namn = ord

uppsättning namn [ index ] = ord

uppsättning namn = ( ordlista )

Den första formen av kommandot visar värdet på alla skalvariabler. Variabler som har ett annat ord än ett värde skrivs ut som en parentes-ordlista. Den andra formen ställer in namnet på nullsträngen. Den tredje formen anger namnet på det enskilda ordet. Den fjärde formen anger index komponent av namn till ord; denna komponent måste redan finnas. Det sista formuläret anger namnet på listan med ord i ordlista . Värdet är alltid kommando och filnamn utökat.

Dessa argument kan upprepas för att ställa in flera värden i ett enda set-kommando. Observera dock att variabel expansion sker för alla argument innan någon inställning inträffar.

setenv

setenv namn

setenv namnvärde
Den första formen visar alla aktuella miljövariabler. Det motsvarar printenv. Det sista formuläret ställer in värdet på miljövariabelns namn som värde, en enda sträng. Den andra formen sätter namn till en tom sträng. De vanligaste miljövariablerna ANVÄNDARE , TERMIN och VÄG importeras automatiskt till och exporteras från csh variabler användare , termin och väg ; det finns inget behov av att använda setenv för dessa.
flytta

flytta variabel
Medlemmarna i argv flyttas åt vänster och kasseras argv [1] . Det är ett fel för argv att inte ställas in eller ha mindre än ett ord som värde. Den andra formen utför samma funktion på det angivna variabel .
källa namn

källa -h namn
Skalet läser kommandon från namn . källa kommandon kan vara kapslade; om de är kapslade för djupt kan skalet ta slut på filbeskrivare. Ett fel i en källa på vilken nivå som helst avslutar alla kapslade kommandon. Normalt matas in under källa kommandon placeras inte i historiklistan; de -h alternativet gör att kommandona placeras i historiklistan utan att exekveras.
sluta

sluta % jobb ...
Stoppar den aktuella eller specificerade jobb som körs i bakgrunden.
uppskjuta Får att skalet stannar i sina spår, ungefär som om det hade skickats en sluta signal med ^ Z . Detta används oftast för att stoppa skal som startas av dess .
växla (sträng)
fall str1:
...
bryter
...
standard:
...
bryter
slutar
Varje fall etiketten matchas successivt mot det angivna sträng , vilket är första kommando och filnamn utökat. Filens metatecken * , ? och ' [...] kan användas i fall etiketter, som är expanderade variabelt. Om ingen av etiketterna matchar före ' standard 'etikett hittas, sedan körningen börjar efter standard märka. Varje fall etikett och standard etiketten måste visas i början av en rad. Kommandot bryter gör att körningen fortsätter efter slutar . Annars kan kontrollen falla igenom fall etiketter och standardetiketten som i C. Om ingen etikett matchar och det inte finns någon standard fortsätter körningen efter slutar .
tid

tid kommando
Utan argument skrivs en sammanfattning av tiden som används av detta skal och dess barn. Om argument ges det angivna enkla kommandot är tidsinställt och en tidsöversikt som beskrivs under tid variabel skrivs ut. Om det behövs skapas ett extra skal för att skriva ut tid statistik när kommandot slutförts.
umask

umask värde
Filskapningsmask visas (första form) eller ställs in på det angivna värde (andra form). Masken ges i oktal. Gemensamma värden för masken är 002 ge all tillgång till gruppen och läsa och utföra åtkomst till andra eller 022 ger all åtkomst utom skrivåtkomst för användare i gruppen eller andra.
unalias mönster Alla alias vars namn matchar det angivna mönstret kasseras. Således tas alla alias bort av unalias * . Det är inte ett fel för ingenting att vara ojämn.
ta bort Användningen av den interna hashtabellen för att påskynda platsen för körda program är inaktiverad.
unlimit

unlimit resurs

unlimit -h

unlimit -h resurs
Tar bort begränsningen på resurs . Om inte resurs specificeras, tas alla resursbegränsningar bort. Om -h anges, tas motsvarande hårda gränser bort. Endast superanvändaren kan göra detta.
avstängd mönster Alla variabler vars namn matchar det angivna mönstret tas bort. Således tas alla variabler bort av avstängd * ; detta har märkbart osmakliga biverkningar. Det är inte ett fel för ingenting att avmarkera.
unsetenv mönster Tar bort alla variabler vars namn matchar det angivna mönstret från miljön. Se även setenv kommando ovan och printenv.
vänta Vänta på alla bakgrundsjobb. Om skalet är interaktivt kan ett avbrott störa väntetiden. Efter avbrottet skriver skalet ut namn och jobbnummer på alla jobb som man vet är utestående.
som kommando Visar det lösta kommandot som kommer att köras av skalet.
medan (expr)

...

slutet
Medan det angivna uttrycket utvärderas till icke-noll, är kommandona mellan medan och matchningen slutet utvärderas. ha sönder och Fortsätta kan användas för att avsluta eller fortsätta slingan i förtid. De medan och slutet måste visas ensamma på sina inmatningsrader. Fråga sker här första gången genom slingan som för för varje uttalande om ingången är en terminal.
% jobb Ger det angivna jobb i förgrunden.
% jobb & Fortsätter det angivna jobbet i bakgrunden.

@

@ namn = expr

@ namn [ index ] = expr

Den första formen skriver ut värdena för alla skalvariabler. Det andra formuläret anger det angivna namn till värdet av expr . Om uttrycket innehåller < , > , & eller | då måste åtminstone denna del av uttrycket placeras i ( ) . Den tredje formen tilldelar värdet av expr till index argument av namn . Både namn och dess index komponenten måste redan finnas.

Operatörerna * = , + = , etc. finns som i C. Utrymmet som skiljer namnet från tilldelningsoperatören är valfritt. Utrymmen är dock obligatoriska för att separera komponenter i expr , som annars skulle vara enstaka ord.

Special postfix ++ och - operatörers ökande respektive minskande namn; dvs @ i ++ '.

Fördefinierade variabler och miljövariabler

Följande variabler har speciell betydelse för skalet. Av dessa, argv , cwd , Hem , väg , prompt , skal och status ställs alltid av skalet. Förutom cwd och status , denna inställning sker endast vid initialisering; dessa variabler kommer då inte att modifieras om de inte gör det uttryckligen av användaren.

Skalet kopierar miljövariabeln ANVÄNDARE in i variabeln användare , TERMIN in i termin och HEM in i Hem och kopierar dessa tillbaka till miljön när de normala skalvariablerna återställs. Miljövariabeln VÄG hanteras också; det är inte nödvändigt att oroa sig för dess inställning annat än i filen .cshrc eftersom sämre csh-processer kommer att importera definitionen av väg från miljön och exportera den igen om du sedan ändrar den.

argv Ställ in argumenten till skalet, det är från denna variabel som positionsparametrar ersätts; dvs $ 1 'ersätts med' $ argv [1] ', etc.
cdpath Ger en lista över alternativa kataloger som du söker för att hitta underkataloger i chdir kommandon.
cwd Hela sökvägen för den aktuella katalogen.
kastade ut Ställ in när -x kommandoradsalternativ ges. Orsakar att varje kommando och dess argument upprepas precis innan det körs. För icke-inbyggda kommandon inträffar alla utvidgningar innan echoing. Inbyggda kommandon upprepas före byte av kommando och filnamn, eftersom dessa substitutioner görs selektivt.
filec Aktivera slutförande av filnamn.
histchars Kan ges ett strängvärde för att ändra de tecken som används i historiensbyte. Det första tecknet i dess värde används som historikersättningsbyte och ersätter standardtecknet ! . Den andra karaktären av dess värde ersätter karaktären ^ i snabba byten.
histfil Kan ställas in på sökvägen där historiken ska sparas / återställas.
historia Kan ges ett numeriskt värde för att styra storleken på historiklistan. Alla kommandon som har hänvisats till i så många händelser kommer inte att kasseras. För stora historiska värden kan tappa minnet för skalet. Det senast utförda kommandot sparas alltid i historiklistan.
Hem Invokerns hemkatalog, initialiserad från miljön. Filnamnsexpansionen av ' ~ 'avser denna variabel.
ignorerar Om inställt ignorerar skalet filänden från ingångsenheter som är terminaler. Detta förhindrar att skal av misstag dödas av kontroll-D s.
post Filerna där skalet söker efter post. Denna kontroll utförs efter varje kommandoslutförande som kommer att resultera i en uppmaning om ett angivet intervall har gått. Skalet säger 'Du har ny post.' om filen finns med en åtkomsttid som inte är längre än dess modifieringstid.

Om det första ordet i e-postvärdet är numeriskt anger det ett annat e-postkontrollintervall, i sekunder, än standardvärdet, vilket är 10 minuter.

Om flera e-postfiler anges, säger skalet 'Ny e-post i namn' när det finns e-post i filnamnet.
noclobber Som beskrivs i avsnittet om Input / output, begränsas utdataomdirigering för att säkerställa att filer inte förstörs av misstag och att >> omdirigeringar hänvisar till befintliga filer.
noglob Om den är inställd, förhindras filnamnsexpansion. Denna hämning är mest användbar i skalskript som inte handlar om filnamn, eller efter att en lista med filnamn har erhållits och ytterligare utvidgningar inte är önskvärda.
nonommatchning Om den är inställd är det inte ett fel för en filnamnsexpansion att inte matcha några befintliga filer. istället returneras det primitiva mönstret. Det är fortfarande ett fel för det primitiva mönstret att missbildas. dvs kastade ut [ ger fortfarande ett fel.
meddela Om inställd, meddelar skalet asynkront om jobbavslutningar; standard är att presentera jobb slutförda strax innan en uppmaning skrivs ut.
väg Varje ord i väg variabel anger en katalog där kommandon ska sökas för körning. Ett nullord anger den aktuella katalogen. Om det inte finns någon sökvariabel kommer bara fullständiga söknamn att köras. Den vanliga sökvägen är ' . ',' / am ',' / usr / bin ',' / sbin 'och' / usr / sbin ', men detta kan variera från system till system. För superanvändaren är standardsökvägen ' / am ',' / usr / bin ',' / sbin 'och' / usr / sbin '. Ett skal som varken ges -c inte heller -t alternativet kommer vanligtvis att haska innehållet i katalogerna i sökvägen efter läsning .cshrc och varje gång resvägsvariabeln återställs. Om nya kommandon läggs till i dessa kataloger medan skalet är aktivt kan det vara nödvändigt att göra en repetition eller så kan kommandona inte hittas.
prompt Strängen som skrivs ut före varje kommando läses från en interaktiv terminalingång. Om en ! visas i strängen kommer den att ersättas med det aktuella händelsenumret såvida inte föregående är given. Standard är ' % 'eller' # för superanvändaren.
sparahist Tilldelas ett numeriskt värde för att styra antalet poster i historiklistan som sparas i ~ / .history när användaren loggar ut. Alla kommandon som har hänvisats till i så många händelser kommer att sparas. Under start av skalkällorna ~ / .history in i historiklistan så att historik kan sparas över inloggningar. För stora värden på sparahist saktar ner skalet under uppstart. Om sparahist är precis inställt kommer skalet att använda värdet på historia .
skal Filen där skalet finns. Denna variabel används för att gaffla skal för att tolka filer som har exekverade bituppsättningar, men som inte kan köras av systemet. Se beskrivningen av icke-inbyggt kommandokörning nedan. Initierades till skalets (systemberoende) hem.
status Statusen returneras av det senaste kommandot. Om det avslutades onormalt, då 0200 läggs till i statusen. Inbyggda kommandon som misslyckas med återgångsutgångsstatus 1 , alla andra inbyggda kommandon sätter status till 0 .
tid Kontrollerar automatisk tidpunkt för kommandon. Om den är inställd kommer alla kommandon som tar mer än så många CPU-sekunder att leda till att en rad som ger användare, system och realtider och en utnyttjandeprocent som är förhållandet mellan användare plus systemtider till realtid skrivs ut när den avslutas.
mångordig Ställ in av -v kommandoradsalternativ, gör att orden i varje kommando skrivs ut efter byte av historik.

Icke-inbyggt kommandokörning

När ett kommando som ska utföras visar sig inte vara ett inbyggt kommando försöker skalet att utföra kommandot via exekvera . Varje ord i variabelbanan namnger en katalog från vilken skalet kommer att försöka utföra kommandot. Om det ges varken a -c inte heller en -t alternativet kommer skalet att hasha namnen i dessa kataloger i en intern tabell så att den bara försöker en exec i en katalog om det finns en möjlighet att kommandot finns där. Den här genvägen påskyndar kraftigt kommandoplatsen när många kataloger finns i sökvägen. Om denna mekanism har stängts av (via ta bort ), eller om skalet fick ett -c eller -t argument, och i alla fall för varje katalogkomponent i sökvägen som inte börjar med a / , sammanfogas skalet med det givna kommandonamnet för att bilda ett söknamn för en fil som det sedan försöker köra.

Parentesiserade kommandon körs alltid i ett underskal. Således

(cd; pwd); pwd

skriver ut hemkatalogen; lämnar dig där du var (skriver ut detta efter hemkatalogen), medan

cd; pwd

lämnar dig i hemkatalogen. Parentesiserade kommandon används oftast för att förhindra chdir från att påverka det nuvarande skalet.

Om filen har exekveringsbehörigheter men inte är en körbar binär till systemet antas den vara en fil som innehåller skalkommandon och ett nytt skal skapas för att läsa den.

Om det finns ett alias för skal kommer aliasens ord att läggas fram i argumentlistan för att bilda skalkommandot. Det första ordet i aliaset ska vara hela sökvägen för skalet (t.ex. ' $ skal '). Observera att detta är ett speciellt, sen förekommande fall av aliasbyte och att endast ord kan läggas till argumentlistan utan ändring.

Signalhantering

Skalet ignorerar normalt SIGQUIT signaler . Jobb som körs fristående (antingen av & eller den bg eller % ... & kommandon) är immuna mot signaler som genereras från tangentbordet, inklusive upphängningar. Andra signaler har de värden som skalet ärvt från sin förälder. Skalets hantering av avbrott och avslutningssignaler i skalskript kan kontrolleras av onintr . Inloggningsskal fångar upp SIGTERM (avsluta) signal; annars skickas denna signal till barn från staten i skalets förälder. Avbrott är inte tillåtna när ett inloggningsskal läser filen .logga ut .

Begränsningar

Ordlängder: Ord får inte vara längre än 1024 tecken. Antalet argument till ett kommando som involverar filnamnsexpansion är begränsat till 1/6 det antal tecken som tillåts i en argumentlista. Kommandosubstitutioner får inte ersätta fler tecken än vad som är tillåtet i en argumentlista. För att upptäcka looping begränsar skalet antalet aliasubstitutioner på en enda rad till 20.

Filer

~ / .cshrc läst i början av körningen av varje skal
~ / .login läst av inloggningsskalet, efter .cshrc vid inloggning
~ / .logout läst av inloggningsskal, vid utloggning
/ bin / sh standardskal, för skalskript som inte börjar med a #
/tmp/sh.* tillfällig fil för <<
/ etc / passwd källa till hemkataloger för ' ~ namn ''

Exempel

csh

Kör och kör C-skalet (om det finns).

Se .cshrc-guiden för ett exempel på .cshrc fil och ytterligare information om den här filen.

våldsamt slag - Bourne Again-skalkommandotolken.
före Kristus - En miniräknare.
kastade ut - Utmatningstext.
logga in - Börja en session i ett system.
ls - Lista innehållet i en katalog eller kataloger.
Mer - Visa text en skärm i taget.
ps - Rapportera status för en process eller processer.
sh - Bourne-skalkommandotolken.