Exec - Linux Command - Unix naredba

exec - podnesite podproces (e)

Sinopsis

exec ? sklopke ? arg ? arg ... ?

Opis

Ova naredba tretira svoje argumente kao specifikaciju jednog ili više podprocesa za izvršavanje. Argumenti se u obliku standardnog plinovoda gdje svaki argument postaje jedna riječ naredbe, a svaka naredba postaje podproces.

Ako su početni argumenti za izvršenje s početkom - onda se tretiraju kao preklopnici naredbene linije i nisu dio specifikacije cjevovoda. Trenutno su podržane sljedeće preklopke:

-keepnewline

Zadržava novu liniju koja slijedi u izvedbi cjevovoda. Obično će se izbrisati novi redak koji slijedi.

-

Označava kraj prekidača. Argument koji slijedi ovaj će se tretirati kao prvi argument, čak i ako počinje s - .

Ako arg (ili par arg -a) ima jedan od dolje opisanih oblika, tada ga koristi izvršitelj za kontrolu protoka ulaza i izlaza među potprocesima. Takvi argumenti neće se proslijediti podprocesu (es). U obrascima kao što su `` < fileName '' fileName može biti ili u zasebnom argumentu iz `` <'' ili u istom argumentu bez intervencijskog prostora (npr. `` < FileName ).

|

Odvoji različite naredbe u cjevovodima. Standardni izlaz prethodne naredbe bit će cijevni u standardni ulaz sljedeće naredbe.

| &

Odvoji različite naredbe u cjevovodima. Standardni izlaz i standardna pogreška prethodne naredbe bit će uključeni u standardni ulaz sljedeće naredbe. Ovaj oblik preusmjeravanja nadjačava oblike poput 2> i> &.

< datotekaName

Datoteka nazvana datotekomName otvara se i koristi se kao standardni unos za prvu naredbu u cjevovodu.

<@ fileId

FileId mora biti identifikator otvorene datoteke, kao što je povratna vrijednost iz prethodnog poziva za otvaranje . Koristi se kao standardni unos za prvu naredbu u cjevovodima. FileId mora biti otvoren za čitanje.

<< vrijednost

Vrijednost se prenosi na naredbu kao standardni unos.

> naziv datoteke

Standardni izlaz zadnje naredbe preusmjeren je na datoteku pod nazivom fileName , prepisivanjem prethodnog sadržaja.

2> naziv datoteke

Standardna pogreška svih naredbi u cjevovodu preusmjerena je na datoteku pod nazivom fileName , prepisivanjem prethodnih sadržaja.

& & naziv datoteke

Standardni izlaz iz zadnje naredbe i standardna pogreška iz svih naredbi preusmjeravaju se na datoteku pod nazivom fileName , prepisivanjem prethodnih sadržaja.

>> fileName

Standardni izlaz iz posljednje naredbe preusmjerava se na datoteku pod nazivom fileName , dodajući mu, umjesto da ga prebrisati.

2 >> naziv datoteke

Standardna pogreška iz svih naredbi u cjevovodu preusmjerena je na datoteku pod nazivom fileName , dodajući mu, umjesto da ga prebrisati.

>> & naziv datoteke

Standardni izlaz iz zadnje naredbe i standardne pogreške iz svih naredbi preusmjeravaju se na datoteku pod nazivom fileName , dodajući mu, umjesto da ga prebrisati.

> @ fileId

FileId mora biti identifikator otvorene datoteke, kao što je povratna vrijednost iz prethodnog poziva za otvaranje . Standardni izlaz iz posljednje naredbe preusmjerava se u fileId datoteku, koja je vjerojatno otvorena za pisanje.

2> @ fileId

FileId mora biti identifikator otvorene datoteke, kao što je povratna vrijednost iz prethodnog poziva za otvaranje . Standardna pogreška iz svih naredbi u cjevovodu preusmjerena je na fileId datoteku. Datoteka mora biti otvorena za pisanje.

> & @ fileId

FileId mora biti identifikator otvorene datoteke, kao što je povratna vrijednost iz prethodnog poziva za otvaranje . Standardni izlaz iz posljednje naredbe i standardna pogreška iz svih naredbi preusmjeravaju se u fileId datoteku. Datoteka mora biti otvorena za pisanje.

