Skip to main content

Linux - Unix Command: exec

Difference between exec and xargs in Unix (Juni 2026)

Difference between exec and xargs in Unix (Juni 2026)
Anonim

exec - Invoke delprocess (er)

Synopsis

exec? switchar ? arg ? arg … ?

Beskrivning

Detta kommando behandlar sina argument som specifikationen för en eller flera delprocesser som ska utföras. Argumenten har formen av en standard skalledning där var och en arg blir ett ord av ett kommando, och varje distinkt kommando blir en delprocess.

Om de första argumenten tillexec börja med- då behandlas de som kommandoradsväxlar och ingår inte i rörledningsspecifikationen. Följande strömbrytare stöds för närvarande:

-keepnewline

Behåll en efterföljande ny linje i rörledningens utgång. Normalt kommer en efterföljande newline att raderas.

--

Markerar slutet på omkopplarna. Argumentet som följer denna kommer att behandlas som det första arg även om det börjar med a-.

Om en arg (eller par av arg s) har en av formuläret som beskrivs nedan och det används avexec att styra flödet av inmatning och utdata bland delprocesserna. Sådana argument kommer inte att överföras till delprocessen. I former som `` < filnamn '' filnamn kan antingen vara i ett separat argument från `` <'' eller i samma argument utan mellanliggande utrymme (dvs `` < filnamn '').

|

Separerar separata kommandon i rörledningen. Standardutgången från det föregående kommandot piperas till standardinmatningen i nästa kommando.

|&

Separerar separata kommandon i rörledningen. Både standardutmatning och standardfel för föregående kommando kommer att ledas in i standardinmatningen för nästa kommando. Denna form av omdirigering strider mot former som 2> och> &.

< filnamn

Filen heter av filnamn öppnas och används som standardingång för det första kommandot i rörledningen.

<@ fileId

FileId måste vara identifieraren för en öppen fil, till exempel returvärdet från ett tidigare samtal tillöppna. Den används som standardinmatning för det första kommandot i rörledningen. FileId måste ha öppnats för läsning.

<< värde

Värde skickas till det första kommandot som standardinmatning.

> filnamn

Standardutmatningen från det sista kommandot omdirigeras till filen som heter filnamn , skriver över dess föregående innehåll.

2> filnamn

Standardfel från alla kommandon i rörledningen omdirigeras till filen som heter filnamn , skriver över dess föregående innehåll.

>& filnamn

Både standardutmatning från det sista kommandot och standardfelet från alla kommandon omdirigeras till filen som heter filnamn , skriver över dess föregående innehåll.

>> filnamn

Standardutmatningen från det sista kommandot omdirigeras till filen som heter filnamn , lägga till det istället för att skriva över det.

2>> filnamn

Standardfel från alla kommandon i rörledningen omdirigeras till filen som heter filnamn , lägga till det istället för att skriva över det.

>>& filnamn

Både standardutmatning från det sista kommandot och standardfelet från alla kommandon omdirigeras till filen som heter filnamn , lägga till det istället för att skriva över det.

>@ fileId

FileId måste vara identifieraren för en öppen fil, till exempel returvärdet från ett tidigare samtal tillöppna. Standardutgången från det sista kommandot omdirigeras till fileId s fil, som måste ha öppnats för skrivning.

2>@ fileId

FileId måste vara identifieraren för en öppen fil, till exempel returvärdet från ett tidigare samtal tillöppna. Standardfel från alla kommandon i rörledningen omdirigeras till fileId s fil. Filen måste ha öppnats för skrivning.

>&@ fileId

FileId måste vara identifieraren för en öppen fil, till exempel returvärdet från ett tidigare samtal tillöppna. Både standardutmatning från det sista kommandot och standardfelet från alla kommandon omdirigeras till fileId s fil. Filen måste ha öppnats för skrivning.

