NAAM
sh - opdrachtinterpreter (shell)
KORTE INHOUD
sh -/ + ACefnuvxIimqsVEbc -O lange naam -woorden doelwit …
OMSCHRIJVING
Sh is de standaardcommando-interpreter voor het systeem. De huidige versie vansh wordt momenteel aangepast om te conformeren aan dePOSIX 1003.2 en 1003.2a specificaties voor de schaal. Deze versie heeft veel functies waardoor het in sommige opzichten lijkt op de Korn-shell, maar het is geen Korn-shell-kloon (zie ksh (1)). Alleen kenmerken aangeduid metPOSIX plus een paar Berkeley-uitbreidingen, worden opgenomen in deze schaal. Wij verwachtenPOSIX conformiteit op het moment dat 4.4 BSD wordt vrijgegeven. Deze man-pagina is niet bedoeld als een zelfstudie of een volledige specificatie van de shell.
Overzicht
De shell is een opdracht die regels uit een bestand of terminal leest, deze interpreteert en in het algemeen andere opdrachten uitvoert. Het is het programma dat wordt uitgevoerd wanneer een gebruiker zich aanmeldt bij het systeem (hoewel een gebruiker een andere shell kan selecteren met de opdracht chsh (1)). De shell implementeert een taal met flow control-constructies, een macrofaciliteit die een verscheidenheid aan functies biedt naast gegevensopslag, samen met ingebouwde geschiedenis en regelbewerkingsmogelijkheden. Het bevat vele functies om interactief gebruik te ondersteunen en heeft als voordeel dat de interpretatieve taal zowel voor interactief als niet-interactief gebruik (shell scripts) gemeenschappelijk is. Dat wil zeggen dat commando's rechtstreeks in de draaiende shell kunnen worden getypt of in een bestand kunnen worden geplaatst en het bestand direct door de shell kan worden uitgevoerd.
Aanroeping
Als er geen args aanwezig zijn en als de standaard input van de shell is verbonden met een terminal (of als de -ikvlag is ingesteld) en de -c optie is niet aanwezig, de shell wordt als een interactieve shell beschouwd. Een interactieve shell vraagt over het algemeen voor elke opdracht en behandelt programmeer- en opdrachtfouten op verschillende manieren (zoals hieronder beschreven). Bij de eerste start inspecteert de shell argument 0 en als het begint met een streepje `- 'wordt de shell ook beschouwd als een login-shell. Dit gebeurt normaal gesproken automatisch door het systeem wanneer de gebruiker voor het eerst inlogt. Een inlogshell leest eerst opdrachten uit de bestanden / etc / profile en .profile als deze bestaan. Als de omgevingsvariabeleENV is ingesteld op toegang tot een shell of is ingesteld in de .profile van een login-shell, de shell leest vervolgens opdrachten van het bestand met de naam inENVDaarom moet een gebruiker opdrachten plaatsen die alleen moeten worden uitgevoerd tijdens het aanmelden in het .profile-bestand en opdrachten die worden uitgevoerd voor elke shell in deENV het dossier. Om deENV variabele naar een bestand, plaats de volgende regel in uw .profile van uw homedirectory
ENV = $ HOME / .shinit; ENV exporteren
vervangen door `` .shinit '' elke gewenste bestandsnaam. Sinds deENV bestand wordt gelezen voor elke aanroep van de shell, inclusief shellscripts en niet-interactieve shells, het volgende paradigma is handig voor het beperken van opdrachten in de shellENV bestand naar interactieve aanroepingen. Plaats commando's in de `` case '' en `` esac '' hieronder (deze commando's worden later beschreven):
case $ - in * i *)
# opdrachten voor alleen interactief gebruik
…
esac
Als opdrachtregelargumenten naast de opties zijn opgegeven, behandelt de shell het eerste argument als de naam van een bestand waarvan de opdrachten moeten worden gelezen (een shellscript) en worden de overige argumenten ingesteld als de positionele parameters van de shell ($ 1 , $ 2, enz.). Anders leest de shell opdrachten uit zijn standaardinvoer.
Verwerking van lijst met argumenten
Alle opties voor een enkele letter hebben een overeenkomstige naam die kan worden gebruikt als argument voor de -O keuze. De set -O de naam wordt naast de optie voor één letter gegeven in de onderstaande beschrijving. Door een streepje `` - '' in te stellen wordt de optie ingeschakeld, terwijl met een plus `` + '' de optie wordt uitgeschakeld. De volgende opties kunnen worden ingesteld via de opdrachtregel of met de set (1) ingebouwd (later beschreven).
-een allexport
Exporteer alle variabelen waaraan is toegewezen. (UNIMPLEMENTED voor 4.4alpha)
-C
Lees opdrachten van de opdrachtregel. Er worden geen opdrachten van de standaardinvoer gelezen.
-C noclobber
Bestaande bestanden niet overschrijven met ``> '' (UNIMPLEMENTED voor 4.4alpha)
-e errexit
Als het niet interactief is, sluit het dan onmiddellijk als een niet-geteste opdracht mislukt. De exitstatus van een opdracht wordt beschouwd als expliciet getest als de opdracht wordt gebruikt om eenals elifwhile oftot of als het commando de linker operand is van een `` && '' of `` || '' operator.
-f noglob
Uitschakelen van padnaamuitbreiding.
-n noexec
Als dit niet interactief is, leest u de opdrachten maar voert u ze niet uit. Dit is handig voor het controleren van de syntaxis van shellscripts.
-u nounset
Schrijf een bericht naar de standaardfout wanneer u een variabele probeert uit te breiden die niet is ingesteld en als de shell niet interactief is, sluit u onmiddellijk af. (UNIMPLEMENTED voor 4.4alpha)
-v breedsprakig
De shell schrijft zijn invoer naar de standaardfout terwijl deze wordt gelezen. Handig voor foutopsporing.
-X xtrace
Schrijf elke opdracht naar de standaardfout (voorafgegaan door een `+ 'voordat deze wordt uitgevoerd. Handig voor foutopsporing.
-q quietprofile
Als de -v of -X opties zijn ingesteld, pas ze niet toe bij het lezen van initialisatiebestanden, deze zijn / etc / profile. profile en het bestand gespecificeerd door deENV omgevingsvariabele.
-IK ignoreeof
Negeer EOF's van invoer wanneer deze interactief is.
-ik interactieve
Dwing de shell om interactief te gedragen.
-m monitor
Taakbesturing inschakelen (automatisch instellen wanneer interactief).
-s stdin
Lees commando's uit standaard invoer (zet automatisch in als er geen bestandsargumenten aanwezig zijn). Deze optie heeft geen effect wanneer ingesteld nadat de shell al is gestart (d.w.z. met set (1)).
-V vi
Schakel de ingebouwde opdrachtregeleditor vi (1) in (uitschakelen -E als het is ingesteld).
-E emacs
Schakel de ingebouwde emacs (1) opdrachtregeleditor in (uitschakelen -V als het is ingesteld).
-b verwittigen
Schakel asynchrone melding in over het voltooien van de taaktaak. (UNIMPLEMENTED voor 4.4alpha)
Lexicale structuur
De shell leest invoer in termen van regels uit een bestand en verdeelt deze in woorden in witruimte (spaties en tabs) en bij bepaalde reeksen van karakters die speciaal zijn voor de shell genaamd `` operatoren '' Er zijn twee soorten operatoren: besturingsoperatoren en omleidingsoperatoren (hun betekenis wordt later besproken). Hieronder volgt een lijst met operators:
"Controle operators:"
& && ( ) ; ;; | || "Redirection-operator:" < > >| << >> <& >& <<- <>
Citeren wordt gebruikt om de speciale betekenis van bepaalde tekens of woorden voor de shell te verwijderen, zoals operators, witruimte of sleutelwoorden. Er zijn drie soorten offertes: gematchte enkele aanhalingstekens, gematchte dubbele aanhalingstekens en backslash. Een backslash behoudt de letterlijke betekenis van het volgende teken, met uitzondering van Aq newline. Een backslash voorafgaand aan een Aq-newline wordt behandeld als een lijn-voortzetting. Het insluiten van tekens in enkele aanhalingstekens behoudt de letterlijke betekenis van alle tekens (behalve enkele aanhalingstekens, waardoor het niet mogelijk is om enkele aanhalingstekens in een enkele reeks te plaatsen). Het insluiten van tekens binnen dubbele aanhalingstekens behoudt de letterlijke betekenis van alle tekens behalve dollarteken ($) backquote (`) en backslash () De backslash tussen dubbele aanhalingstekens is historisch vreemd en dient alleen om de volgende tekens aan te duiden: $ ` Anders blijft het letterlijk. Gereserveerde woorden zijn woorden die een speciale betekenis hebben voor de shell en worden herkend aan het begin van een regel en na een controle-operator. De volgende zijn gereserveerde woorden: ! Taelif Ta fi Ta terwijl Ta geval anders Tavoor Ta dan Ta {Ta} doe Tagedaan Ta tot Ta als Ta esac Hun betekenis wordt later besproken. Een alias is een naam en bijbehorende waarde die is ingesteld met behulp van het ingebouwde commando alias (1). Wanneer een gereserveerd woord kan voorkomen (zie hierboven) en na het controleren op gereserveerde woorden, controleert de shell het woord om te zien of het overeenkomt met een alias. Als dit het geval is, wordt deze in de invoerstroom vervangen door de bijbehorende waarde. Als er bijvoorbeeld een alias is genaamd `` lf '' met de waarde `` ls -F '', dan is de invoer: Als het foobar is zou worden ls-F foobar Aliassen bieden een handige manier voor naïeve gebruikers om een beschrijving van opdrachten te maken zonder dat ze hoeven te leren hoe ze functies met argumenten kunnen maken. Ze kunnen ook worden gebruikt om lexic obscure code te maken. Dit gebruik wordt afgeraden. De shell interpreteert de woorden die worden gelezen volgens een taal, waarvan de specificatie buiten het bereik van deze man-pagina valt (verwijs naar de BNF in dePOSIX 1003.2 document). In wezen wordt een regel gelezen en als het eerste woord van de regel (of na een besturingsoperator) geen gereserveerd woord is, heeft de shell een eenvoudige opdracht herkend. Anders kan een complexe opdracht of een andere speciale constructie zijn herkend. Als een eenvoudige opdracht is herkend, voert de shell de volgende acties uit: Vooraanstaande woorden van de vorm `` name = value '' worden verwijderd en toegewezen aan de omgeving van de eenvoudige opdracht. Redirectie-operatoren en hun argumenten (zoals hieronder beschreven) worden verwijderd en opgeslagen voor verwerking. De resterende woorden worden uitgebreid zoals beschreven in de sectie `` Uitbreidingen '' en het eerste resterende woord wordt beschouwd als de opdrachtnaam en de opdracht wordt gevonden. De resterende woorden worden beschouwd als de argumenten van het commando. Als er geen opdrachtnaam is gevonden, hebben de variabelen toewijzingen `` name = value '' die in item 1 worden herkend, invloed op de huidige shell. Omleidingen worden uitgevoerd zoals beschreven in de volgende sectie. omleidingen Redirecties worden gebruikt om te wijzigen waar een commando de invoer leest of de uitvoer zendt. Over het algemeen worden door omleidingen een bestaande verwijzing naar een bestand geopend, gesloten of gedupliceerd. Het algemene formaat dat wordt gebruikt voor doorverwijzing is: n redir-op bestand waar redir-op is een van de eerder genoemde omleidingsoperators. Hieronder volgt een lijst met mogelijke omleidingen. De Bq n is een optioneel nummer, zoals in `3 '(niet` Bq 3' dat verwijst naar een bestandsdescriptor. n> bestand Standaarduitvoer (of n) omleiden naar bestand. n> | het dossier Hetzelfde, maar negeer de -C keuze. n >> bestand Voeg standaarduitvoer (of n) toe aan het bestand. n <bestand Omleiden standaard invoer (of n) uit bestand. n1 <& n2 Dubbele standaardinvoer (of n1) van bestandsbeschrijving n2. n <& - Standaardinvoer (of n) sluiten. n1> & n2 Dubbele standaarduitvoer (of n1) van n2. n> & - Sluit standaarduitvoer (of n). n <> bestand Open bestand voor lezen en schrijven op standaardinvoer (of n). De volgende omleiding wordt vaak een `` hier-document '' genoemd n << scheidingsteken hier-doc-text … scheidingsteken Alle tekst op opeenvolgende regels tot aan het scheidingsteken wordt weggeschreven en beschikbaar gemaakt voor de opdracht op standaardinvoer of bestandsdescriptor n als deze is opgegeven.Als het scheidingsteken zoals opgegeven op de eerste regel wordt vermeld, wordt de here-doc-tekst letterlijk behandeld, anders wordt de tekst onderworpen aan parameteruitbreiding, opdrachtsubstitutie en rekenkundige uitbreiding (zoals beschreven in de sectie over `` Uitbreidingen) ' 'Als de operator `` << -' 'in plaats van `` <<' 'is, worden de leidende tabbladen in de here-doc-tekst verwijderd. Er zijn drie soorten commando's: shell-functies, ingebouwde commando's en normale programma's - en de opdracht wordt in die volgorde opgezocht (op naam). Ze worden elk op een andere manier uitgevoerd. Wanneer een shell-functie wordt uitgevoerd, worden alle shell-positionele parameters (behalve $ 0, die ongewijzigd blijven) ingesteld op de argumenten van de shell-functie. De variabelen die expliciet in de omgeving van de opdracht worden geplaatst (door ze toewijzingen vóór de functienaam te plaatsen) worden lokaal gemaakt voor de functie en worden ingesteld op de gegeven waarden. Vervolgens wordt het in de functiedefinitie gegeven commando uitgevoerd. De positionele parameters worden hersteld naar hun oorspronkelijke waarden wanneer de opdracht is voltooid. Dit alles gebeurt binnen de huidige shell. Shell-constructies worden intern naar de schaal uitgevoerd, zonder een nieuw proces uit te zetten. Anders, als de opdrachtnaam niet overeenkomt met een functie of gebouwd, wordt de opdracht als een normaal programma in het bestandssysteem gezocht (zoals beschreven in de volgende sectie). Wanneer een normaal programma wordt uitgevoerd, voert de shell het programma uit en geeft de argumenten en de omgeving door aan het programma. Als het programma geen normaal uitvoerbaar bestand is (d.w.z. als het niet begint met het "magische nummer" waarvanASCII representatie is "#!", dus execve (2) geeft Er ENOEXEC als resultaat) de shell zal het programma in een subshell interpreteren. De child shell zal zichzelf in dit geval opnieuw initialiseren, zodat het effect zal zijn alsof een nieuwe shell is aangeroepen om het ad-hoc shell-script af te handelen, behalve dat de locatie van gehashte opdrachten in de bovenliggende shell door de computer onthouden zal worden kind. Merk op dat eerdere versies van dit document en de broncode zelf misleidend en sporadisch verwijzen naar een shellscript zonder een magisch nummer als een "shell-procedure". Bij het lokaliseren van een commando, kijkt de schaal eerst of deze een shell-functie heeft met die naam. Dan zoekt het naar een ingebouwde opdracht met die naam. Als een ingebouwde opdracht niet wordt gevonden, gebeurt er een van de twee dingen: Opdrachtnamen die een schuine streep bevatten, worden eenvoudig uitgevoerd zonder zoekopdrachten uit te voeren. De shell doorzoekt elk item inPAD op zijn beurt voor het commando. De waarde van dePADvariabele moet een reeks items zijn, gescheiden door dubbele punten. Elke invoer bestaat uit een mapnaam. De huidige map kan impliciet worden aangegeven door een lege mapnaam, of expliciet door een enkele periode. Command Exit Status Elke opdracht heeft een exitstatus die het gedrag van andere shell-opdrachten kan beïnvloeden. Het paradigma is dat een commando met nul eindigt voor normaal of succes, en niet-nul voor falen, fouten of een valse indicatie. De man-pagina voor elke opdracht moet de verschillende exit-codes aangeven en wat ze betekenen. Bovendien retourneren de ingebouwde opdrachten exitcodes, net als een uitgevoerde shell-functie. Complexe opdrachten zijn combinaties van eenvoudige commando's met controle-operatoren of gereserveerde woorden, die samen een grotere complexe opdracht creëren. Meer in het algemeen is een opdracht een van de volgende: Tenzij anders vermeld, is de exitstatus van een opdracht die van de laatste eenvoudige opdracht die door de opdracht is uitgevoerd. Een pijplijn is een reeks van een of meer opdrachten gescheiden door de controle-operator |. De standaarduitvoer van alle, behalve de laatste opdracht, is verbonden met de standaardinvoer van de volgende opdracht. De standaarduitvoer van de laatste opdracht wordt overgenomen van de shell, zoals gebruikelijk. Het formaat voor een pijplijn is: ! opdracht1 | command2 … De standaarduitvoer van opdracht 1 is verbonden met de standaardinvoer van opdracht2. De standaardinvoer, standaarduitvoer of beide van een opdracht worden geacht te zijn toegewezen door de pijplijn voordat enige omleiding is opgegeven door omleidingsoperatoren die deel uitmaken van de opdracht. Als de pijplijn niet op de achtergrond staat (wordt later besproken), wacht de shell totdat alle opdrachten zijn voltooid. Als het gereserveerde woord! gaat niet vooraf aan de pijplijn, de exit-status is de exit-status van de laatste opdracht die is opgegeven in de pijplijn. Anders is de exit-status de logische NOT van de exit-status van de laatste opdracht. Dat wil zeggen dat als de laatste opdracht nul is, de uitgangsstatus 1 is; als de laatste opdracht groter dan nul is, is de uitgangsstatus nul. Omdat pijplijntoewijzing van standaardinvoer of standaarduitvoer of beide plaatsvindt vóór omleiding, kan deze worden gewijzigd door omleiding. Bijvoorbeeld: $ command1 2> & 1 | command2 verzendt zowel de standaarduitvoer als de standaardfout van opdracht 1 naar de standaardinvoer van opdracht2. EEN ; of Merk op dat in tegenstelling tot sommige andere shells, elk proces in de pijplijn een kind is van de aanroepende shell (tenzij het een shell is gebouwd, in welk geval het wordt uitgevoerd in de huidige shell - maar elk effect dat het heeft op de omgeving wordt gewist). Als een opdracht wordt beëindigd door de operator ampersand (&), voert de shell de opdracht asynchroon uit, dat wil zeggen dat de shell niet wacht totdat de opdracht is voltooid voordat de volgende opdracht wordt uitgevoerd. Het formaat voor het uitvoeren van een opdracht op de achtergrond is: command1 & command2 & … Als de shell niet interactief is, wordt de standaardinvoer van een asynchrone opdracht ingesteld op / dev / null Een lijst is een reeks van nul of meer opdrachten gescheiden door nieuwe regels, puntkomma's of ampersands en optioneel beëindigd door een van deze drie tekens. De opdrachten in een lijst worden uitgevoerd in de volgorde waarin ze zijn geschreven. Als de opdracht wordt gevolgd door een ampersand, start de shell de opdracht en gaat onmiddellijk verder met de volgende opdracht; anders wacht het tot de opdracht wordt beëindigd voordat naar de volgende wordt gegaan. `` && '' en `` || '' zijn AND-OF lijst operatoren. `` && '' voert de eerste opdracht uit en voert vervolgens de tweede opdracht uit als de eindstatus van de eerste opdracht nul is. `` || '' is vergelijkbaar, maar voert het tweede commando uit als de exit-status van het eerste commando niet-nul is. `` && '' en `` || '' hebben beide dezelfde prioriteit. De syntaxis van het if-commando is als lijst dan lijst elif lijst dan lijst … andere lijst fi De syntaxis van het while-commando is terwijl lijst doe lijst gedaan De twee lijsten worden herhaaldelijk uitgevoerd terwijl de uitgangsstatus van de eerste lijst nul is. De opdracht until is vergelijkbaar, maar heeft het woord totdat het in de tijd is, waardoor het wordt herhaald totdat de exitstatus van de eerste lijst nul is. De syntaxis van het voor-commando is voor variabel in woord … doe lijst gedaan De woorden worden uitgevouwen en vervolgens wordt de lijst herhaaldelijk uitgevoerd waarbij de variabele beurtelings op elk woord wordt ingesteld. doen en gedaan kan worden vervangen door `` {'' en ``} '' De syntaxis van het breek- en vervolgcommando is pauze num ga verder num Break beëindigt de num inner of while while loops. Ga verder met de volgende iteratie van de binnenste lus. Deze worden geïmplementeerd als ingebouwde opdrachten. De syntaxis van de opdracht case is case word in patroon) lijst ;; … esac Het patroon kan eigenlijk een of meer patronen zijn (zie Shell-patronen later beschreven), gescheiden door `` '' tekens. Opdrachten kunnen ook gegroepeerd worden door te schrijven (lijst) of { lijst; De eerste voert de opdrachten in een submap uit. Ingebouwde commando's gegroepeerd in een (lijst) hebben geen invloed op de huidige shell. De tweede vorm vouwt niet een andere schaal dus is het iets efficiënter. Door opdrachten op deze manier samen te groeperen, kunt u hun uitvoer omleiden alsof ze één programma waren: {printf hallo; printf wereld n ";}> begroeting functies De syntaxis van een functiedefinitie is name () opdracht Een functiedefinitie is een uitvoerbare instructie; wanneer het wordt uitgevoerd, wordt een functie met de naam Name geïnstalleerd en wordt een exitstatus van nul geretourneerd. De opdracht is normaal gesproken een lijst tussen `` {'' en ``} '' Variabelen kunnen worden verklaard als lokaal voor een functie met behulp van een lokale opdracht. Dit zou moeten verschijnen als de eerste instructie van een functie en de syntaxis is lokaal variabele | - … Lokaal wordt geïmplementeerd als een ingebouwd commando. Wanneer een variabele lokaal wordt gemaakt, neemt deze de beginwaarde en geëxporteerde en alleen-lezen vlaggen over van de variabele met dezelfde naam in het omringende bereik, als die er is. Anders wordt de variabele aanvankelijk uitgeschakeld. De shell maakt gebruik van dynamische scoping, zodat als u de variabele x local maakt naar functie f, die dan functie g aanroept, verwijzingen naar de variabele x gemaakt in g verwijzen naar de variabele x gedeclareerd binnen f, niet naar de globale variabele genaamd x . De enige speciale parameter die lokaal kan worden gemaakt, is `` - '' Lokaal `maken van alle shell-opties die zijn gewijzigd via de opdracht set binnen de functie om te worden hersteld naar hun oorspronkelijke waarden wanneer de functie terugkeert. De syntaxis van de opdracht return is retourneer exitstatus Het beëindigt de momenteel uitgevoerde functie. Return wordt geïmplementeerd als een ingebouwd commando. De shell onderhoudt een set parameters. Een parameter die wordt aangeduid met een naam, wordt een variabele genoemd. Bij het opstarten verandert de shell alle omgevingsvariabelen in shell-variabelen. Nieuwe variabelen kunnen worden ingesteld met behulp van het formulier name = value Variabelen die door de gebruiker zijn ingesteld, moeten een naam hebben die uitsluitend uit alfabetische tekens, getallen en onderstrepingstekens bestaat - de eerste moet niet numeriek zijn. Een parameter kan ook worden aangeduid met een cijfer of een speciaal teken, zoals hieronder wordt uitgelegd. Een positionele parameter is een parameter die wordt aangeduid door een cijfer (n> 0). De shell stelt deze aanvankelijk in op de waarden van de opdrachtregelargumenten die de naam van het shellscript volgen. De ingebouwde set (1) kan ook worden gebruikt om ze in te stellen of opnieuw in te stellen. Een speciale parameter is een parameter die wordt aangeduid met een van de volgende speciale tekens. De waarde van de parameter wordt weergegeven naast het teken. * Uitbreidt naar de positionele parameters, te beginnen met een. Wanneer de uitbreiding plaatsvindt in een string met een dubbele aanhalingstrekking, wordt deze uitgevouwen tot een enkel veld met de waarde van elke parameter gescheiden door het eerste teken van deIFS variabele, of door een @ Uitbreidt naar de positionele parameters, te beginnen met een.Wanneer de uitbreiding optreedt binnen dubbele aanhalingstekens, wordt elke positionele parameter uitgebreid als een afzonderlijk argument. Als er geen positionele parameters zijn, genereert de uitbreiding van @ nul argumenten, zelfs als @ dubbel wordt aangehaald. Wat dit in feite betekent, is bijvoorbeeld dat als $ 1 `` abc '' is en $ 2 `` def ghi '' is, Qq $ @ naar de twee argumenten wordt uitgebreid: abc def ghi # Uitbreidt naar het aantal positionele parameters. ? Uitbreidt naar de exit-status van de meest recente pijplijn. - (Koppelteken.) Wordt uitgevouwen naar de huidige optievlaggen (de optielamen met één letter worden samengevoegd tot een tekenreeks) zoals opgegeven bij aanroep, door de set builtin-opdracht of impliciet door de shell. $ Wordt uitgevouwen tot de proces-ID van de aangeroepen shell. Een subshell behoudt dezelfde waarde van $ als de bovenliggende. ! Breidt uit naar de proces-ID van de meest recente achtergrondopdracht die wordt uitgevoerd vanuit de huidige shell. Voor een pijplijn is de proces-ID die van de laatste opdracht in de pijplijn. 0 (nul.) Wordt uitgevouwen tot de naam van het shell- of shell-script. Uitbreidingen van Word Deze clausule beschrijft de verschillende uitbreidingen die op woorden worden uitgevoerd. Niet alle uitbreidingen worden op elk woord uitgevoerd, zoals later wordt uitgelegd. Tilde-uitbreidingen, parameteruitbreidingen, opdrachtsubstituties, rekenkundige uitbreidingen en verhuizingen van verhogingen die binnen een enkel woord voorkomen, breiden uit naar een enkel veld. Het is alleen veld splitsen of padnaamuitbreiding die meerdere velden van een enkel woord kan maken. De enige uitzondering op deze regel is de uitbreiding van de speciale parameter @ binnen dubbele aanhalingstekens, zoals hierboven beschreven. De volgorde van woorduitbreiding is: Tilde expansie, parameteruitbreiding, opdrachtvervanging, rekenuitbreiding (deze komen allemaal tegelijkertijd voor). Veld splitsen wordt uitgevoerd op velden gegenereerd door stap (1) tenzij deIFS variabele is null. Uitbreiding van padnaam (tenzij ingesteld -f is van kracht). Citaat verwijderen. Het $ -teken wordt gebruikt om parameteruitbreiding, opdrachtvervanging of rekenkundige evaluatie in te voeren. Een woord dat begint met een niet-geciteerd tildelkarakter (~) wordt onderworpen aan tilde-uitbreiding. Alle tekens tot een schuine streep (/) of het einde van het woord worden behandeld als een gebruikersnaam en worden vervangen door de basismap van de gebruiker. Als de gebruikersnaam ontbreekt (zoals in ~ / foobar), wordt de tilde vervangen door de waarde van de HUIS variabele (de basismap van de huidige gebruiker). Het formaat voor parameteruitbreiding is als volgt: $ {Uitdrukking} waarbij expressie uit alle tekens bestaat totdat de overeenkomende ``} '' Any ``} '' door een backslash of binnen een gequoteerde string is ontsnapt, en tekens in ingesloten rekenkundige uitbreidingen, opdrachtsubstituties en variabele uitbreidingen niet worden onderzocht bij het bepalen van de matching ``} '' De eenvoudigste vorm voor parameteruitbreiding is: $ {Parameter} De waarde, indien aanwezig, van de parameter is vervangen. De parameternaam of -symbool kan worden ingesloten tussen accolades, die optioneel zijn, met uitzondering van positionele parameters met meer dan één cijfer of wanneer de parameter wordt gevolgd door een teken dat kan worden geïnterpreteerd als deel van de naam. Als een parameteruitbreiding optreedt in dubbele aanhalingstekens: Pathname-uitbreiding wordt niet uitgevoerd op de resultaten van de uitbreiding. Veldsplitsing wordt niet uitgevoerd op de resultaten van de uitbreiding, met uitzondering van @. Bovendien kan een parameteruitbreiding worden gewijzigd door een van de volgende indelingen te gebruiken. $ {Grootheid: -woord} Gebruik standaardwaarden. Als de parameter niet is ingesteld of nul is, wordt de uitbreiding van het woord vervangen; anders wordt de waarde van de parameter vervangen. $ {Grootheid: = woord} Wijs standaardwaarden toe. Als de parameter niet is ingesteld of nul is, wordt de uitbreiding van het woord aan de parameter toegewezen. In alle gevallen wordt de uiteindelijke waarde van de parameter vervangen. Alleen variabelen, geen positionele parameters of speciale parameters, kunnen op deze manier worden toegewezen. $ {Grootheid:? Word} Geef een fout aan als Null of Unset. Als de parameter niet is ingesteld of nul is, wordt de uitbreiding van het woord (of een bericht dat aangeeft dat het woord wordt weggelaten als het woord wordt weggelaten) naar de standaardfout geschreven en wordt de shell afgesloten met een uitgangsstatus die niet nul is. Anders wordt de waarde van de parameter vervangen. Een interactieve shell hoeft niet te worden afgesloten. $ {Grootheid: + woord} Gebruik alternatieve waarde. Als parameter niet is ingesteld of null, is nul vervangen; anders wordt de uitbreiding van het woord vervangen. In de eerder getoonde parameter-uitbreidingen resulteert het gebruik van de dubbele punt in de indeling in een test voor een parameter die niet is ingesteld of nul; weglating van de dubbele punt resulteert in een test voor een parameter die alleen niet is ingesteld. $ {# Parameter} Snaarlengte. De lengte in tekens van de waarde van de parameter. De volgende vier soorten parameteruitbreiding zorgen voor substringverwerking. In elk geval wordt de patroonvergelijkende notatie (zie Shell-patronen), in plaats van de reguliere expressie-notatie, gebruikt om de patronen te evalueren. Als de parameter * of @ is, is het resultaat van de uitbreiding niet opgegeven. Het invoegen van de volledige parameteruitbreidingsreeks in dubbele aanhalingstekens leidt niet tot de volgende vier soorten patroontekens, terwijl het citeren van tekens binnen de accolades dit effect heeft. $ {Grootheid% woord} Verwijder het kleinste achtervoegselpatroon. Het woord wordt uitgebreid om een patroon te produceren. De parameteruitbreiding resulteert dan in een parameter, waarbij het kleinste deel van het achtervoegsel overeenkomt met het verwijderde patroon. $ {Grootheid %% woord} Verwijder het grootste achtervoegselpatroon.Het woord wordt uitgebreid om een patroon te produceren. De parameteruitbreiding resulteert dan in een parameter, waarbij het grootste deel van het achtervoegsel overeenkomt met het verwijderde patroon. $ {Grootheid # woord} Verwijder het kleinste prefixpatroon. Het woord wordt uitgebreid om een patroon te produceren. De parameteruitbreiding resulteert dan in een parameter, waarbij het kleinste deel van het voorvoegsel overeenkomt met het verwijderde patroon. $ {Grootheid ## woord} Verwijder het grootste prefixpatroon. Het woord wordt uitgebreid om een patroon te produceren. De parameteruitbreiding resulteert dan in een parameter, waarbij het grootste deel van het voorvoegsel overeenkomt met het verwijderde patroon. Commandosubstitutie Met opdrachtsubstitutie kan de uitvoer van een opdracht worden vervangen in plaats van de opdrachtnaam zelf. Commandosubstitutie vindt plaats als de opdracht als volgt is ingesloten: $ (Commando) of Po `` backquoted '' versie Pc: `command` De shell breidt de opdrachtsubstitutie uit door de opdracht in een subshellomgeving uit te voeren en de opdrachtvervanging te vervangen door de standaarduitvoer van de opdracht, waarbij reeksen van een of meer worden verwijderd Arithmetische expansie verschaft een mechanisme voor het evalueren van een rekenkundige uitdrukking en het substitueren van de waarde ervan. Het formaat voor rekenkundige uitbreiding is als volgt: $ ((Expressie)) De expressie wordt behandeld alsof het dubbele aanhalingstekens zijn, behalve dat een dubbel aanhalingsteken in de expressie niet speciaal wordt behandeld. De shell breidt alle tokens in de uitdrukking uit voor parameteruitbreiding, opdrachtvervanging en citaatverwijdering. Vervolgens behandelt de shell dit als een rekenkundige uitdrukking en vervangt de waarde van de uitdrukking. Na parameteruitbreiding, opdrachtvervanging en rekenkundige uitbreiding scant de shell de resultaten van uitbreidingen en substituties die niet in dubbele aanhalingstekens voor veldsplitsing voorkomen en kunnen meerdere velden ontstaan. De shell behandelt elk karakter van deIFS als scheidingsteken en gebruik de scheidingstekens om de resultaten van parameteruitbreiding en opdrachtvervanging op te splitsen in velden. Tenzij de -f vlag is ingesteld, generatie van bestandsnamen is uitgevoerd nadat het splitsen van het woord is voltooid. Elk woord wordt gezien als een reeks patronen, gescheiden door schuine strepen. Het uitbreidingsproces vervangt het woord door de namen van alle bestaande bestanden waarvan de naam kan worden gevormd door elk patroon te vervangen door een tekenreeks die overeenkomt met het opgegeven patroon. Er gelden twee beperkingen: ten eerste kan een patroon niet overeenkomen met een tekenreeks met een schuine streep en ten tweede kan een patroon niet overeenkomen met een tekenreeks die begint met een punt, tenzij het eerste teken van het patroon een punt is. In de volgende sectie worden de patronen beschreven die worden gebruikt voor zowel de uitbreiding van de padnaam als de opdracht case (1). Een patroon bestaat uit normale tekens, die overeenkomen met zichzelf, en metakarakters. De metakarakters zijn ``! '' `` * '' ``? '' En `` '' Deze tekens verliezen hun speciale betekenis als ze worden geciteerd. Wanneer een opdracht of variabele vervanging wordt uitgevoerd en het dollarteken of de aanhalingstekens niet dubbel worden vermeld, wordt de waarde van de variabele of de uitvoer van de opdracht gescand op deze tekens en worden deze omgezet in metatekens. Een asterisk (`` * '') komt overeen met een tekenreeks. Een vraagteken komt overeen met een enkel teken. Een linkerhaak (`` '') introduceert een tekenklasse. Het einde van de tekenklasse wordt aangegeven met een (`` '') als de `` '' ontbreekt en de `` '' komt overeen met een `` '' in plaats van een tekenklasse in te voeren. Een tekenklasse komt overeen met een van de tekens tussen de vierkante haken. Een reeks tekens kan worden opgegeven met een minteken. De tekenklasse kan worden aangevuld door een uitroepteken het eerste teken van de tekenklasse te maken. Als u een `` '' in een tekenklasse wilt opnemen, moet u deze als eerste in de lijst opnemen (na de ``! '' Indien aanwezig). Als u een minteken wilt opnemen, moet u het als eerste of laatste teken opnemen In deze sectie worden de ingebouwde opdrachten vermeld die zijn ingebouwd omdat ze een bewerking moeten uitvoeren die niet door een afzonderlijk proces kan worden uitgevoerd. Naast deze zijn er verschillende andere commando's die kunnen worden gebouwd voor efficiëntie (bijvoorbeeld echo 1). : Een null-opdracht die een 0 (true) -uitgangswaarde retourneert. . het dossier De opdrachten in het opgegeven bestand worden gelezen en uitgevoerd door de shell. alias naam = string … Als name = snaar is opgegeven, definieert de shell de alias naam met waarde draad Als dat zo is naam is opgegeven, de waarde van de alias naam is afgedrukt. Zonder argumenten, dealias builtin drukt de namen en waarden van alle gedefinieerde aliassen af (zieunalias) bg baan … Doorgaan met de opgegeven taken (of de huidige taak als er geen taken worden gegeven) op de achtergrond. commando commando arg … Voer de opgegeven ingebouwde opdracht uit. (Dit is handig als u een shell-functie hebt met dezelfde naam als een ingebouwde opdracht.) CD directory Schakel over naar de opgegeven map (standaard$ HOME) Als een vermelding voorCDPATH verschijnt in de omgeving van deCD opdracht of de shell-variabeleCDPATH is ingesteld en de mapnaam begint niet met een schuine streep, dan worden de mappen vermeld inCDPATH wordt gezocht naar de opgegeven map. Het formaat vanCDPATH is hetzelfde als dat vanPAD In een interactieve shell, deCD commando zal de naam afdrukken van de map waarheen het is overgeschakeld als dit verschilt van de naam die de gebruiker heeft gegeven. Deze kunnen verschillen omdat hetCDPATH mechanisme werd gebruikt of omdat een symbolische link werd overschreden. eval draad… Alle argumenten samenvoegen met spaties. Vervolgens opnieuw analyseren en het commando uitvoeren. exec commando arg … Tenzij het commando wordt weggelaten, wordt het shell-proces vervangen door het opgegeven programma (wat een echt programma moet zijn, geen ingebouwde shell of functie). Alle omleidingen op deexeccommando zijn gemarkeerd als permanent, zodat ze niet ongedaan worden gemaakt wanneer deexec opdracht is voltooid. Uitgang exitstatus Beëindig het shell-proces. Als exitstatus wordt gegeven als de uitgangsstatus van de schaal; anders wordt de exit-status van de voorgaande opdracht gebruikt. exporteren naam… exporteren -p De opgegeven namen worden geëxporteerd zodat ze in de omgeving van opeenvolgende opdrachten verschijnen. De enige manier om een variabele niet te exporteren, is door hem uit te schakelen. Met de shell kan de waarde van een variabele worden ingesteld op het moment dat deze wordt geëxporteerd door te schrijven exportnaam = waarde Zonder argumenten vermeldt de exportopdracht de namen van alle geëxporteerde variabelen. Met de -poptie opgegeven, wordt de uitvoer op de juiste manier geformatteerd voor niet-interactief gebruik. fc-e editor eerste laatste fc -l -nr eerste laatste fc -s oude = new eerste Defc ingebouwde lijsten, of bewerkingen en opnieuw uitgevoerde opdrachten, eerder ingevoerd in een interactieve shell. -E-editor Gebruik de editor met de naam editor om de opdrachten te bewerken. De editorstring is een opdrachtnaam, afhankelijk van het zoeken via dePAD variabel. De waarde in deFCEDIT variabele wordt gebruikt als standaard wanneer -e is niet gespecificeerd. AlsFCEDIT is null of unset, de waarde van deEDITOR variabele wordt gebruikt. AlsEDITOR is null of unset, ed (1) wordt gebruikt als de editor. -l (ell) Maak een lijst van de opdrachten in plaats van een editor erop aan te roepen. De opdrachten worden geschreven in de volgorde die wordt aangegeven door de eerste en laatste operanden, zoals beïnvloed door -r bij elk commando voorafgegaan door het commandonummer. -n Onderdruk opdrachtnummers bij listing met -l. -r De volgorde van de weergegeven opdrachten omkeren (met -l of bewerkt (met geen van beide -l noch -s) -s Voer de opdracht opnieuw uit zonder een editor aan te roepen. eerste laatste Selecteer de opdrachten die u wilt weergeven of bewerken. Het aantal vorige opdrachten waartoe toegang kan worden verkregen, wordt bepaald door de waarde van deHISTSIZE variabel. De waarde van eerste of laatste of beide zijn een van de volgende: + Aantal Een positief getal dat een commandonummer voorstelt; opdrachtnummers kunnen worden weergegeven met de -l keuze. -aantal Een negatief decimaal getal dat de opdracht voorstelt die eerder het aantal opdrachten heeft uitgevoerd. Bijvoorbeeld, -1 is het onmiddellijk vorige commando. draad Een tekenreeks die de meest recent ingevoerde opdracht aangeeft die met die tekenreeks begint. Als de oude = nieuwe operand niet ook is opgegeven met -s de tekenreeks van de eerste operand mag geen ingesloten gelijkteken bevatten. De volgende omgevingsvariabelen beïnvloeden de uitvoering van fc: FCEDIT Naam van de te gebruiken editor. HISTSIZE Het aantal vorige opdrachten dat toegankelijk is. fg baan Verplaats de opgegeven taak of de huidige taak naar de voorgrond. getopts optstring var DePOSIX getopts commando, niet te verwarren met de Bell Labs -ontvangst getopt (1). Het eerste argument zou een reeks letters moeten zijn, die elk optioneel kunnen worden gevolgd door een dubbele punt om aan te geven dat de optie een argument vereist. De opgegeven variabele is ingesteld op de geparseerde optie. Degetopts commando deprecieert het oudere getopt (1) hulpprogramma vanwege de verwerking van argumenten die witruimte bevatten. Degetopts builtin kan worden gebruikt om opties en hun argumenten uit een lijst met parameters te verkrijgen. Wanneer aangeroepen,getopts plaatst de waarde van de volgende optie uit de optiereeks in de lijst in de shell-variabele gespecificeerd door var en het is een index in de shell-variabeleOPTIND Wanneer de shell wordt aangeroepen,OPTIND is geïnitialiseerd op 1. Voor elke optie die een argument vereist, moet degetopts builtin plaatst het in de shell-variabeleOPTARG Als een optie niet is toegestaan in de optstring danOPTARG wordt uitgeschakeld. optstring is een reeks van erkende optiebrieven. Als een letter wordt gevolgd door een dubbele punt, wordt van de optie verwacht dat deze een argument heeft dat al dan niet van witruimte is gescheiden. Als een optie-teken niet wordt gevonden waar verwacht,getopts zal de variabele instellen var naar een ``? ''getopts zal dan worden uitgeschakeldOPTARG en schrijf uitvoer naar standaardfout. Door een dubbele punt op te geven als het eerste teken van optstring alle fouten worden genegeerd. Een niet-nulwaarde wordt geretourneerd wanneer de laatste optie is bereikt. Als er geen overblijvende argumenten zijn,getopts zal instellen var naar de speciale optie, `` - '' anders zal het instellen var om ``? '' Het volgende codefragment laat zien hoe men de argumenten kan verwerken voor een opdracht die de opties a en b kan gebruiken en de optie c waarvoor een argument vereist is. terwijl getopts abc: fdozaak $ f ina | b) vlag = $ f ;;c) carg = $ OPTARG ;;?) echo $ GEBRUIKEN; uitgang 1;esacgedaanverschuif `expr $ OPTIND - 1` Deze code accepteert een van de volgende dingen als equivalent: cmd -acarg bestand bestandcmd-a -c arg bestandsbestandcmd-carg-een bestandcmd -a -carg - bestandsbestand hasj - rv commando… De shell onderhoudt een hash-tabel die de locaties van opdrachten onthoudt. Zonder argumenten, hethachee opdracht drukt de inhoud van deze tabel af. Inzendingen die sinds de vorige keer niet zijn bekekenCD commando is gemarkeerd met een asterisk; het is mogelijk dat deze vermeldingen ongeldig zijn. Met argumenten, dehachee opdracht verwijdert de opgegeven opdrachten uit de hash-tabel (tenzij het functies zijn) en lokaliseert ze vervolgens. Met de -v optie, hash print de locaties van de commando's zoals deze ze vindt. De -r optie zorgt ervoor dat de hash-opdracht alle ingangen in de hash-tabel verwijdert, behalve voor functies. jobid baan Druk de proces-ID's van de processen in de taak af. Als het baan argument wordt weggelaten, de huidige taak wordt gebruikt. jobs Met deze opdracht worden alle achtergrondprocessen weergegeven die kinderen zijn van het huidige shell-proces. pwd Print de huidige map. De ingebouwde opdracht kan verschillen van het programma met dezelfde naam omdat de ingebouwde opdracht onthoudt wat de huidige map is, in plaats van elke keer opnieuw te berekenen. Dit maakt het sneller. Als de huidige map echter is hernoemd, is de ingebouwde versie vanpwd blijft de oude naam afdrukken voor de map. lezen-p prompt -r variabele … De prompt wordt afgedrukt als de -p De optie is opgegeven en de standaardinvoer is een terminal. Vervolgens wordt een regel gelezen van de standaardinvoer. De volgende nieuwe regel wordt van de regel verwijderd en de lijn wordt gesplitst zoals beschreven in de sectie over woordsplitsing hierboven en de stukken worden in volgorde aan de variabelen toegewezen. Er moet ten minste één variabele worden opgegeven. Als er meer stukken dan variabelen zijn, worden de resterende stukjes (samen met de tekens inIFS die hen scheidde) worden toegewezen aan de laatste variabele. Als er meer variabelen zijn dan stukken, krijgen de resterende variabelen de nulstring toegewezen. Delezen builtin geeft succes aan tenzij EOF wordt aangetroffen bij invoer, in welk geval de fout wordt geretourneerd. Standaard tenzij de -r optie is opgegeven, de backslash `` '' fungeert als een escape-teken, waardoor het volgende teken letterlijk wordt behandeld. Als een backslash wordt gevolgd door een nieuwe regel, worden de backslash en de nieuwe regel verwijderd. alleen lezen naam… readonly -p De opgegeven namen zijn gemarkeerd als alleen-lezen, zodat ze later niet kunnen worden gewijzigd of uitgeschakeld. Met de shell kan de waarde van een variabele worden ingesteld op het moment dat deze als alleen-lezen wordt gemarkeerd alleen-lezen naam = waarde Zonder argumenten vermeldt de readonly-opdracht de namen van alle alleen-lezen variabelen. Met de -p optie opgegeven, wordt de uitvoer op de juiste manier geformatteerd voor niet-interactief gebruik. reeks { -opties | + opties | - arg … Dereeks commando voert drie verschillende functies uit. Zonder argumenten worden de waarden van alle shell-variabelen weergegeven. Als er opties worden gegeven, worden de opgegeven optievlaggen ingesteld of worden ze gewist zoals beschreven in de sectie Sx-verwerking van de lijst met argumenten. Het derde gebruik van de setopdracht is om de waarden van de positionele parameters van de shell in te stellen op de opgegeven args. Om de positionele parameters te veranderen zonder opties te veranderen, gebruikt u `` - '' als het eerste in te stellen argument. Als er geen args aanwezig zijn, zal het setcommando alle positionele parameters wissen (equivalent aan het uitvoeren van `` shift $ #. '' variabele waarde Wijst waarde toe aan variabele. (Over het algemeen is het beter om variabele = waarde te schrijven in plaats van te gebruikensetvar setvaris bedoeld om te worden gebruikt in functies die waarden toewijzen aan variabelen waarvan de naam wordt doorgegeven als parameters.) verschuiving n Verplaats de positionele parameters n keer. EENverschuiving stelt de waarde in van $1 de waarde van $2 de waarde van $2 de waarde van $3 enzovoort, waardoor de waarde van $# bij een. Als n groter is dan het aantal positionele parameters,verschuiving zal een foutmelding geven en afsluiten met retourstatus 2. tijden Druk de verzamelde gebruikers- en systeemtijden af voor de shell en voor processen die vanuit de shell worden uitgevoerd. De retourstatus is 0. val actie signaal… Veroorzaak de shell om actie te ontleden en uit te voeren wanneer een van de opgegeven signalen wordt ontvangen. De signalen worden gespecificeerd door het signaalnummer. Als signaal is0 de actie wordt uitgevoerd wanneer de shell wordt afgesloten. actie kan null zijn of `` - '' de eerstgenoemde zorgt ervoor dat het opgegeven signaal genegeerd wordt en de laatste zorgt ervoor dat de standaardactie wordt uitgevoerd. Wanneer de shell een subshell verlaat, worden de ingesloten (maar niet genegeerde) signalen teruggezet naar de standaardactie. Deval commando heeft geen effect op signalen die werden genegeerd bij binnenkomst in de shell. type naam … Interpreteer elke naam als een opdracht en druk de resolutie van de opdrachtzoekopdracht af. Mogelijke oplossingen zijn: shell-sleutelwoord, alias, ingebouwde shell, opdracht, bijgehouden alias en niet gevonden. Voor aliassen wordt de alias-uitbreiding afgedrukt; voor opdrachten en bijgehouden aliassen wordt de volledige padnaam van de opdracht afgedrukt. ulimit-H -S -a -tfdscmlpn waarde Informeer naar of stel de harde of zachte limieten in voor processen of stel nieuwe limieten in.De keuze tussen harde limiet (die geen proces mag schenden en die niet mag worden verhoogd als deze eenmaal is verlaagd) en zachte limiet (waardoor processen worden gesignaleerd maar niet noodzakelijkerwijs worden gedood en die kunnen worden verhoogd) is gemaakt met deze vlaggen: -H stel in of informeer naar harde limieten -S stel in of informeer naar zachte limieten. Als geen van beide -H noch -S is opgegeven, wordt de zachte limiet weergegeven of zijn beide limieten ingesteld. Als beide zijn opgegeven, wint de laatste. De limiet die moet worden opgevraagd of ingesteld, wordt vervolgens gekozen door een van deze vlaggen op te geven: -een toon alle huidige limieten -t toon of stel de limiet in op CPU-tijd (in seconden) -f toon of stel de limiet in voor het grootste bestand dat kan worden aangemaakt (in blokken van 512 bytes) -d de limiet weergeven of instellen voor de gegevenssegmentgrootte van een proces (in kilobytes) -s toon of stel de limiet in op de stapelgrootte van een proces (in kilobytes) -C toon of stel de limiet in op de grootste core-dumpgrootte die kan worden geproduceerd (in blokken van 512 bytes) -m toon of stel de limiet in op het totale fysieke geheugen dat in gebruik kan zijn door een proces (in kilobytes) l toon of stel de limiet in voor hoeveel geheugen een proces kan vergrendelen met mlock (2) (in kilobytes) -p toon of stel de limiet in op het aantal processen dat deze gebruiker tegelijkertijd kan uitvoeren -n toon of stel de limiet in voor de nummerbestanden die een proces in één keer open kan hebben Als geen van deze is opgegeven, is dit de limiet voor de bestandsgrootte die wordt weergegeven of ingesteld. Als waarde is opgegeven, is de limiet ingesteld op dat aantal; anders wordt de huidige limiet weergegeven. Limieten van een willekeurig proces kunnen worden weergegeven of ingesteld met behulp van het hulpprogramma sysctl (8). umask masker Stel de waarde van umask in (zie umask (2)) tot de opgegeven octale waarde. Als het argument wordt weggelaten, wordt de umask-waarde afgedrukt. unalias-een naam Als naam is opgegeven, verwijdert de shell die alias. Als -een is opgegeven, alle aliassen zijn verwijderd. ongezet naam… De opgegeven variabelen en functies zijn uitgeschakeld en niet gebruikt. Als een gegeven naam overeenkomt met zowel een variabele als een functie, worden zowel de variabele als de functie uitgeschakeld. Wacht baan Wacht tot de opgegeven taak is voltooid en retourneer de exitstatus van het laatste proces in de taak. Als het argument is weggelaten, wacht u tot alle taken zijn voltooid en retourneert u een exitstatus van nul. Wanneersh wordt interactief gebruikt vanaf een terminal, het huidige commando en de opdrachthistorie (ziefc in Sx Builtins) kunnen worden bewerkt met gebruik van de opdrachtregel bewerken in vi-modus. In deze modus worden commando's gebruikt die hieronder worden beschreven, vergelijkbaar met een subset van de onderdelen die worden beschreven op de vi man-pagina. Het commando `set '-o vi maakt vi-mode bewerking mogelijk en plaatst sh in vi insert mode. Als vi-mode is ingeschakeld, kan sh worden geschakeld tussen invoegmodus en opdrachtmodus. De editor wordt hier niet volledig beschreven, maar komt in een later document. Het lijkt op vi: als je Aq ESC typt, word je in de command-VI-opdrachtmodus geplaatst. Het raken van de Aq-return in de commandomodus zal de regel doorgeven aan de shell. Gebruik de man commando ( % man ) om te zien hoe een opdracht wordt gebruikt op uw specifieke computer. citeren
backslash
Enkele offertes
Dubbele offertes
Gereserveerde woorden
aliassen
commando's
Simpele opdrachten
Zoeken en uitvoeren
Path Search
Complexe opdrachten
pijpleidingen
Achtergrondopdrachten -
Lijsten - Over het algemeen gesproken
Short-Circuit List Operators
Flow-Control Constructs - als, terwijl, voor, geval
Commando's samen groeperen
Variabelen en parameters
Positionele parameters
Speciale parameters
Tilde Expansion (vervangt de home-directory van een gebruiker)
Parameteruitbreiding
Rekenkundige uitbreiding
White Space Splitting (Field Splitting)
Pathname-uitbreiding (bestandsnaam genereren)
Shell-patronen
builtins
Commandoregel bewerken




