Exec - Linux Command - Komanda Unix

exec - Invoke subprocess (es)

përmbledhje

exec ? çelsin ? arg ? arg ... ?

Përshkrim

Kjo komandë trajton argumentet e saj si specifikim i një ose më shumë nënproceseve për të ekzekutuar. Argumentet marrin formën e një tubacioni shell standard ku çdo arg bëhet një fjalë e një komande, dhe çdo komandë e veçantë bëhet një nënproces.

Nëse argumentet fillestare për të filluar me - atëherë ato trajtohen si ndërprerës të komandës dhe nuk janë pjesë e specifikacionit të tubacionit. Çelsat e mëposhtme mbështeten aktualisht:

-keepnewline

Ruajtja e një rreshti të fundit në prodhimin e tubacionit. Normalisht një rresht i fundit do të fshihet.

-

Shënon fundin e çelsave. Argumenti pas kësaj do të trajtohet si argument i parë edhe nëse fillon me një - .

Nëse një arg (ose palë arg ) ka një nga format e përshkruara më poshtë atëherë përdoret nga exec për të kontrolluar rrjedhën e hyrjes dhe daljes në mesin e nënprocesit (es). Argumentet e tilla nuk do të kalojnë në nënprocesin (es). Në forma të tilla si `` < fileName '' fileName mund të jetë ose në një argument të veçantë nga `` <'' ose në të njëjtin argument pa ndonjë hapësirë ​​ndërhyrëse (p.sh. `` < fileName '').

|

Ndan komandat e dallueshme në tubacion. Prodhimi standard i komandës së mësipërme do të vendoset në hyrjen standarde të komandës tjetër.

| &

Ndan komandat e dallueshme në tubacion. Si prodhimi standard ashtu edhe gabimi standard i komandës së mësipërme do të përfshihen në hyrjen standarde të komandës së ardhshme. Kjo formë e ridrejtimit anashkalon forma të tilla si 2> dhe> &.

< fileName

Skedari i emëruar nga fileName hapet dhe përdoret si hyrje standarde për komandën e parë në tubacion.

<@ fileId

FileId duhet të jetë identifikuesi për një skedar të hapur, siç është vlera e kthimit nga një telefonatë e mëparshme për t'u hapur . Përdoret si input standard për komandën e parë në tubacion. FileId duhet të jetë hapur për lexim.

<< vlera

Vlera kalon në komandën e parë si hyrje e saj standarde.

> fileName

Dalja standarde nga komanda e fundit është ridrejtuar në skedarin me emrin fileName , duke mbivendosur përmbajtjen e tij të mëparshme.

2> fileName

Gabimi standard nga të gjitha komandat në tubacion është ridrejtuar në skedarin me emrin fileName , duke e mbivendosur përmbajtjen e mëparshme.

> & fileName

Të dyja prodhimet standarde nga komanda e fundit dhe gabimi standard nga të gjitha komandat janë ridrejtuar në skedarin me emrin fileName , duke mbivendosur përmbajtjen e tij të mëparshme.

>> fileName

Dalja standarde nga komanda e fundit është ridrejtuar në skedarin me emrin fileName , duke i bashkangjitur atij në vend që të mbishkruaj atë.

2 >> fileName

Gabimi standard nga të gjitha komandat në tubacion është ridrejtuar në skedarin me emrin fileName , duke shtuar në të në vend që të mbishkruaj atë.

>> & fileName

Të dyja prodhimet standarde nga komanda e fundit dhe gabimi standard nga të gjitha komandat janë ridrejtuar në skedarin me emrin fileName , duke i bashkangjitur atij në vend që të mbishkruaj atë.

> @ fileId

FileId duhet të jetë identifikuesi për një skedar të hapur, siç është vlera e kthimit nga një telefonatë e mëparshme për t'u hapur . Prodhimi standard nga komanda e fundit është ridrejtuar në skedarin e fileId , i cili duhet të jetë hapur për shkrim.

2> @ fileId

FileId duhet të jetë identifikuesi për një skedar të hapur, siç është vlera e kthimit nga një telefonatë e mëparshme për t'u hapur . Gabimi standard nga të gjitha komandat në tubacion është ridrejtuar në skedarin e fileId . Dosja duhet të jetë hapur për shkrim.

> & @ fileId

FileId duhet të jetë identifikuesi për një skedar të hapur, siç është vlera e kthimit nga një telefonatë e mëparshme për t'u hapur . Të dyja prodhimet standarde nga komanda e fundit dhe gabimi standard nga të gjitha komandat janë ridrejtuar në skedarin e fileId . Dosja duhet të jetë hapur për shkrim.

