Hirit - Linux Command - Unix Command

NAME

sh - interpretuesi komandues ( shell )

PËRMBLEDHJE

sh [- / + aCefnuvxIimqsVEbc ] [- o longname ] -words [ target ... ]

PËRSHKRIM

Sh është interpretuesi komandues standard për sistemin. Versioni i tanishëm i sh është në proces të ndryshimit në përputhje me specifikimet POSIX 1003.2 dhe 1003.2a për shell. Ky version ka shumë karakteristika të cilat e bëjnë atë të duket e ngjashme në disa aspekte me shellin e Korn, por nuk është një klon shell Korn (shih ksh (1)). Vetëm karakteristikat e përcaktuara nga POSIX dhe disa zgjatime të Berkeley, po përfshihen në këtë shell. Ne presim përputhjen POSIX me kohën 4.4 BSD është lëshuar. Kjo faqe man nuk ka për qëllim të jetë një tutorial ose një specifikim i plotë i shell.

Përmbledhje

Shell është një komandë që lexon linjat nga një skedar ose terminal, i interpreton ato dhe në përgjithësi ekzekuton komanda të tjera. Është programi që po kandidon kur një përdorues futet në sistem (edhe pse një përdorues mund të zgjedhë një shell të ndryshëm me komandën chsh (1)). Shellat implementojnë një gjuhë që ka konstruksione të kontrollit të rrjedhës, një strukturë makro që ofron një sërë veçorish përveç ruajtjes së të dhënave, së bashku me aftësitë e redaktimit të historisë dhe të linjës. Ai përfshin shumë karakteristika për të ndihmuar përdorimin interaktiv dhe ka përparësinë që gjuha interpretuese është e zakonshme si për përdorim interaktiv dhe jointeraktiv (skriptat e guaskës). Kjo është, komandat mund të shtypen direkt në shell drejtimin ose mund të vihet në një skedar dhe skedari mund të ekzekutohet direkt nga shell.

thirrje e muzës

Nëse nuk ka args dhe nëse hyrja standarde e shell është e lidhur me një terminal (ose nëse flamuri i - është vendosur), dhe opsioni - c nuk është i pranishëm, shell konsiderohet si një shell interaktive. Një shell interaktive zakonisht bën përpara çdo komande dhe trajton gabimet e programimit dhe komandimit ndryshe (siç përshkruhet më poshtë). Kur fillon fillimisht, shell inspekton argumentin 0, dhe nëse fillon me një dash `- ', shell konsiderohet gjithashtu një shell login. Kjo normalisht bëhet automatikisht nga sistemi kur përdoruesi futet në fillim. Një shell hyrje lexon komandat nga skedarët / etc / profile dhe .profile nëse ato ekzistojnë. Nëse variabli i mjedisit ENV është vendosur në hyrje në një shell, ose është vendosur në .profile të një shell login, shell më pas lexon komandat nga skedari i quajtur në ENV Prandaj, një përdorues duhet të vendos komandat që duhet të ekzekutohen vetëm në koha e identifikimit në skedarin .profile dhe komandat që ekzekutohen për çdo shell brenda skedarit ENV . Për të vendosur variablin ENV në një skedar, vendosni vijën e mëposhtme në .profile e direktorisë tuaj në shtëpi

ENV = $ HOME / .shinit; eksportit ENV

duke zëvendësuar për `` .shinit '' çdo filename që dëshironi. Meqenëse skedari ENV lexohet për çdo thirrje të shell, duke përfshirë skripat shell dhe predha jo interaktive, paradigma e mëposhtme është e dobishme për kufizimin e komandave në skedarin ENV për thirrjet interaktive. Vendosni komanda brenda '`rastit' 'dhe` ` esac ' 'më poshtë (këto komanda janë përshkruar më poshtë):

rasti $ - në * i *)

# komanda vetëm për përdorim interaktiv

...

esac

Nëse argumentet e linjës së komandës përveç opsioneve janë specifikuar, atëherë shell trajton argumentin e parë si emër të një skedari nga i cili për të lexuar komandat (një skriptë shell), dhe argumentet e mbetura janë vendosur si parametrat pozicionalë të shell ($ 1 , $ 2, etj). Përndryshe, predha lexon komandat nga hyrja e saj standarde.

Përpunimi i listës së argumenteve

Të gjitha opsionet e letrës së vetme kanë një emër korrespondues që mund të përdoret si argument për opsionin o . Emri i caktuar është dhënë pranë opsionit të letrës së vetme në përshkrimin më poshtë. Specifikimi i një dashi `` - '' e kthen opsionin, ndërsa duke përdorur një plus `` + '' çaktivizon opsionin. Opsionet e mëposhtme mund të vendosen nga rreshti i komandës ose me setin (1) të ndërtuar (përshkruar më vonë).

një allexport

Eksporto të gjitha variablat e caktuar për. (I MBULUAR për 4.4alfa)

-c

Lexoni komandat nga rreshti i komandës. Asnjë komandë nuk do të lexohet nga hyrja standarde.

-C noclobber

Mos mbishkruaj skedarët ekzistues me ``> '' (UNIMPLEMENTED për 4.4alpha)

-e errexit

Nëse jo interaktive, dilni menjëherë nëse ndonjë komandë e paprovuar dështon. Statusi i daljes së një komande konsiderohet të jetë i testuar në mënyrë eksplicite nëse komanda përdoret për të kontrolluar një elif nëse ose derisa, ose nëse komanda është operandi i majtë i një operatori "` && '' ose `` || ''.

-f noglob

Çaktivizo zgjerimin e pathname .

-në ​​asnjë ekzekutim

Nëse jo interaktive, lexoni komandat por mos i ekzekutoni ato. Kjo është e dobishme për të kontrolluar sintaksën e skripteve shell.

-u

Shkruani një mesazh në gabimin standard kur përpiqeni të zgjeroni një ndryshore që nuk është vendosur dhe nëse shell nuk është interaktive, dilni menjëherë. (I MBULUAR për 4.4alfa)

-v i folur

Shell shkruan inputin e saj për gabimin standard ashtu siç është lexuar. Dobishme për debugging.

-x xtrace