Om standardutmatningen inte har omdirigerats, dåexec Kommando returnerar standardutgången från det sista kommandot i pipelinen. Om någon av kommandona i rörledningen avslutas onormalt eller dödas eller stängs av, dåexec kommer att returnera ett fel och felmeddelandet kommer att inkludera pipelineens utgång följt av felmeddelanden som beskriver de abnormala avslutningarna; defelkod variabel kommer att innehålla ytterligare information om den senaste onormala uppsägningen som uppstått. Om någon av kommandona skriver till sin standardfelfil och att standardfelet inte omdirigeras, dåexec kommer att returnera ett fel Felmeddelandet kommer att inkludera pipelineens standardutgång, följt av meddelanden om onormala avslutningar (om några), följt av standardfelutmatningen.

Om den sista karaktären av resultatet eller felmeddelandet är en ny linje tas det tecknet normalt bort från resultatet eller felmeddelandet. Detta överensstämmer med andra TCL-returvärden, som normalt inte slutar med nya linjer. Men om-keepnewline specificeras då den efterföljande nya linjen behålls.

Om standardinmatningen inte omdirigeras med `` <'' eller `` << '' eller `` <@ '', tas standardinmatningen för det första kommandot i pipeline från programmets aktuella standardinmatning.

Om den sista arg är `` & '' då kommer rörledningen att utföras i bakgrunden. I detta fallexecKommando kommer att returnera en lista vars element är processidentifierare för alla delprocesser i rörledningen.Standardutmatningen från det sista kommandot i pipelinen går till programmets standardutmatning om den inte har omdirigerats och felutmatning från alla kommandon i pipelinen går till programmets standardfelfil om inte omdirigeras.

Det första ordet i varje kommando tas som kommandonamnet; Tilde-substitution utförs på den, och om resultatet inte innehåller några snedstreck, söks katalogerna i PATH-miljövariabeln för en körbar av det angivna namnet. Om namnet innehåller ett snedstreck måste det hänvisas till en körbar som kan nås från den aktuella katalogen. Ingen expansion av "glob" eller andra skalliknande substitutioner utförs på argumenten till kommandon.

Portability Issues

Windows (alla versioner)

Läser från eller skriver till ett uttag, med hjälp av ``@ fileId '' notation, fungerar inte. När du läser från ett uttag kommer en 16-bitars DOS-applikation att hängas och en 32-bitars ansökan kommer omedelbart tillbaka med slutet av filen. När någon typ av ansökan skriver till ett uttag, skickas informationen istället till konsolen, om en är närvarande eller kasseras.

Tk-konsoltextgränssnittet ger inte verkliga standard-IO-funktioner. Under Tk, när omdirigering från standardinmatning, kommer alla applikationer att se en omedelbar slutändning av filen; information som omdirigeras till standardutgång eller standardfel kasseras.

Antingen framåt eller bakåt slashes accepteras som vägseparatorer för argument till Tcl-kommandon. När du kör en applikation kan det sökvägsnamn som anges för programmet också innehålla snedstreck framåt eller bakåt som sökvägsseparatorer. Tänk dock på att de flesta Windows-applikationer accepterar argument med framåt snedstreck endast som alternativavgränsare och backslashes bara i sökvägar. Eventuella argument till en applikation som anger ett söknamn med framåt snedstreck kommer inte automatiskt att konverteras för att använda backslash-tecknet. Om ett argument innehåller framåt snedstreck som vägseparatorn kan det eller inte erkännas som ett söknamn beroende på program.

Vidare, när du ringer en 16-bitars DOS- eller Windows 3.X-applikation, måste alla söknamn använda det korta, kryptiska sökformatet (t.ex. med `` applba ~ 1.def '' istället för `` applbakery.default '' ).

Två eller flera snedstreck framåt eller bakåt i rad i en sökväg avser en nätverksväg. Till exempel en enkel sammanfogning av rotkatalogenc: / med en underkatalog/ Fönster / system Kommer att gec: // fönster / system (två snedstreck ihop), som refererar till den beräknade monteringspunktensystemet på den kallade maskinenfönster (och denc: / ignoreras) och motsvarar intec: / windows / system, som beskriver en katalog på den aktuella datorn. Defil ansluta kommandot ska användas för att sammanfatta vägkomponenter.