Nëse prodhimi standard nuk është ridrejtuar atëherë komanda exec e kthen prodhimin standard nga komanda e fundit në tubacion. Nëse ndonjë nga komandat në daljen e tubacionit dalin në mënyrë jonormale ose do të vriten ose pezullohen, atëherë exec do të kthejë një gabim dhe mesazhi i gabimit do të përfshijë daljen e tubacionit pasuar nga mesazhet e gabimit që përshkruajnë ndërprerjet jonormale; ndryshorja errorCode do të përmbajë informacion shtesë për ndërprerjen e fundit të parregullt që haset. Nëse ndonjë nga komandat shkruan në dosjen e gabimit standard dhe gabimi standard nuk është ridrejtuar, atëherë exec do të kthejë një gabim; mesazhi i gabimit do të përfshijë prodhimin standard të tubacionit, pasuar nga mesazhet për ndërprerjet anormale (nëse ka), e ndjekur nga prodhimi i gabimit standard.

Nëse karakteri i fundit i mesazhit të rezultatit ose gabimit është një rresht i ri atëherë ai karakter normalisht fshihet nga rezultati ose mesazhi i gabimit. Kjo është në përputhje me vlerat e tjera të kthimit Tcl, të cilat zakonisht nuk përfundojnë me linja të reja. Megjithatë, në qoftë se -keepnewline është specifikuar atëherë rreshti i fundit vijë mbrohet .

Nëse hyrja standarde nuk është ridrejtuar me `` <'' ose `` << '' ose `` <@ '' atëherë hyrja standarde për komandën e parë në tubacion merret nga hyrja standarde e aplikacionit.

Nëse argumenti i fundit është `` & '' atëherë tubacioni do të ekzekutohet në sfond. Në këtë rast komanda exec do të kthejë një listë elementet e të cilave janë identifikuesit e procesit për të gjitha nënproceset në tubacion. Prodhimi standard nga komanda e fundit në tubacion do të shkojë në prodhimin standard të aplikacionit nëse nuk është ridrejtuar dhe gabimi i daljes nga të gjitha komandat në tubacion do të shkojë në skedarin e gabimit standard të aplikacionit nëse nuk është ridrejtuar.

Fjala e parë në secilën komandë merret si emri i komandës; zëvendësohet me tilde dhe në qoftë se rezultati nuk përmban ulje atëherë drejtoritë në ndryshoret e mjedisit PATH kërkohen për një ekzekutues me emrin e dhënë. Nëse emri përmban një prerje atëherë duhet t'i referohet një ekzekutuesi që mund të arrihet nga dosja aktuale. Asnjë zgjerim `` glob '' ose zëvendësime të tjera të ngjashme me shell nuk kryhen në argumentet e komandave.

Çështjet e transportueshmërisë

Windows (të gjitha versionet)

Leximi ose shkrimi në një socket, duke përdorur shenja `` @ fileId '', nuk funksionon. Kur lexoni nga një prizë, një aplikacion 16-bit DOS do të varet dhe një aplikacion 32-bit do të kthehet menjëherë me skedarin fundor. Kur ose tipi i aplikimit shkruan në një fole, informacioni është dërguar në vend të konsolit, nëse një është i pranishëm ose fshihet.

Tk console widget tekst nuk siguron aftësi reale të standardeve të IO. Nën Tk, kur ridrejtohet nga inputet standarde, të gjitha aplikacionet do të shohin një fund të menjëhershëm të skedarit; informacioni i ridrejtuar tek prodhimi standard ose gabimi standard do të fshihet.

Ose rënia e përparme ose e prapme pranohen si ndarës të rrugëve për argumente për komandat Tcl. Gjatë ekzekutimit të një aplikacioni, emri i rrugës i specifikuar për aplikacion mund të përmbajë ulje përpara ose prapa si ndarës të rrugëve. Kini parasysh, megjithatë, se shumica e aplikacioneve të Windows pranojnë argumente me ulje përpara vetëm si delimitues të opsioneve dhe rreshtat e pasme vetëm në shtigje. Çdo argument i një aplikacioni që përcakton një emër të rrugës me ulje të parave nuk do të konvertohet automatikisht për të përdorur karakterin e kundërt. Nëse një argument përmban ulje përpara si ndarës i rrugës, mund ose nuk mund të njihet si një emër i rrugës, në varësi të programit.

Përveç kësaj, kur telefononi një aplikacion 16-bit DOS ose Windows 3.X, të gjithë emrat e rrugëve duhet të përdorin formatin e shkurtër, të fshehtë (p.sh., duke përdorur `` applba ~ 1.def '' në vend të `` applbakery.default '' ).

Dy ose më shumë prerje përpara ose prapa në një rresht në një rrugë i referohen një rruge rrjeti. Për shembull, një bashkim i thjeshtë i drejtorisë së rrënjës c: / me një nën-drejtori / dritare / sistem do të japë c: // windows / system (dy skajet së bashku), që i referohet pikës së montimit të quajtur sistemi në makinë të quajtur dritare c: / është injoruar), dhe nuk është ekuivalent me c: / windows / system , që përshkruan një direktori në kompjuterin aktual. Komanda e bashkëngjitjes së skedarit duhet të përdoret për të bashkërenduar komponentët e rrugës.