Shkruani secilën komandë në gabimin standard (paraprirë nga një `+ 'para se të ekzekutohet). Dobishme për debugging.

-q profilin e qetë

Nëse opsionet - v ose - x janë caktuar, mos i zbatoni ato gjatë leximit të skedarëve të inicializimit, duke qenë / etc / profile .profile dhe skedari i specifikuar nga ndryshorja mjedisore ENV .

-A injoroj

Injoroni EOF-të nga inputet kur interaktive.

-i interaktive

Forconi shell që të sillet në mënyrë interaktive.

-m monitoruar

Aktivizo kontrollin e punës (vendoset automatikisht kur interaktive).

-s stdin

Lexoni komandat nga hyrja standarde (vendosni automatikisht nëse nuk ka argumente file). Ky opsion nuk ka efekt kur të vendoset pasi shell tashmë ka filluar të aktivizohet (dmth. Me grupin (1)).

-V vi

Aktivizo redaktorin e linjës së komandës vi (1) të integruar (çaktivizon - E nëse është vendosur).

-E emacs

Aktivizo redaktorin e linjës së komandës të ndërtuar në emacs (1) (pamundëson - V nëse është vendosur).

-b njoftoj

Aktivizo njoftimin asinkron të përfundimit të punës në sfond. (I MBULUAR për 4.4alfa)

Struktura e Leksikave

Shell lexon hyrjen në terma të linjave nga një skedar dhe e thyen atë në fjalë në hapësirën e bardhë (boshllëqet dhe skedat), dhe në sekuenca të caktuara të karaktereve që janë të veçanta për shell quajtur `` operators '' Ka dy lloje të operatorëve: operatorët e kontrollit dhe operatorët e ridrejtimit (kuptimi i tyre diskutohet më vonë). Në vijim është një listë e operatorëve:

"Operatorët e kontrollit:"

& && (); ;; | ||

"Operatori i ridrejtimit:"

<>> | << >> <&> & << - <>

Duke cituar

Quoting është përdorur për të hequr kuptimin e veçantë të karaktereve të caktuara ose fjalë në shell, të tilla si operatorët, hapësirat e bardhë, ose fjalë kyçe. Ekzistojnë tri lloje të citimit: kuotat e njëjta të përputhura, kuotat e dyfishta të përputhura dhe rreshtin e kundërt.

backslash

Një backslash ruan kuptimin literal të karakterit në vijim, me përjashtim të linjës së re Aq. Një shakull përpara një lineare Aq trajtohet si vazhdim i vijës.

Kuotat e vetme

Karakteret enclosing në citate të vetme ruan kuptimin literal të të gjithë personazheve (me përjashtim të kuotave të vetme, duke e bërë të pamundur të vendosni të vetmet citate në një varg të vetëm të cituar).

Kuotat e dyfishta

Karakteret mbyllëse brenda kuotave të dyfishta ruajnë kuptimin e fjalëpërfjalshëm të të gjitha shenjave, përveç dollarit ($) backquote (`) dhe backslash (\) Kundërshtimi brenda kuotave të dyfishta është historikisht i çuditshëm dhe shërben për të cituar vetëm karakteret e mëposhtme:

$ `\

Përndryshe mbetet fjalë për fjalë.

Fjalë të rezervuara

Fjalët e rezervuara janë fjalë që kanë domethënie të veçantë për shell dhe njihen në fillim të një linje dhe pas një operatori kontrolli. Më poshtë janë fjalët e rezervuara:

! Ta elif Ta fi Ta, ndërsa Ta rast

tjetër Ta për Ta pastaj Ta {Ta}

bëj Ta ta Ta deri Ta nëse Ta esac

Kuptimi i tyre diskutohet më vonë.

emërtimet

Një alias është një emër dhe vlera korresponduese e vendosur duke përdorur komandën e ndërtuar me alias (1). Kurdoherë që mund të ndodhë një fjalë e rezervuar (shih më lart), dhe pas kontrollimit të fjalëve të rezervuara, shell kontrollon fjalën për të parë nëse përputhet me një alias. Nëse e bën këtë, ai e zëvendëson atë në rrymën e hyrjes me vlerën e saj. Për shembull, nëse ka një alias që quhet `` lf '' me vlerën `` ls -F '' atëherë kontributi:

Nëse është fjala

do të bëhej

ls -F foobar

Aliases sigurojnë një mënyrë të përshtatshme për përdoruesit naive për të krijuar shorthands për komandat pa pasur nevojë të mësojnë se si të krijojnë funksione me argumente. Ato gjithashtu mund të përdoren për të krijuar kod lexues të errët. Kjo përdorim dekurajohet.

komandat

Shell interpreton fjalët që lexon sipas një gjuhe, specifikimi i të cilave është jashtë fushës së kësaj faqe të njeriut (referojuni BNF në dokumentin POSIX 1003.2). Megjithatë, në thelb lexohet një rresht dhe nëse fjala e parë e linjës (ose pas një operatori kontrolli) nuk është një fjalë e rezervuar, atëherë shell ka njohur një komandë të thjeshtë. Përndryshe, mund të jetë njohur një komandë komplekse ose një konstruksion tjetër i veçantë.

Komandat e thjeshta

Nëse një komandë e thjeshtë është njohur, shell kryen veprimet e mëposhtme:

  1. Fjalët kryesorë të formës `` name = value '' janë zhveshur dhe i janë caktuar mjedisit të komandës së thjeshtë. Operatorët e ridrejtimit dhe argumentet e tyre (siç përshkruhet më poshtë) janë zhveshur dhe ruhen për përpunim.
  2. Fjalët e mbetura zgjerohen siç përshkruhet në seksionin e quajtur "Expansions" dhe fjala e parë e mbetur konsiderohet si emri i komandës dhe komanda është e vendosur. Fjalët e mbetura konsiderohen si argumentet e komandës. Nëse nuk ka ndonjë emër të komandës, atëherë detyra e variablës "` name = value '' e njohur në pikën 1 ndikojnë në shell aktual.
  3. Redirections janë kryer siç përshkruhet në seksionin e ardhshëm.

redirections

Redirections përdoren për të ndryshuar kur një komandë lexon inputin e tij ose dërgon daljen e tij. Në përgjithësi, ridrejtimet hapin, mbyllin ose kopjojnë një referencë ekzistuese në një skedar. Formati i përgjithshëm i përdorur për ridrejtimin është:

[n] skedar redir-op