Windows NT

När du försöker att utföra en ansökan,exec söker först efter namnet som det anges. Sedan, i ordning,.com, Exe, och.fladdermus bifogas slutet av det angivna namnet och det söker efter det längre namnet. Om ett katalognamn inte anges som en del av programnamnet söks följande kataloger automatiskt i ordning när du försöker hitta programmet:

Den katalog från vilken Tcl-körningen laddades.Den aktuella katalogen.Windows NT 32-bitars systemkatalog.Windows NT 16-bitars systemkatalog.Windows NT-hemkatalogen.De kataloger som anges i sökvägen.

För att exekvera skalet inbyggda kommandon somdir ochkopia, den som ringer måste förordna ``cmd.exe / c'' till önskat kommando.

Windows 95

När du försöker att utföra en ansökan,exec söker först efter namnet som det anges. Sedan, i ordning,.com, Exe, och.fladdermus bifogas slutet av det angivna namnet och det söker efter det längre namnet. Om ett katalognamn inte anges som en del av programnamnet söks följande kataloger automatiskt i ordning när du försöker hitta programmet:

Den katalog från vilken Tcl-körningen laddades.Den aktuella katalogen.Windows 95-systemkatalogen.Windows 95-hemkatalogen.De kataloger som anges i sökvägen.

För att exekvera skalet inbyggda kommandon somdir ochkopia, den som ringer måste förordna ``command.com / c'' till önskat kommando.

När en 16-bitars DOS-applikation har läst standardinmatning från en konsol och sedan slutar, kommer alla senare körningar 16-bitars DOS-applikationer att se standardinmatningen som redan stängd. 32-bitarsprogram har inte detta problem och kommer att köras korrekt, även om en 16-bitars DOS-applikation tycker att standardinmatningen är stängd. Det finns ingen känd lösning för denna bugg vid denna tidpunkt.

Omdirigering mellanNUL: enhet och en 16-bitars applikation fungerar inte alltid. Vid omdirigering frånNUL:, vissa applikationer kan hänga, andra kommer att få en oändlig ström av `` 0x01''byte, och vissa kommer faktiskt att få en omedelbar slutändan av filen; beteendet verkar bero på något som sammanställts i själva ansökan. Vid omdirigering större än 4K eller så tillNUL:, vissa applikationer kommer att hänga. Ovanstående problem händer inte med 32-bitars applikationer.

Alla DOS 16-bitarsprogram körs synkront. All standardinmatning från ett rör till en 16-bitars DOS-applikation samlas in i en temporär fil; Den andra änden av röret måste vara stängd innan 16-bitars DOS-applikationen börjar exekvera.All standardutgång eller -fel från en 16-bitars DOS-applikation till ett rör samlas in i temporära filer. ansökan måste upphöra innan de temporära filerna omdirigeras till nästa steg i rörledningen. Detta beror på en lösning för ett Windows 95-fel i genomförandet av rör, och är hur det vanliga Windows 95 DOS-skalet hanterar rören själva.

Vissa tillämpningar, t.ex.command.com, bör inte utföras interaktivt. Program som direkt åtkomst till konsolfönstret, istället för att läsa från standardinmatningen och skriva till sin standardutgåva, kan misslyckas, hänga Tcl, eller till och med hänga systemet om deras eget privata konsolfönster inte är tillgängligt för dem.

Macintosh

Deexec kommandot är inte implementerat och existerar inte under Macintosh.

Unix

Deexec kommandot är fullt funktionellt och fungerar som beskrivet.

Se även

fel (n), öppen (n)

Nyckelord

exekvera, pipeline, omdirigering, delprocess

Viktig: Använd man kommando ( % man ) för att se hur ett kommando används på din dator.