Ako standardni izlaz nije preusmjeren, izvršna naredba vraća standardni izlaz iz zadnje naredbe u cjevovod. Ako bilo koja od naredbi iz cjevovoda odstrani abnormalno ili se ubije ili obustavi, izvršitelj će vratiti pogrešku, a poruka o pogrešci će uključivati ​​izlaz plinovoda nakon kojeg slijedi poruka o pogrešci koja opisuje abnormalne prekide; varijabla errorCode sadrži dodatne informacije o posljednjem abnormalnom otkazu. Ako bilo koja od naredbi piše u svoju standardnu ​​datoteku pogreške i da standardna pogreška nije preusmjerena, izvršitelj će vratiti pogrešku; poruka o pogrešci će uključivati ​​standardni izlaz cjevovoda, nakon čega slijedi poruka o abnormalnim ukidanjima (ako ih ima), nakon čega slijedi standardna izlazna pogreška.

Ako zadnji znak rezultata ili poruke o pogrešci predstavlja novu liniju, taj se znak obično briše iz rezultata ili poruke o pogrešci. Ovo je u skladu s ostalim Tcl povratnim vrijednostima, koje obično ne završavaju novim linijama. Međutim, ako je navedena opcija -keepnewline , zadržava se novi redak koji slijedi.

Ako standardni unos nije preusmjeren s `` <'' ili `` << '' ili `` <@ '' onda standardni unos za prvu naredbu u cjevovodu preuzima se od trenutnog standardnog unosa aplikacije.

Ako zadnji argument je `` & '' onda će cjevovod biti izvršen u pozadini. U ovom slučaju exec naredba će vratiti popis čiji su elementi identifikatori procesa za sve podprocese u cjevovodima. Standardni izlaz iz posljednje naredbe u cjevovodima idu na standardni izlaz aplikacije ako nije preusmjeren, a izlazne pogreške iz svih naredbi u cjevovodima idu na standardnu ​​datoteku pogreške programa, osim ako se ne preusmjeri.

Prva riječ u svakoj naredbi uzima se kao naziv naredbe; tilde-substitution se izvodi na njemu, a ako rezultat ne sadrži kose, onda se direktori u varijabli okruženja PATH traže izvršnu datoteku prema zadanom imenu. Ako ime sadrži prorez, mora se odnositi na izvršnu datoteku koja se može dosegnuti iz trenutnog direktorija. Nema šifranata "` globa "ili drugih zamjena sličnih ljusci na argumente naredbi.

Problemi prenosivosti

Windows (sve verzije)

Čitanje ili pisanje na utičnicu, koristeći znak " @ fileId ", ne funkcionira. Kad čitate iz utičnice, 16-bitna DOS aplikacija će se objesiti i 32-bitna aplikacija odmah će se vratiti s krajnjim datotekama. Kada se bilo koja vrsta aplikacije piše na utičnicu, informacija se umjesto toga šalje na konzolu, ako je prisutna ili je odbacena.

Tk konzola tekstualni widget ne pruža stvarne standardne IO mogućnosti. U odjeljku Tk, kada preusmjeravate s standardnog unosa, svi će aplikacije vidjeti neposrednu završnicu datoteke; informacije preusmjerene na standardni izlaz ili standardnu ​​pogrešku odbacit će se.

Koraci prema naprijed ili unatrag prihvaćaju se kao razdjeljivači polja za argumente za Tcl naredbe. Prilikom izvođenja aplikacije, naziv putanja koji je naveden za aplikaciju može sadržavati i kose prema naprijed ili unatrag kao razdjeljivače staze. Imajte na umu, međutim, da većina aplikacija sustava Windows prihvaća argumente s kosim krakovima samo kao opcije odstranjivača i povratne trake samo na putovima. Svaki argument za aplikaciju koji određuje naziv staze s kosom kose prema naprijed neće se automatski pretvoriti u upotrebu znaka za povratni unos. Ako argument sadrži koso prema naprijed kao razdjelni put, može se ili ne mora prepoznati kao naziv putanja, ovisno o programu.

Osim toga, kada zovete 16-bitnu DOS ili Windows 3.X aplikaciju, svi nazivi moraju upotrebljavati kratki, kriptski oblik puta (npr., Upotrijebiti "applba ~ 1.def" umjesto "applbakery.default" ).