ku redir-op është një nga operatorët e ridrejtimit të përmendur më parë. Në vijim është një listë e redireksioneve të mundshme. Bq n është një numër opcional, si në `3 '(jo' Bq 3 'që i referohet një përshkrues të skedarit.

[n]> skedar

Redirect output standarde (ose n) të skedarit.

[n]> | skedar

E njëjta gjë, por anashkalojë opsionin C.

[n] >> skedar

Shtojeni prodhimin standard (ose n) në skedar.

[n]

Redirect input standard (ose n) nga skedari.

[n1] <& n2

Duplikoni hyrjen standarde (ose n1) nga skedari i skedarit n2.

[n] <& -

Mbylle hyrjen standarde (ose n).

[n1]> & n2

Prodhimi i kopjuar i standardeve (ose n1) nga n2.

[n]> &

Mbyllni prodhimin standard (ose n).

[n] <> skedar

Hapni skedarin për lexim dhe shkrim në hyrjen standarde (ose n).

Përcjellja e mëposhtme quhet shpesh një dokument "këtu-dokument"

[n] << delimitues

këtu-doc-text ...

delimiter

Të gjithë teksti në linja të njëpasnjëshme deri në delimiter ruhet dhe vihet në dispozicion të komandës në hyrje standarde, ose skedari përshkrues n nëse është specifikuar. Nëse citohet delimiteri i specifikuar në vijën fillestare, teksti këtu-dokumenti trajtohet fjalë për fjalë, përndryshe teksti i nënshtrohet zgjerimit të parametrave, zëvëndësimit të komandës dhe zgjerimit aritmetik (siç përshkruhet në seksionin "Expansions") 'Nëse operatori është `` << -' 'në vend të `` <<' 'atëherë skedat drejtuese në tekstin këtu-doc janë zhveshur.

Kërkimi dhe Ekzekutimi

Ekzistojnë tri lloje të komandave: funksionet shell, komandat builtin dhe programet normale - dhe komanda kërkohet (sipas emrit) në atë mënyrë. Secili prej tyre ekzekutohet në një mënyrë tjetër.

Kur ekzekutohet një funksion shell, të gjitha parametrat e pozicionit shell (përveç $ 0, të cilat mbeten të pandryshuara) janë vendosur në argumentet e funksionit shell. Variablat të cilat vendosen në mënyrë eksplicite në mjedisin e komandës (duke vendosur detyra para tyre në emër të funksionit) bëhen lokalë në funksion dhe janë vendosur në vlerat e dhëna. Pastaj komanda e dhënë në definicionin e funksionit ekzekutohet. Parametrat e pozicionit janë rikthyer në vlerat e tyre origjinale kur komanda përfundon. Kjo ndodh brenda shell aktual.

Ndërtesat e Shell ekzekutohen brenda në shell, pa hedhjen e një procesi të ri.

Përndryshe, nëse emri i komandës nuk përputhet me një funksion ose ndërtuar, komanda kërkohet si një program normal në sistemin e skedarit (siç përshkruhet në seksionin tjetër). Kur ekzekutohet një program normal, shell drejton programin, duke kaluar argumentet dhe mjedisin në program. Nëse programi nuk është një skedar i ekzekutueshëm normal (dmth. Nëse nuk fillon me "numrin magjik" përfaqësimi ASCII i të cilit është "#!", Kështu që execve (2) kthehet Er ENEEXEC pastaj) shell do të interpretojë programin në një subshell. Shembulli i fëmijës do të riinicioj veten në këtë rast, kështu që efekti do të jetë sikur një shell i ri të ishte thirrur për të trajtuar skriptin ad-hoc shell, përveç se vendndodhja e komandave të hashed të vendosura në shell prind do të mbahet mend nga fëmijë.

Vini re se versionet e mëparshme të këtij dokumenti dhe kodi burimor vetë në mënyrë të gabuar dhe sporadike i referohen një skriptë shell pa një numër magjik si një "procedurë shell".

Kërkimi në rrugë

Kur vendoset një komandë, shell së pari shikon për të parë nëse ka një funksion shell me atë emër. Pastaj ai kërkon një komandë të ndërtuar me atë emër. Nëse nuk gjendet një komandë e integruar, ndodh një nga dy gjëra:

  1. Emrat e komandës që përmbajnë një prerje të lehtë thjesht janë ekzekutuar pa kryer asnjë kërkim.
  2. Shell kërkon çdo hyrje në PATH nga ana tjetër për komandën. Vlera e ndryshores PATH duhet të jetë një seri shënimesh të ndara me dy pika. Çdo hyrje përbëhet nga një emër i direktorisë. Drejtoria e tanishme mund të tregohet në mënyrë të nënkuptuar nga një emër i zbrazët i direktivave, ose në mënyrë eksplicite nga një periudhë e vetme.

Komanda Dalja e Statusit

Çdo komandë ka një status të daljes që mund të ndikojë në sjelljen e komandave të tjera shell. Paradigma është se një komandë del me zero për normal ose sukses, dhe jo-zero për dështim, gabim ose tregues të rremë. Faqja njeriu për secilën komandë duhet të tregojë kodet e daljes dhe çfarë do të thotë. Përveç kësaj, komandat builtin kthejnë kodet dalëse, ashtu si edhe një funksion shell i ekzekutuar.

Komandat komplekse

Komandat komplekse janë kombinime të komandave të thjeshta me operatorët e kontrollit ose fjalët e rezervuara, së bashku duke krijuar një komandë më komplekse. Më në përgjithësi, një komandë është një nga të mëposhtmet:

  • komandë e thjeshtë
  • gazsjellës
  • listë ose listë komplekse
  • Komanda e përbërë
  • përcaktimin e funksionit

Përveç nëse thuhet ndryshe, statusi i daljes së një komande është ai i komandës së fundit të thjeshtë të ekzekutuar nga komanda.

tubacionet

Një tubacion është një sekuencë e një ose më shumë komandash të ndara nga operatori i kontrollit. Prodhimi standard i të gjithë por komandës së fundit lidhet me hyrjen standarde të komandës së ardhshme. Prodhimi standard i komandës së fundit trashëgohet nga predha, si zakonisht.

Formati për një tubacion është:

[!] komanda1 [| komandë2 ...]

Prodhimi standard i komandës1 është i lidhur me hyrjen standarde të komandës2. Hyrja standarde, prodhimi standard ose të dyja një komandë konsiderohet të caktohen nga tubacioni përpara çdo rivendosjeje të përcaktuar nga operatorët e ridrejtimit që janë pjesë e komandës.

Nëse tubacioni nuk është në sfond (diskutohet më vonë), predha pret të përfundojë të gjitha komandat.

Nëse fjala e rezervuar! nuk i paraprin tubacionit, statusi i daljes është statusi i daljes së komandës së fundit të përcaktuar në tubacion. Përndryshe, statusi i daljes nuk është logjik i statusit të daljes së komandës së fundit. Kjo është, nëse komanda e fundit kthehet zero, statusi i daljes është 1; nëse komanda e fundit kthehet më e madhe se zero, gjendja e daljes është zero.

Për shkak se caktimi i tubacionit të hyrjes standarde ose prodhimit standard ose të dyja ndodh përpara përhapjes, mund të modifikohet nëpërmjet ridrejtimit. Për shembull:

$ command1 2> & 1 | command2

dërgon edhe rezultatin standard dhe gabimin standard të komandës1 në hyrjen standarde të komandës2.

A; ose terminatori shkakton listën e mëparshme AND-OR (përshkruar më poshtë) që do të ekzekutohet në mënyrë të vazhdueshme; a & shkakton ekzekutimin asinkron të listës së mëparshme AND-OR.

Vini re se ndryshe nga disa predha të tjera, çdo proces në tubacion është një fëmijë i skemës së thirrjes (përveç nëse është një predhë e integruar, në të cilin rast ekzekutohet në predhë aktuale - por çdo efekt që ka në mjedis fshihet).

Komandat e Historisë -

Nëse një komandë ndërpritet nga operatori i kontrollit dhe (&), shell kryen komandën asynchronously - që është, shell nuk pret që komanda të përfundojë para se të ekzekutojë komandën tjetër.

Formati për drejtimin e një komande në sfond është:

komandë1 & [komandë2 & ...]

Nëse shell nuk është interaktive, hyrja standarde e një komande asinkrone vendoset në / dev / null

Listat - përgjithësisht duke folur

Një listë është një sekuencë zero ose më shumë komandash të ndara nga vijat e reja, pikëpresje ose gjymtyrë, dhe mundësisht të ndërprerë nga një prej këtyre tre karaktereve. Komandat në një listë ekzekutohen sipas porosisë së tyre. Nëse komanda ndiqet nga një shigjetë, shell fillon komandën dhe menjëherë vazhdon mbi komandën tjetër; përndryshe ai pret që komanda të përfundojë para se të vazhdojë me atë të ardhshëm.

Operatorët e listës së shkurtër

`` && '' dhe `` || '' janë AND-OR operatorët e listës. `` && '' ekzekuton komandën e parë, dhe pastaj ekzekuton komandën e dytë iff statusin e daljes së komandës së parë është zero. `` || '' është e ngjashme, por ekzekuton komandën e dytë, iff statusin e daljes së komandës së parë është jo-zero. të dy kanë të njëjtin përparësi.

Ndërtimi i Kontrollit të Fluksit - nëse, përderisa, për, rastin

Sintaksa e komandës nëse është

nëse lista
pastaj listoni
[lista elif
pastaj lista] ...
[tjetër listë]
fi

Sintaksa e komandës së kohës është

ndërsa lista
bëj listën
e bërë

Dy listat ekzekutohen në mënyrë të përsëritur, ndërsa gjendja e daljes në listën e parë është zero. Komanda deri është e ngjashme, por ka fjalën deri në vend të kohës, gjë që e bën atë të përsëritet derisa gjendja dalëse e listës së parë është zero.

Sintaksa e komandës për është

për ndryshueshme në fjalë ...
bëj listën
e bërë

Fjalët u zgjeruan, dhe pastaj lista ekzekutohet në mënyrë të përsëritur me variablën e vendosur në secilën fjalë nga ana tjetër. Bëni dhe të bëhet mund të zëvendësohet me `` {'' dhe ``} ''

Sintaksa e ndërprerjes dhe e komandës së vazhduar është

pushim [num]
vazhdo [num]

Pushimi përfundon numrin më të thellë për ose ndërsa sillen. Vazhdoni vazhdoni me përsëritjen e radhës të lakit të brendshëm. Këto zbatohen si komanda të integruara.

Sintaksa e komandës së rastit është

fjalë në fjalë
model) lista ;;
...
esac

Modeli në fakt mund të jetë një ose më shumë modele (shih Shell Patterns të përshkruara më vonë), të ndara me shkronja `` ''.

Grupimi i komandave së bashku

Komandat mund të grupohen duke shkruar ose

(listë)

ose

{ listë;

I pari prej tyre i ekzekuton komandat në një nënkëndësh. Komandat e ndërtuara të grupuara në një (listë) nuk do të ndikojnë në predikimin aktual. Forma e dytë nuk forcon një tjetër shell kështu që është pak më efikas. Grupimi i komandave së bashku në këtë mënyrë ju lejon të përcjellni daljet e tyre sikur të ishin një program:

{printf hello; printf world \ n ";}> Përshëndetje

Funksione

Sintaksa e definimit të funksionit është

emrin ()

Një përkufizim i funksionit është një deklaratë e ekzekutueshme; kur ekzekutohet ajo instalon një funksion emër të emëruar dhe kthen statusin e daljes prej zero. Komanda është normalisht një listë e mbyllur midis `` {'' dhe ``} ''

Variablat mund të deklarohen të jenë lokale në një funksion duke përdorur një komandë lokale. Kjo duhet të paraqitet si deklarata e parë e një funksioni, dhe sintaksa është

lokale [variable] -] ...

Lokal është zbatuar si një komandë e integruar.

Kur një ndryshore është bërë vendore, ajo trashëgon vlerën fillestare dhe eksportohet dhe lexon flamujt nga variabli me të njëjtin emër në hapësirën përreth, nëse ka një. Përndryshe, variabla fillimisht nuk është e caktuar. Shell përdor fushëveprimin dinamik, kështu që nëse ju bëni variablin x lokal për të funksionuar f, i cili pastaj e quan funksionin g, referencat ndaj ndryshores x të bërë brenda g do t'i referohen ndryshores x të deklaruar brenda f, jo me variablën globale të quajtur x .

I vetmi parametër i veçantë që mund të bëhet lokal është `` - '' Duke bërë `` - '' lokale çdo opsion shell që ndryshohet nëpërmjet komandës së vendosur brenda funksionit që do të rivendoset në vlerat e tyre origjinale kur funksioni të kthehet.

Sintaksa e komandës së kthimit është

kthehu [exitstatus

Ndërpret funksionin ekzekutues aktualisht. Kthimi është implementuar si një komandë e integruar.

Variablat dhe Parametrat

Shell mban një sërë parametrash. Një parametër që shënohet me një emër quhet një ndryshore. Kur fillon, shell i kthen të gjithë variablat e mjedisit në variabla shell. Variablat e rinj mund të vendosen duke përdorur formularin

Emri = vlera

Variablat e përcaktuara nga përdoruesi duhet të kenë një emër që përbëhet vetëm nga alfabetet, numrat dhe nënvizimet - e para prej të cilave nuk duhet të jetë numerike. Një parametër gjithashtu mund të shënohet me një numër ose një karakter të posaçëm siç shpjegohet më poshtë.

Parametrat e Pozicionimit

Një parametër pozicional është një parametër i shënuar nga një numër (n> 0). Shell i vendos këto fillimisht në vlerat e argumenteve të vijës së komandës që ndjekin emrin e skriptit të shell. Set (1) builtin gjithashtu mund të përdoret për të vendosur ose rivendosur ato.

Parametrat e Veçantë

Një parametër i veçantë është një parametër që tregohet nga një prej karaktereve të posaçme të mëposhtme. Vlera e parametrit është e listuar pranë karakterit të saj.

*

Zgjerohet në parametrat e pozicionit, duke filluar nga një. Kur zgjerimi ndodh brenda një vargu të dyfishtë të cituar, zgjerohet në një fushë të vetme me vlerën e secilit parametër të ndara nga karakteri i parë i ndryshores IFS , ose nga një hapësirë ​​nëse IFS është i pacaktuar.

@

Zgjerohet në parametrat e pozicionit, duke filluar nga një. Kur zgjerimi ndodh brenda kuotave të dyfishta, çdo parametër pozicionohet si një argument i veçantë. Nëse nuk ka parametra pozicionues, zgjerimi i @ gjeneron zero argumente, edhe kur @ është cituar dy herë. Çfarë do të thotë kjo, për shembull, nëse $ 1 është `` abc '' dhe $ 2 është `` def ghi '' atëherë Qq $ @ zgjerohet në dy argumente:

abc def ghi

#

Zgjeron numrin e parametrave pozicionues.

?

Zgjerohet në statusin e daljes së tubacionit më të fundit.

- (Hyphen.)

Zgjeron për flamujt e opsioneve aktuale (emrat e opsioneve me një letër të lidhur në një varg) siç specifikohet në thirrje, nga komanda e integruar e vendosur, ose në mënyrë të nënkuptuar nga skeleti.

$

Zgjeron ID-në e procesit të shell-it të thirrur. Nënstadt mban të njëjtën vlerë prej $ si prindi i tij.

!

Zgjeron ID-në e procesit të komandës më të fundit të sfondit të ekzekutuar nga predha aktuale. Për një tubacion, procesi ID është ai i komandës së fundit në tubacion.

0 (Zero.)

Zgjerohet në emrin e skemës shell ose shell.

Zgjerimet e Fjalës

Kjo klauzolë përshkruan zgjerimet e ndryshme që kryhen në fjalë. Jo të gjitha zgjerimet bëhen në çdo fjalë, siç shpjegohet më vonë.

Zgjerimet e Tildes, zgjerimet e parametrave, zëvendësimet e komandave, zgjerimet aritmetike dhe largimet e kuotave që ndodhin brenda një fjale të vetme zgjerohen në një fushë të vetme. Është vetëm ndarja e fushës ose zgjerimi i shtegut që mund të krijojë fusha të shumëfishta nga një fjalë e vetme. Përjashtimi i vetëm për këtë rregull është zgjerimi i parametrit të veçantë @ brenda kuotave të dyfishta, siç u përshkrua më sipër.

Rendi i zgjerimit të fjalës është:

  1. Zgjerimi i Tildes, Zgjerimi i Parametrave, Zëvendësimi i Komandës, Zgjerimi Aritmetik (të gjitha këto ndodhin në të njëjtën kohë).
  2. Ndarja e fushës kryhet në fushat e gjeneruara nga hapi (1) nëse ndryshuesi IFS është i pavlefshëm.
  3. Zgjerimi i Pathname (përveç nëse vendosja - f është në fuqi).
  4. Shkarkimi i caktimit.

Karakteri $ është përdorur për të futur zgjerimin e parametrave, zëvendësimin e komandave, ose vlerësimin aritmetik.

Zgjerimi i Tilde (duke zëvendësuar një direktori të përdoruesit në shtëpi)

Një fjalë që fillon me një karakter të titujve të pakualifikuar (~) i nënshtrohet zgjerimit tildë. Të gjithë personazhet deri në një prerje (/) ose në fund të fjalës trajtohen si një emër përdoruesi dhe zëvendësohen me direktorinë fillestare të përdoruesit. Nëse emri i përdoruesit mungon (si në ~ / foobar), tilda zëvendësohet me vlerën e variablave HOME (direktoria e përdoruesit aktual të përdoruesit).

Zgjerimi i parametrave

Formati për zgjerimin e parametrave është si më poshtë:

ku shprehja përbëhet nga të gjithë personazhet derisa përputhja ``} '' Çdo ``} 'arratiset nga një rresht ose brenda një vargu të cituar dhe karakteret në zgjerimet aritmetike të ngulitura, zëvendësimet e komandave dhe zgjerimet e ndryshueshme nuk shqyrtohen në përcaktimin e përputhja ``} ''

Forma më e thjeshtë për zgjerimin e parametrave është:

Vlera, nëse ka, të parametrit zëvendësohet.

Emri i parametrit ose simboli mund të mbyllet në mbajtëse, të cilat janë opsionale përveç parametrave të pozicionit me më shumë se një shifër ose kur parametri ndiqet nga një karakter që mund të interpretohet si pjesë e emrit. Nëse shfaqet një zgjerim i parametrave brenda kuotave të dyfishta:

  1. Zgjerimi i pathname nuk është kryer në rezultatet e zgjerimit.
  2. Ndarja në terren nuk kryhet në rezultatet e zgjerimit, me përjashtim të @.

Përveç kësaj, zgjerimi i parametrave mund të modifikohet duke përdorur një nga formatet e mëposhtme.

Përdorni vlerat e paracaktuara. Nëse parametri është i pacaktuar ose zero, zgjerimi i fjalës zëvendësohet; përndryshe, vlera e parametrit zëvendësohet.

Cakto vlerat e paracaktuara. Nëse parametri është i pacaktuar ose i pavlefshëm, zgjerimi i fjalës i caktohet parametrit. Në të gjitha rastet, vlera përfundimtare e parametrit zëvendësohet. Në këtë mënyrë mund të caktohen vetëm variabla, pa parametra pozicionues ose parametra të veçantë.

Trego Gabim nëse Null ose Unset. Nëse parametri është i palevizur ose i pavlefshëm, zgjerimi i fjalës (ose një mesazh që tregon se është i pacaktuar nëse nuk është lënë fjalë) është shkruar në gabimin standard dhe shell del me një status të daljes jo-zero. Përndryshe, vlera e parametrit zëvendësohet. Një shell interaktive nuk duhet të dalë.

Përdorni vlerën alternative. Nëse parametri është i pacaktuar ose i pavlefshëm, null është zëvendësuar; përndryshe zgjerimi i fjalës zëvendësohet.

Në zgjerimet e parametrave të treguar më parë, përdorimi i zorrës së trashë në format rezulton në një test për një parametër që është i pacaktuar ose i pavlefshëm; mosveprimi i zorrës së trashë rezulton në një test për një parametër që është vetëm i pacaktuar.

Gjatësia e stringit. Gjatësia në karaktere të vlerës së parametrit.

Katër varietetet e mëposhtme të zgjerimit të parametrave sigurojnë përpunimin e nëngrupit. Në çdo rast, simbol përputhja e modelit (shih Shell Patterns), në vend të simbolit të shprehjes së rregullt, përdoret për të vlerësuar modelet. Nëse parametri është * ose @, rezultati i zgjerimit është i paspecifikuar. Mbyllja e vargut të zgjerimit të plotë të parametrave në thonjëza të dyfishta nuk shkakton katër varietetet e mëposhtme të karaktereve të modelit, ndërsa citimi i karaktereve brenda braces ka këtë efekt.

Hiq modelin më të vonshëm të prapashtesave. Fjala zgjerohet për të prodhuar një model. Zgjerimi i parametrave pastaj rezulton në parametër, me pjesën më të vogël të prapashtesës të krahasuar me modelin e fshirë.

Hiq modelin më të madh të prapashtesës. Fjala zgjerohet për të prodhuar një model. Zgjerimi i parametrave pastaj rezulton në parametër, me pjesën më të madhe të prapashtesës që përputhet me modelin e fshirë.

Hiqni modelin e vogël të prefiksit. Fjala zgjerohet për të prodhuar një model. Zgjerimi i parametrave pastaj rezulton me parametër, me pjesën më të vogël të prefiksit që përputhet me modelin e fshirë.

Hiqe Prefiksin më të Madh Prefiks. Fjala zgjerohet për të prodhuar një model. Zgjerimi i parametrave pastaj rezulton me parametër, me pjesën më të madhe të prefiksit që përputhet me modelin e fshirë.

Zëvendësimi i komandës

Zëvendësimi i komandës lejon që produkti i një komande të zëvendësohet në vend të vetë emrit të komandës. Zëvendësimi i komandës ndodh kur komanda është e mbyllur si vijon:

$ (Komanda)

ose Po `` backquoted '' version Pc:

`command`

Shell zgjeron zëvendësimin e komandës duke ekzekutuar komandën në një mjedis nëntokësor dhe duke zëvendësuar zëvendësimin e komandës me prodhimin standard të komandës, duke hequr sekuencat e një ose më shumë në fund të zëvendësimit. (Embedded para përfundimit të prodhimit nuk janë hequr, megjithatë, gjatë ndarjes në terren, ato mund të përkthehen në s, varësisht nga vlera e IFS dhe duke cituar atë që është në fuqi.)

Zgjerimi aritmetik

Zgjerimi aritmetik ofron një mekanizëm për të vlerësuar një shprehje aritmetike dhe duke zëvendësuar vlerën e saj. Formati për zgjerimin aritmetik është si vijon:

$ ((Shprehje))

Shprehja trajtohet sikur të ishte në kuotat e dyfishta, me përjashtim të faktit që një kuotë e dyfishtë brenda shprehjes nuk trajtohet posaçërisht. Shell zgjeron të gjitha argumentet në shprehjen për zgjerimin e parametrave, zëvendësimin e komandës dhe heqjen e kuotave.

Tjetra, shell trajton këtë si një shprehje aritmetike dhe zëvendëson vlerën e shprehjes.

Ndarja e hapësirës së bardhë (ndarja në terren)

Pas zgjerimit të parametrave, zëvendësimit të komandës dhe zgjerimit aritmetik, skema skanon rezultatet e zgjerimeve dhe zëvendësimeve që nuk ndodhën në kuotat e dyfishta për ndarjen në terren dhe mund të rezultojë në fusha të shumëfishta.

Shell trajton çdo karakter të IFS si një delimiter dhe përdorin delimituesit për të ndarë rezultatet e zgjerimit të parametrave dhe zëvendësimin e komandave në fusha.

Zgjerimi i emrave të kodit (emri i skedarit)

Përveç nëse flamuri -f është vendosur, gjenerimi i emrit të skedave kryhet pasi ndarja e fjalëve është e plotë. Çdo fjalë konsiderohet si një seri modelesh, të ndara me rreshta. Procesi i zgjerimit zëvendëson fjalën me emrat e të gjitha dosjeve ekzistuese, emrat e të cilëve mund të formohen duke zëvendësuar çdo model me një varg që përputhet me modelin e specifikuar. Ka dy kufizime për këtë: së pari, një model nuk mund të përputhet me një varg që përmban një prerje, dhe së dyti, një model nuk mund të përputhet me një varg duke filluar me një periudhë, përveç nëse karakteri i parë i modelit është një periudhë. Seksioni tjetër përshkruan modelet e përdorura për të dyja zgjerimin e Pathname dhe komandën e rastit (1).

Modelet e Shellit

Një model përbëhet nga karaktere normale, të cilat përputhen me veten dhe meta-karaktere. Meta-karakteret janë ``! `` `` `` `` `? '' Dhe` `['' Këto karaktere humbasin kuptimet e tyre të veçanta nëse ato citohen. Kur kryhet komanda ose zëvendësimi i ndryshores dhe shenjat e dollarit ose citatet e prapme nuk citohen dy herë, vlera e ndryshores ose e prodhimit të komandës skanohet për këto shkronja dhe ato kthehen në meta-karaktere.

Një yll (`` * '') përputhet me çdo varg karakteresh. Një pikëpyetje përputhet me çdo karakter të vetëm. Një kllapa e majtë (`` [''] paraqet një klasë të karakterit. Fundi i klasës së karakterit tregohet nga një (``] '') nëse ``] '' mungon atëherë `` ['' përputhet me një `` ['' sesa duke futur një klasë të karakterit. Një klasë e karaktereve përputhet me ndonjë nga personazhet ndërmjet kllapave katrore. Një varg karakteresh mund të specifikohen duke përdorur një shenjë minus. Klasa e karakterit mund të plotësohet duke bërë një pikë thirrje karakterin e parë të klasës së karakterit.

Për të përfshirë një ``] '' në një klasë të karakterit, bëni atë karakterin e parë të listuar (pas ``! '' Nëse ka). Për të përfshirë një shenjë minus, bëjeni karakterin e parë ose të fundit të listuar

Builtins

Ky seksion rendit komandat e integruara që janë ndërtuar, sepse ata kanë nevojë për të kryer një operacion që nuk mund të kryhet nga një proces i veçantë. Përveç këtyre, ka disa komanda të tjera që mund të ndërtohen për efikasitet (p.sh. echo 1).

:

Një komandë zero që kthen vlerën 0 (true) të daljes.

. skedar

Komandat në skedarin e specifikuar lexohen dhe ekzekutohen nga predha.

alias [ name [ = string ... ]]

Nëse emri = string është specifikuar, shell përcakton emrin e alias me stringin e vlerës Nëse është caktuar vetëm emri , shtypet vlera e emrit të alias. Pa argumente, alias builtin shtyp emrat dhe vlerat e të gjithë emërtimeve të përcaktuara (shih unalias)

bg [ punë] ...

Vazhdoni punët e specifikuara (ose puna aktuale nëse nuk jepet asnjë punë) në sfond.

komanda e komandës arg ...

Ekzekutoni komandën e specifikuar të integruar. (Kjo është e dobishme kur keni një funksion shell me të njëjtin emër si një komandë builtin.)

cd [ directory ]

Kalo në direktorinë e specifikuar (default $ HOME) Nëse një hyrje për CDPATH shfaqet në mjedisin e komandës cd ose vargu i ndryshores CDPATH është caktuar dhe emri i direktorisë nuk fillon me një kullim, atëherë do të kontrollohen direktoritë e listuara në CDPATH për direktorinë e specifikuar. Formati i CDPATH është i njëjtë me atë të PATH Në një shell interaktiv, komanda cd do të shtypë emrin e direktoriumit në të cilin ai në fakt ka ndryshuar, nëse kjo ndryshon nga emri që i ka dhënë përdoruesi. Këto mund të jenë të ndryshme për shkak të përdorimit të mekanizmit CDPATH ose për shkak të lidhjes simbolike.

rresht eval ...

Bashkangjitni të gjitha argumentet me hapësira. Pastaj ri-analizoni dhe ekzekutoni komandën.

exec [ komandë arg ... ]

Nëse komanda nuk hiqet, procesi i shell është zëvendësuar me programin e specifikuar (i cili duhet të jetë një program i vërtetë, jo një shell builtin ose funksion). Çdo përcjellje në komandën e ekzekutimit shënohet si e përhershme, kështu që ato të mos zhduken kur mbaron komanda exec .

dalje [ exitstatus ]

Përfundo procesin e shell. Nëse statusi i daljes është dhënë, përdoret si status i daljes së shell; përndryshe përdoret statusi i daljes së komandës së mësipërme.

emri i eksportit ...

eksport -p

Emrat e specifikuar eksportohen në mënyrë që ato të shfaqen në mjedisin e komandave të mëvonshme. Mënyra e vetme për të çregjistruar një ndryshore është të shkëputet. Shell lejon vlerën e një ndryshoreje të vendoset në të njëjtën kohë kur eksportohet me shkrim

emri i eksportit = vlera

Me asnjë argument, komanda e eksportit rendit emrat e të gjithë variablave të eksportuara. Me opsionin- p të caktuar, dalja do të jetë e formatuar në mënyrë të përshtatshme për përdorim jo-interaktiv.

fc [ redaktor ] [i pari [e fundit ]]

fc -l [- nr ] [i pari [e fundit ]]

fc -s [ old = new ] [i pari ]

Listat e ndërtuar në fc , ose redaktimet dhe ri-ekzekutimet, komandat e futura më parë në një shell interaktiv.

-e redaktor

Përdorni redaktorin e emëruar nga redaktori për të redaktuar komandat. String redaktori është një emër komandimi, subjekt i kërkimit përmes ndryshores PATH . Vlera në variablën FCEDIT përdoret si default kur - e nuk është specifikuar. Nëse FCEDIT është i pavlefshëm ose i pacaktuar, përdoret vlera e ndryshores EDITOR . Nëse EDITOR është i pavlefshëm ose jo, ed (1) përdoret si redaktor.

-l (ell)

Listoni komandat në vend që të thirreni një redaktor në to. Komandat janë të shkruara në sekuencën e treguar nga operandi i parë dhe i fundit, siç ndikohet nga - r me secilin komandë që paraprihet nga numri i komandës.

-N

Shtyp numrat e komandës kur renditen me -l.

-r

Kthejeni rendin e komandave të listuara (me - l ose redaktuar (me as - l nor - s)

-s

Ri-ekzekutojë komandën pa thirrur një redaktor.

i parë

i fundit

Zgjidhni komandat për të listuar ose për të ndryshuar. Numri i komandave të mëparshme që mund të arrihen përcaktohen nga vlera e ndryshores HISTSIZE . Vlera e parë ose e fundit ose të dyja janë një nga të mëposhtmet:

numër [+]

Një numër pozitiv që përfaqëson një numër komandues; numrat e komandës mund të shfaqen me opsionin - l .

-Numri

Një numër decimal negativ që përfaqëson komandën që ishte ekzekutuar numri i komandave më parë. Për shembull, -1 është komanda menjëherë e mëparshme.

varg

Një varg që tregon komandën e fundit që fillon me atë varg. Nëse operandi i vjetër = nuk është gjithashtu i specifikuar me - formën e vargut të operandit të parë nuk mund të përmbajë një shenjë të barabartë të ngulitur.

Variablat e mëposhtme të mjedisit ndikojnë në ekzekutimin e fc:

FCEDIT

Emri i redaktorit për t'u përdorur.

HISTSIZE

Numri i komandave të mëparshme që janë të arritshme.

fg [ punë ]

Zhvendosni punën e specifikuar ose punën aktuale në plan të parë.

getopts optstring var

POSIX getopts komandën, që të mos ngatërrohet me Bell Labs-të realizuar getopt (1).

Argumenti i parë duhet të jetë një seri letrash, secila prej të cilave mund të pasohet opsionalisht nga një zorrës së trashë për të treguar se opsioni kërkon një argument. Variabli i specifikuar është vendosur në opsionin e analizuar.

Komanda getopts deprecates utility vjetër getopt (1) për shkak të trajtimit të saj të argumenteve që përmbajnë whitespace.

Getopts builtin mund të përdoret për të marrë opsionet dhe argumentet e tyre nga një listë e parametrave. Kur thirret, getopts vendos vlerën e opsionit të ardhshëm nga vargu i opsionit në listë në variablën shell të specifikuar nga var dhe indeksi i tij në ndryshoret shell OPTIND Kur shell thirret, OPTIND fillohet me 1. Për çdo opsion që kërkon një argument, getopts builtin do ta vendosë atë në variablën shell OPTARG Nëse një opsion nuk lejohet në optstring atëherë OPTARG do të jetë i pacaktuar.

optstring është një varg letrash me njohje. Nëse një letër është pasuar nga një zorrës së trashë, opsioni pritet të ketë një argument që mund ose nuk mund të ndahet prej saj me hapësirë ​​të bardhë. Nëse një karakter opsioni nuk gjendet aty ku pritet, getopts do të vendos var variabël në një ``? '' Getopts do të veçoj OPTARG dhe shkruaj output në gabim standard. Duke specifikuar një zorrës së trashë si karakteri i parë i optstring të gjitha gabimet do të injorohen.

Një vlerë jo-zero kthehet kur arrihet opsioni i fundit. Nëse nuk ka argumente të mbetura, getopts do të vendosë var në opsionin e veçantë, `` - '' përndryshe, do të vendos var të ``? ''

Fragmenti i mëposhtëm tregon se si mund të përpunohen argumentet për një komandë që mund të marrë opsionet [a] dhe [b] dhe opsioni [c] që kërkon një argument.

ndërsa getopts abc: f
bëj
rasti $ f në
a | b) flamur = $ f ;;
c) carg = $ OPTARG ;;
\?) echo $ USAGE; dalje 1 ;;
esac
e bërë
zhvendoset `expr $ OPTIND - 1`

