Exec - Linux Command - Unix Kommando

exec - ûnderwerp subprocess (es)

Synopsis

exec ? skeakels ? arg ? arg ... ?

Beskriuwing

Dit kommando behannelet syn arguminten as de specifikaasje fan ien of mear subprosessen foar útfieren. De arguminten nimme de foarm fan in standert shell pipeline wêr't elk ien wurd fan in kommando wurdt, en elke ûnderskate kommando wurdt subprosessen.

As de earste arguminten begjinne mei úteinsette - dan wurde se behannele as kommandopsjitters en binne net ûnderdiel fan de pipeline specification. De neikommende skeakels binne op it stuit stipe:

-keepnewline

Hâld in trailing nije line yn 'e útfier fan' e pipeline. Normaal wurdt in trailing-nije ljepper wiske.

-

Markearret it ein fan skeakels. It argumint folgjend dizze wurdt behannele as de earste arg, ek as it begjint mei in - .

As in arg (of paar arg 's) hat ien fan de hjirûnder beskreaune foarmen, wurdt it brûkt troch útfier om de stream fan ynput en útfier te behearjen ûnder de subprosessen (es). Sokke arguminten wurde net oerbrocht nei de subprosessen (es). Yn formulaten lykas `` < fileName '' triemnamme kin wêze yn in aparte argumint fan `` <'' of yn deselde argumint mei gjin yntervenende romte (dat is '`< fileName ' ').

|

Ferheget ûnderskate kommando's yn 'e pipeline. De standertútfier fan it foarôfgeand kommando sil pipet wurde yn de standertynfier fan it kommende kommando.

| &

Ferheget ûnderskate kommando's yn 'e pipeline. Sawol standert output en standert flater fan it foarôfgeand kommando wurde piped yn 'e standertynfier fan it kommende kommando. Dizze formulier fan omlieding skriuwt foarmen as 2> en> &.

< fileName

De triemnamme fan fileName wurdt iepene en brûkt as de standertynfier foar it earste kommando yn 'e pipeline.

<@ fileId

FileId moat de identifier wêze foar in iepen bestân, lykas de weromkommende wearde fan in foargeande oprop om te iepenjen . It wurdt brûkt as de standertynfier foar it earste kommando yn 'e pipeline. FileId moat foar it lêzen iepene binne.

<< wearde

De wearde wurdt oerjûn nei it earste kommando as syn standertynfier.

> fileName

Standard output from the last command is redirected to the file named fileName , overwriting its previous contents.

2> fileName

Standert flater fan alle kommando's yn 'e pipeline wurdt nei it triem neamd nei it triemnammeName, skriuwt de foarige ynhâld.

> & fileName

Sawol standert output fan it lêste kommando en standert flater fan alle kommando's wurde feroare nei de triemnamme named fileName , it oersetten fan syn foarige ynhâld.

>> fileName

Standard output from the last command is redirected to the file named fileName , appending it instead of overwriting it.

2 >> fileName

Standard error from all commands in the pipeline is redirected to the file named fileName , appending it instead of overwriting it.

>> & fileName

Sawol standert output fan it lêste kommando en standert flater fan alle kommando's wurde nei de triem neamd nei de triemnamme named fileName , oanhinger oan it antwurd net mear te skriuwen.

> @ fileId

FileId moat de identifier wêze foar in iepen bestân, lykas de weromkommende wearde fan in foargeande oprop om te iepenjen . Standard output from the last command is redirected to fileId 's file, which must have been opened for writing.

2> @ fileId

FileId moat de identifier wêze foar in iepen bestân, lykas de weromkommende wearde fan in foargeande oprop om te iepenjen . Standert flater fan alle kommando's yn 'e pyleline is omlaat nei fileId ' s bestân. De bestân moat foar it skriuwen iepene wurde.

> & @ fileId

FileId moat de identifier wêze foar in iepen bestân, lykas de weromkommende wearde fan in foargeande oprop om te iepenjen . Sawol standert output fan it lêste kommando en standert flater fan alle kommando's wurde omlaat nei fileId 's bestân. De bestân moat foar it skriuwen iepene wurde.

As de standert output net ferwidere is, jout it kommando's útfier de standertútfier fan it lêste kommando yn 'e pipeline. As ien fan 'e kommando's yn' e pipeline ûngewoan útskreaun wurdt of wurdt fermoarde of útsteld, sil de exec in in flater leverje en de flater berjocht sil de útfier fan 'e pipeline folgje, gefolch fan flater berjochten dy' t de abnormale terminen beskriuwe; De fariabele errorCode sil ekstra ynformaasje hawwe oer de lêste abnormale termination dy't beynfloede is. As ien fan 'e kommando's skriuwt nei syn standert foutfile en dat standert flater net ferwidere wurdt, dan wurdt in execút-flater weromjûn; De flater berjocht sil de standertútfier fan de pyleline opnimme, folge troch berjochten oer abnormale terminen (as der ien is), folge troch de standert foutútfier.

As it lêste karakter fan it resultaat of flater berjocht in nije letter is, wurdt dizze karakter normaal wiske fanút it resultaat of flater berjocht. Dit is konsistint mei oare Tcl-weromwearden, dy't normaal einigje mei nije linen. As lykwols -keepnewline oantsjutte is, dan wurdt de trailing- fernijing bewarre.

As standerdisearre is net omdraaid mei `` <'' of `` << '' of `` <@ '', dan wurdt de standertynfier foar it earste kommando yn 'e pipeline fan' e aktuele standertynfiering fan 'e applikaasje ôfnommen.

As de lêste arg is `` & '' dan sil de pipeline yn 'e eftergrûn útfierd wurde. Yn dit gefal sil it útfier kommando in list krije wêrmei eleminten de prozessidentifikaasjes binne foar alle subprosessen yn 'e pipeline. De standertútfier fan it lêste kommando yn 'e pyleline sil nei de standertgearkomste fan' e applikaasje gean as it net feroare is, en flaterútfier fan alle kommando's yn 'e pyleline sil nei de standertfoutdatei fan' e applikaasje gean as útskeakele is.

It earste wurd yn elk kommando wurdt nommen as kommando-namme; Tilde-substity wurdt op dit stuit útfierd, en as it resultaat gjin slashes befettet, dan wurde de mappen yn 'e omjouwingsfariabele PATH socht nei in útfierber troch de opjûne namme. As de namme in slash befettet, dan moat it ferwize nei in útfierber berikber berikber fan it aktive triemtafel. Nee `` glob '' útwreiding of oare shell-like substitúsjes wurde dien troch de arguminten nei kommando's.

Portability Issues

Windows (alle ferzjes)

It lêzen fan of of skriuwen nei in socket, mei it brûken fan 'e @ fileId ' notaasje, wurket net. As it lêzen fan in socket, sil in 16-bit DOS-applikaasje hingje en in 32-bit-applikaasje sil fuortdaliks weromkomme mei ein-of-bestân. As ien fan tapassing fan jo tapassing nei in socket skriuwt, wurdt de ynformaasje ynsteld nei de konsole stjoerd, as ien is, of is wegere.

It Tk-konsole-tekst-widget jout gjin echte standert IO-mooglikheden. Under Tk, as it omgean kin fan standertynfier, wurde alle applikaasjes in direkte ein fan triem sjen; ynformaasje dy't trochferwizing nei standertútfier of standert flater wurdt wegere.

Sawol foar-as-efter-skriuwers wurde akseptearre as paadbereiders foar arguminten nei Tcl-kommando's. Wannear't jo in applikaasje útfiere, kin de paadnammen foar de applikaasje ek befetsje as efterblokkearje as paadseparators. Tink derom lykwols dat de measte Windows-applikaasjes arguminten akseptearje mei foarkarren allinich as opsje delimiters en efterblêden allinich yn paden. Alle arguminten foar in applikaasje dy't in paadnammen opjaan mei foarkarren wurdt net automatysk omset om it backslash karakter te brûken. As in argumint foarkarren as de paadseparator befettet, kin it of neifolgje as paadnammen, ôfhinklik fan it programma.

Dêrneist moatte alle paadnammen de koarte, kryptyske, path-formaat brûke (bygelyks by it brûken fan in 16-bit DOS- of Windows-3.x-applikaasje brûke) ynstelle fan `` applbakery.default '' ).

Twa of mear foardielen of efterkant rinne in rige yn in paad nei in netwurkpaad. Bygelyks, in ienfâldige ferbining fan 'e root-directory c: / mei in subdirectory / finsters / systeem sille c: // finsters / systeem (twa slashes yn' e rige) krije, wat ferwiist nei it berikpunt dat systeem op 'e masine neamd windows (en de c: / is negeare), en is net lykweardich mei c: / windows / system , dy beskriuwt in map op de aktuele komputer. It kommando kommando- bestân moat brûkt wurde om te keppeljen komponinten.

Windows NT

As jo ​​besykje om in applikaasje út te fieren, útfiere earst sykje foar de namme as it oantsjutte is. Dwaande , yn order, .com , .exe , en .bat wurde oan 'e ein fan' e oantsjutte namme oanbean en sykje it langere namme. As in mapnamme net as in part fan de applikaasjemetoade ynfierd is, wurde de folgjende mappen automatysk trochsocht as jo besykje it applikaasje te besjen:

De triemtafel wêr de Tcl útfierber laden is.
De aktive triemtafel.
It Windows NT 32-bit systeemtriem.
It Windows NT 16-bit systeemtriem.
De Windows NT-thússide.
De mappen dy't op 'e paad steane.

Om de shell ynfierbehearders lykas dir te kopiearjen en te kopieren, moat de oproppe ' cmd.exe / c ' 'foar it winske kommando foarjaan .

Windows 95

As jo ​​besykje om in applikaasje út te fieren, útfiere earst sykje foar de namme as it oantsjutte is. Dwaande , yn order, .com , .exe , en .bat wurde oan 'e ein fan' e oantsjutte namme oanbean en sykje it langere namme. As in mapnamme net as in part fan de applikaasjemetoade ynfierd is, wurde de folgjende mappen automatysk trochsocht as jo besykje it applikaasje te besjen:

De triemtafel wêr de Tcl útfierber laden is.
De aktive triemtafel.
It Windows-bestial-triemtafel.
De Windows 95 home directory.
De mappen dy't op 'e paad steane.

Om de shell ynfierbehearders lykas dir te kopiearjen en te kopieren, moat de oproppe ' command.com / c ' foar it winske kommando foarjaan .

Ienris in 16-bit DOS-applikaasje hat standertynfier lêzen fan in konsole en dêrnei ôfsluten, allegearre folge 16-bit DOS-applikaasjes sille de standertynfier sjogge as al sluten. 32-bit applikaasjes hawwe dit probleem net en wurkje goed, ek nei in 16-bit DOS-applikaasje tinkt dat de standertynfier sluten is. Der is gjin wierskynlike berjochten foar dizze brek op dizze tiid.

Ferwidering tusken it NUL: apparaat en in 16-bit applikaasje docht net altyd. Wannear't omdraait fan NUL:, kinne inkele applikaasjes hingje, oaren krije in unfinale stream fan `` 0x01 '' bytes, en guon sille feitlik in direkte ein fan triem krije; It gedrach liket my ôfhinklik fan wat yn 'e applikaasje kompilearre is. As it omgean mei grutter as 4K of sa nei NUL: sille wat applikaasjes hingje. De boppeste problemen komme net mei 32-bit applikaasjes.

Alle DOS-16-bit-tapassingen wurde synchronisearre. Alle standertynfier fan in pûde nei in 16-bit DOS-applikaasje wurdt opnommen yn in tydlike triem; it oare ein fan 'e pylk moat sletten wurde foardat de 16-bit DOS-applikaasje begjint te fieren. Alle standertútfier of flater fan in 16-bit DOS-applikaasje nei in pûr wurde yn tydlike bestannen sammele; de applikaasje moat foardwaan foardat de tydlike triemmen nei it folgjende poadium fan de pipeline neiútlaat wurde. Dit is due to a workaround for a Windows 95 bug in the implementation of pipes, and is how the standard Windows 95 DOS shell handles pipes itself.

Certain applications, such as command.com , should not be interactively executed. Applikaasjes dy't direkte tagong krije op it konsole-finster, ynstee fan it lêzen fan har standere ynfier en skriuwen nei har standertútfier, kinne mislearre, hingje Tcl, of sels it systeem hingje as har eigen privee-konsole-finster net beskikber is.

Macintosh

It kommando- útfier is net ymplementearre en bestiet net ûnder Macintosh.

Unix

It kommandoútfier is folslein funksjonele en wurket as beskreaun.

Sjoch ek

flater (n), iepen (n)

Keywords

útfiere, pipeline, omlieding, subprosessen

Wichtich: Brûk de manbehearder ( % man ) om te sjen hoe't in kommando brûkt wurdt op jo bepaalde komputer.