Dvije ili više kosih crta unatrag ili unatrag u redu na putu odnose se na mrežni put. Na primjer, jednostavna povezanost korijenskog direktorija c: / s poddirektorijem / sustavom Windows / sustavom donijet će c: // windows / system (dvije kose zajedno), što se odnosi na točku montiranja nazvanu sustav na stroju nazvanom prozori (i c: / se zanemaruje), a ne odgovara c: / windows / systemu , koji opisuje direktorij na trenutnom računalu. Naredba pridruživanja datoteke treba koristiti za povezivanje komponenti puta.

Windows NT

Prilikom pokušaja izvođenja aplikacije, izvršitelj prvo pretražuje ime kako je navedeno. Zatim, kako bi, .com , .exe i .bat dodali do kraja navedenog imena i traži duže ime. Ako imenik direktorija nije naveden kao dio naziva aplikacije, automatski se pretražuju sljedeći direktori kako bi pokušali locirati aplikaciju:

Imenik iz kojeg je učitana Tcl izvršna datoteka.
Trenutni direktorij.
Windows NT 32-bitni direktorij sustava.
Windows NT 16-bitni direktorij sustava.
Windows NT početni direktorij.
Imenici navedeni na putu.

Kako bi izvršili naredbe ugrađene u ljuske kao što su dir i copy , pozivatelj mora unijeti `` cmd.exe / c '' na željenu naredbu.

Windows 95

Prilikom pokušaja izvođenja aplikacije, izvršitelj prvo pretražuje ime kako je navedeno. Zatim, kako bi, .com , .exe i .bat dodali do kraja navedenog imena i traži duže ime. Ako imenik direktorija nije naveden kao dio naziva aplikacije, automatski se pretražuju sljedeći direktori kako bi pokušali locirati aplikaciju:

Imenik iz kojeg je učitana Tcl izvršna datoteka.
Trenutni direktorij.
Imenik sustava Windows 95.
Početna domena sustava Windows 95.
Imenici navedeni na putu.

Da bi se izvršile naredbe ugrađene u ljuske kao što su dir i copy , pozivatelj mora predati `` command.com / c '' na željenu naredbu.

Jednom kad 16-bitna DOS aplikacija pročita standardni unos s konzole, a zatim se prekine, sve kasnije pokrenute 16-bitne DOS aplikacije vidjet će standardni unos kao već zatvoren. 32-bitne aplikacije nemaju ovaj problem i ispravno će se pokrenuti, čak i nakon što 16-bitna DOS aplikacija smatra da je standardni unos zatvoren. Trenutačno nema poznatih zaobilaznih rješenja za ovaj problem.

Preusmjeravanje između NUL: uređaja i 16-bitne aplikacije ne funkcionira uvijek. Prilikom preusmjeravanja iz NUL-a: neki se programi mogu objesiti, drugi će dobiti beskonačni tok `0x01 'bajtova, a neki će zapravo pravilno dobiti neposrednu završetak datoteke; čini se da ponašanje ovisi o nečemu sastavljenom u samoj aplikaciji. Kada preusmjeravate više od 4K ili više na NUL:, neke će aplikacije objesiti. Gore navedeni problemi se ne događaju s 32-bitnim aplikacijama.

Sve DOS 16-bitne aplikacije se pokreću sinkrono. Svi standardni ulazi iz cijevi na 16-bitnu DOS aplikaciju prikupljeni su u privremenu datoteku; drugi kraj cijevi mora biti zatvoren prije nego što 16-bitni DOS aplikacija počne izvršavati. Sve standardne izlazne ili pogreške iz 16-bitne DOS aplikacije na cijev prikupljaju se u privremene datoteke; aplikacija mora prekinuti prije nego što se privremene datoteke preusmjeravaju u sljedeću fazu cjevovoda. To je zbog zaobilaznog rješenja za bugove u sustavu Windows 95 u provedbi cijevi, a kako standardna Windows 95 DOS školjka upravlja samim cijevima.

Određene aplikacije, kao što je command.com , ne smiju se izvršavati interaktivno. Aplikacije koje izravno pristupaju prozoru konzole, a ne čitanje od standardnog unosa i pisanja na standardni izlaz mogu uspjeti, objesiti Tcl ili čak i objesiti sustav ako im nije dostupan vlastiti prozor privatne konzole.

mekintoš

Exec naredba nije implementirana i ne postoji u sustavu Macintosh.

Unix

Exec naredba je potpuno funkcionalna i radi kako je opisano.

Vidi također

pogreška (n), otvorena (n)

ključne riječi

izvršiti, cjevovod, preusmjeravanje, podproces

Važno: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.