Ky kod do të pranojë një nga të mëposhtmet si ekuivalente:

cmd-file akarg file
cmd -a -c arg file file
cmd -carg një skedar
cmd -a -carg - skedar

komanda hash -rv ...

Shell mban një tabelë hash që kujton vendet e komandave. Pa asnjë argument, komanda hash printon përmbajtjen e kësaj tabele. Regjistrimet të cilat nuk janë shqyrtuar që kur komanda e fundit e cd janë shënuar me një yll; është e mundur që këto hyrje të jenë të pavlefshme.

Me argumente, komanda hash heq komandat e specifikuara nga tabela hash (përveç nëse ato janë funksione) dhe pastaj i lokalizon ato. Me opsionin - v , hash printon vendndodhjet e komandave teksa i gjen ato. Opcioni - r shkakton komandën hash për të fshirë të gjitha shënimet në tabelën e hash përveç funksioneve.

punëid [ punë ]

Printoni proceset e proceseve në punë. Nëse argumenti i punës hiqet, përdoret puna aktuale.

Punë

Kjo komandë liston të gjitha proceset e sfondit të cilat janë fëmijë të procesit aktual të shell.

PAK

Shtypni dosjen aktuale. Komanda e integruar mund të ndryshojë nga programi me të njëjtin emër, sepse komanda e integruar kujton atë që drejtoria aktuale është më mirë se sa ta recomputojë atë çdo herë. Kjo e bën atë më të shpejtë. Megjithatë, nëse dosja aktuale riemërtohet, versioni i integruar i pwd do të vazhdojë të shtypë emrin e vjetër për direktorinë.