Windows NT

Kur përpiqeni të ekzekutoni një aplikacion, exec kërkon së pari emrin si është specifikuar. Pastaj, me qëllim, .com , .exe dhe .bat janë shtuar në fund të emrit të specifikuar dhe kërkon për emrin më të gjatë. Nëse emri i direktorisë nuk është specifikuar si pjesë e emrit të aplikacionit, drejtoritë e mëposhtme automatikisht kontrollohen me qëllim që gjatë përpjekjes për të gjetur aplikacionin:

Lista nga e cila u ngarkua ekzekutuesi Tcl.
Drejtoria aktuale.
Drejtoria e sistemit të Windows-it 32-bit.
Drejtoria e sistemit të Windows-it 16-bit.
Drejtoria e Windows NT në shtëpi.
Drejtoritë e listuara në rrugë.

Në mënyrë që të ekzekutojë komandat shell builtin si dir dhe kopje , thirrësi duhet të parapaguajë `` cmd.exe / c '' në komandën e dëshiruar.

Windows 95

Kur përpiqeni të ekzekutoni një aplikacion, exec kërkon së pari emrin si është specifikuar. Pastaj, me qëllim, .com , .exe dhe .bat janë shtuar në fund të emrit të specifikuar dhe kërkon për emrin më të gjatë. Nëse emri i direktorisë nuk është specifikuar si pjesë e emrit të aplikacionit, drejtoritë e mëposhtme automatikisht kontrollohen me qëllim që gjatë përpjekjes për të gjetur aplikacionin:

Lista nga e cila u ngarkua ekzekutuesi Tcl.
Drejtoria aktuale.
Drejtoria e sistemit të Windows 95.
Lista e Windows 95 në shtëpi.
Drejtoritë e listuara në rrugë.

Në mënyrë që të ekzekutojë komandat shell builtin si dir dhe kopje , thirrësi duhet të parapagoj `` command.com / c '' në komandën e dëshiruar.

Pasi një aplikacion 16-bit i DOS ka lexuar të dhëna standarde nga një tastierë dhe më pas është lënë, të gjitha aplikacionet 16-bit DOS më pas do të shohin hyrjen standarde siç është e mbyllur. Aplikacionet 32-bit nuk e kanë këtë problem dhe do të funksionojnë si duhet, edhe pasi një aplikacion DOS 16-bitësh mendon se hyrja standarde është e mbyllur. Nuk ka asnjë zgjidhje të njohur për këtë bug në këtë kohë.

Përzgjedhja në mes të pajisjes NUL: dhe një aplikacioni 16-bit nuk funksionon gjithmonë. Kur ridërgojnë nga NUL: disa aplikacione mund të varen, të tjerët do të marrin një brez të pafund të byte `` 0x01 '', dhe disa në fakt do të marrin një skedar të menjëhershëm; sjellja duket të varet nga diçka e përpiluar në vetë aplikacionin. Kur ridrejtimi më i madh se 4K ose kështu në NUL: disa aplikacione do të varen. Problemet e mësipërme nuk ndodhin me aplikacione 32-bit.

Të gjitha aplikacionet 16-bit DOS janë të sinkronizuara. Të gjitha të dhënat standarde nga një tub në një aplikacion 16-bit DOS mblidhen në një skedar të përkohshëm; pjesa tjetër e tubit duhet të mbyllet para fillimit të ekzekutimit të aplikacionit DOS 16-bit. Të gjitha prodhimet standarde ose gabimet nga një aplikacion DOS 16-bit në një tub mbledhen në skedarë të përkohshëm; aplikacioni duhet të përfundojë para se dosjet e përkohshme të ridrejtohen në fazën tjetër të tubacionit. Kjo është për shkak të një zgjidhjeje për një bug të Windows 95 në zbatimin e tubave, dhe është se si standardi Windows 95 DOS shell trajton tuba vetë.

Disa aplikacione, të tilla si command.com , nuk duhet të ekzekutohen në mënyrë interaktive. Aplikacionet që qasen drejtpërdrejt në dritaren e konsolës, në vend që të lexojnë nga futja e tyre standarde dhe shkrimi në prodhimin e tyre standard mund të dështojnë, të rrijnë Tcl ose të varin edhe sistemi nëse dritarja e tyre private e konsolës nuk është në dispozicion për ta.

mushama

Komandimi exec nuk zbatohet dhe nuk ekziston nën Macintosh.

Unix

Komanda exec është plotësisht funksionale dhe funksionon siç përshkruhet.

Shiko gjithashtu

gabim (n), i hapur (n)

Keywords

ekzekutojë, tubacionin, ridrejtimin, nënprocesin

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