lexoni [- p prompt ] [- r ] variable ...

E shpejtë është shtypur nëse opsioni- p është specifikuar dhe hyrja standarde është një terminal. Pastaj një linjë lexohet nga hyrja standarde. Rreshti i fundit vijues fshihet nga rreshti dhe rreshti ndahet siç përshkruhet në seksionin mbi ndarjen e fjalëve më sipër, dhe pjesët u caktohen variablave në rregull. Të paktën një ndryshore duhet të specifikohet. Nëse ka pjesë më shumë se variablat, pjesët e mbetura (së bashku me personazhet në IFS që i kanë ndarë ato) janë caktuar në variablin e fundit. Nëse ka më shumë variabla se copa, variablave të mbetura u caktohet string null. Ndërtesa e lexuar do të tregojë suksesin nëse EOF nuk haset në input, me ç'rast dështimi kthehet.

By default, përveç nëse opsioni -r është i specifikuar, rënia e kundërt `` \ '' vepron si një karakter largimi, duke shkaktuar karakterin e mëposhtëm që trajtohet fjalë për fjalë. Nëse një rresht pas rreshtit ndiqet nga rreshti i ri, rënia e kundërt dhe rreshti i ri do të fshihen.

emri i leximit ...

lexonly -p

Emrat e specifikuar shënohen vetëm si të lexuar, në mënyrë që ato të mos mund të modifikohen ose të hiqen më pas. Shell lejon vlerën e një ndryshoreje të vendoset në të njëjtën kohë kur shënohet vetëm me shkrim

vetëm emrin e leximit = vlera

Pa argumente, komanda readonly rendit emrat e të gjithë variablave të vetëm të lexuar. Me opsionin- p të caktuar, dalja do të jetë e formatuar në mënyrë të përshtatshme për përdorim jo-interaktiv.

vendosni [{- options | + opsione - arg ... ]

Komanda e vendosur kryen tre funksione të ndryshme.

Pa argumente, ajo liston vlerat e të gjitha variablave shell.

Nëse jepen opsione, vendos flamujt e opsioneve të specifikuara ose i fshin ato siç përshkruhet në seksionin e quajtur Përpunimi i Listës Argumentuese Sx.

Përdorimi i tretë i komandës së caktuar është të vendosni vlerat e parametrave pozicionalë të shell tek argumentet e specifikuara. Për të ndryshuar parametrat e pozicionit pa ndryshuar asnjë opsion, përdorni "` - '' si argumentin e parë për të vendosur. Nëse nuk ekzistojnë argumente, komanda e vendosur do të pastrojë të gjithë parametrat e pozicionit (ekuivalent me ekzekutimin e `` shift $ #. ''

vlera e ndryshueshme

Cakton vlerën në ndryshore. (Në përgjithësi është më mirë të shkruani vlera të ndryshueshme = më shumë sesa përdorimi i setvar setvar ka për qëllim të përdoret në funksione që i caktojnë vlerat variablave emrat e të cilëve kalojnë si parametra.)

ndryshim [ n ]

Ndryshoni parametrat e pozicionit n herë. Një ndryshim përcakton vlerën prej $ 1 në vlerën prej $ 2 vlerën prej $ 2 në vlerën prej $ 3 dhe kështu me radhë, duke zvogëluar vlerën prej $ # me një. Nëse n është më i madh se numri i parametrave pozicional, zhvendosja do të nxjerrë një mesazh gabimi dhe do të dalë me statusin e kthimit 2.

kohët

Printoni kohën dhe kohën e përdoruesve të grumbulluar për shell dhe për proceset që rrjedhin nga shell. Statusi i kthimit është 0.

sinjali i kurthit ...

Shkakoni shell për të analizuar dhe ekzekutuar veprimin kur ndonjë prej sinjaleve të specifikuara është pranuar. Sinjalet përcaktohen me numrin e sinjalit. Nëse sinjali është 0 , veprimi ekzekutohet kur shell del. veprimi mund të jetë i pavlefshëm ose `` - '' i pari shkakton që sinjali i specifikuar të injorohet dhe kjo e fundit shkakton veprimin e parazgjedhur. Kur shell ngre një subshell , ajo rivendos sinjalet e bllokuara (por nuk injorohet) tek veprimi i parazgjedhur. Komanda e kurthit nuk ka efekt mbi sinjalet që janë injoruar gjatë hyrjes në shell.

shkruani [ emri ... ]

Interpret çdo emër si një komandë dhe shtypni zgjidhjen e kërkimit të komandës. Zgjidhjet e mundshme janë: shell fjalekalimin, alias, shell builtin , komandë, gjurmuar alias dhe nuk u gjet. Për aliases zgjerimi alias është shtypur; për komandat dhe pseudonimet e përcjellura shtypet emri i plotë i komandës.

ulimit [- H-S ] [- a -tfdscmlpn [ vlera ]]

Pyetni për ose vendosni kufijtë e vështirë ose të butë në procese ose vendosni kufijtë e rinj. Zgjedhja midis limitit të vështirë (të cilin asnjë proces nuk lejohet të shkelë dhe që mund të mos ngrihet sapo të jetë ulur) dhe kufiri i butë (i cili shkakton që proceset të sinjalizohen por jo domosdoshmërisht të vrarë dhe të cilat mund të ngrihen) këto flamuj:

-H

vendosni ose pyesni për kufijtë e vështirë

-S

vendosni ose pyesni për kufijtë e butë. Nëse as - H nor - S nuk është specifikuar, kufiri i butë shfaqet ose të dy kufizimet janë vendosur. Nëse të dyja janë të specifikuara, fituesi i fundit fiton.

Kufiri për t'u marrë në pyetje ose vendosur, atëherë, zgjidhet duke specifikuar secilën prej këtyre flamujve:

-a

tregoni të gjitha limitet aktuale

-T

tregoni ose vendosni limitin në kohën e CPU (në sekonda)

-f

tregoni ose vendosni kufirin në skedarin më të madh që mund të krijohen (në blloqet 512 byte)

-d

tregoni ose vendosni kufirin në madhësinë e segmentit të të dhënave të një procesi (në kilobitë)

-s

tregoni ose caktoni kufirin në madhësinë e pirgit të një procesi (në kilobitë)

-c

tregoni ose caktoni kufirin në madhësinë më të madhe të deponit bazë që mund të prodhohet (në blloqet 512 byte)

-M

tregoni ose vendosni limitin e kujtesës fizike totale që mund të përdoret nga një proces (në kilobitë)

-l

tregoni ose caktoni limitin se sa memorie një proces mund të bllokohet me mlock (2) (në kilobitë )

-p

tregoni ose vendosni kufirin për numrin e proceseve që ky përdorues mund të ketë në një kohë

-N

tregoni ose vendosni kufirin në dosjet e numrave që një proces mund të ketë hapur menjëherë

Nëse asnjë nga këto nuk është specifikuar, është kufiri i madhësisë së skedarit që shfaqet ose vendoset. Nëse vlera është e specifikuar, kufiri është vendosur në atë numër; ndryshe shfaqet kufiri aktual.

Kufijtë e një procesi arbitrar mund të shfaqen ose të vendosen duke përdorur programin sysctl (8).

umask [ maskë ]

Vendosni vlerën e umask (shih umask (2)) në vlerën oktale të specifikuar. Nëse argumenti hiqet, vlera e umask shtypet.

unalias [- a ] [ emri ]

Nëse emri është specifikuar, shell heq atë alias. Nëse - a është specifikuar, të gjithë emërtimet janë hequr.

unset name ...

Variablat dhe funksionet e specifikuara janë të pandryshuara dhe të paeksportuara. Nëse një emër i caktuar i korrespondon një variabli dhe një funksioni, si variabli dhe funksioni janë të pacaktuar.

prisni [ punë ]

Prisni që puna e specifikuar të përfundojë dhe të kthejë statusin e daljes së procesit të fundit në punë. Nëse argumenti është lënë jashtë, pritni për të përfunduar të gjitha punët dhe kthimi i statusit të daljes zero.

Redaktimi i linjës së komandës

Kur sh është përdorur interaktive nga një terminal, komanda e tanishme dhe historia e komandës (shih fc në Sx Builtins) mund të redaktohen duke përdorur redaktimin e linjës së komandës në vi-mode. Ky modal përdor komandat, të përshkruara më poshtë, të ngjashme me një nëngrup të atyre që përshkruhen në faqen vi. Komanda `set '-o vi mundëson modifikimin e vi-mode dhe vendosjen sh në vi input mode. Me vi-mode të aktivizuar, sh mund të ndizet midis modalitetit të futjes dhe mënyrës së komandimit. Redaktori nuk është përshkruar plotësisht këtu, por do të jetë në një dokument të mëvonshëm. Është e ngjashme me vi: typing Aq ESC do të të hedhë në komandën e komandës VI mode. Goditja e kthimit Aq ndërsa në modalitetin e komandës do të kalojë vijën në shell.

E rëndësishme: Përdorni komandën e njeriut ( % man ) për të parë se si përdoret një komandë në kompjuterin tuaj të veçantë.