Skip to main content

Hamu - Linux Command

06 Utambulisho wa Command Line File System Operations in Swahili (Június 2026)

06 Utambulisho wa Command Line File System Operations in Swahili (Június 2026)
Anonim

NÉV

sh - parancsértelmező (shell)

SZINOPSZIS

SH -/ + ACefnuvxIimqsVEbc -o teljesnév -words cél …

LEÍRÁS

Sh a rendszer standard parancsértelmezője. A jelenlegi verziójaSH a folyamatban van, hogy megváltoztassák aPOSIX 1003.2 és 1003.2a specifikációk a héjhoz. Ez a verzió számos olyan tulajdonsággal rendelkezik, amelyek bizonyos szempontból hasonlóak a Korn-héjhoz, de nem Korn-héj-klón (lásd ksh (1)). Csak aPOSIX plusz néhány Berkeley kiterjesztés, beépülnek ebbe a héjba. ElvárjukPOSIX a 4.4-es BSD megjelenése után. Ez a man oldal nem a bemutató bemutatója vagy teljes leírása.

Áttekintés

A shell egy parancs, amely egy sorból vagy a terminálból származó sorokat olvas, értelmezi őket, és általában más parancsokat hajt végre. Ez a program fut, amikor egy felhasználó bejelentkezik a rendszerbe (bár a felhasználó kiválaszthat egy másik parancsértelmezőt a chsh (1) paranccsal). A héj olyan nyelvet valósít meg, amely rendelkezik áramlásvezérlő konstrukciókkal, olyan makróegységgel, amely az adattárolás mellett számos funkciót is tartalmaz, valamint a beépített történelem és vonalszerkesztési képességek. Számos funkcióval rendelkezik az interaktív használat elősegítésére, és előnye, hogy az értelmező nyelv mind az interaktív, mind a nem interaktív használathoz (shell scriptekhez) közös. Ez azt jelenti, hogy a parancsok közvetlenül beírhatók a futó shellba, vagy behelyezhetők egy fájlba, és a fájl közvetlenül végrehajtható a shell segítségével.

könyörgés

Ha nincs args jelen van, és ha a héj szabványos bemenete csatlakozik egy terminálhoz (vagy ha a -énzászló van beállítva), és a -c opció nincs jelen, a shell interaktív shell. Az interaktív héj általában minden egyes parancs előtt kérdezi és kezeli a programozás és a parancs hibáit különböző módon (az alábbiakban leírtak szerint). Amikor először elindul, a shell megvizsgálja az 0-as argumentumot, és ha egy kötőjel "-" -vel kezdődik, akkor a shell is egy login shell. Ezt a rendszer automatikusan végzi a rendszer, amikor a felhasználó először jelentkezik be. A login shell először az / etc / profile és a .profile parancsokból olvas parancsokat, ha léteznek. Ha a környezeti változóENV be van állítva a shellbe való belépéskor, vagy a bejelentkezési shell .profilejében van beállítva, a következő parancs olvassa el aENVEzért a felhasználónak olyan parancsokat kell elhelyeznie, amelyeket csak a .profile fájl bejelentkezési idejében kell végrehajtani, valamint a parancsokENV fájlba. AENV változtatható fájlra, helyezze el a következő sort a saját könyvtárának .profile-jébe

ENV = $ HOME / .shinit; export ENV

helyettesíti a `` .shinit '' fájlt. Mivel aENV fájl olvasható a héj minden meghívására, beleértve a shell parancsfájlokat és a nem interaktív héjakat, a következő paradigma hasznos a parancsok korlátozására aENV fájl interaktív meghívásokhoz. Helyezzen parancsokat a `` case '' és `` esac '' alatt (ezeket a parancsokat később ismertetjük):

eset $ - in * i *)

# parancs csak interaktív használatra

esac

Ha az opciók mellett parancssori argumentumokat is megadtak, akkor a shell az első argumentumot kezeli, mint egy parancsfájl nevét (shell parancsfájlt), és a fennmaradó argumentumokat a héj pozícióparamétereként állítja be ($ 1 , $ 2, stb.). Ellenkező esetben a shell a parancsokat a szabványos bemenetről olvassa le.

Argumentumlista feldolgozása

Minden egyes levél opciónak van egy megfelelő neve, amely argumentumként használható a -o választási lehetőség. A készlet -o név az alábbi leírásban található egyetlen levél opció mellett található. A "` - '' kötőjel bejelöli az opciót, míg a `` + '' plusz használata letiltja az opciót. Az alábbi opciók állíthatók be a parancssorból vagy a készletből (1) beépített (később ismertetve).

-a allexport

Az összes hozzárendelt változó exportálása. (FELHASZNÁLT 4,4ALFA)

-c

Parancsok olvasása a parancssorból. A szabvány bemenetről nem olvasható ki parancs.

-C noclobber

Ne törölje felül a meglévő fájlokat a ``> '' (UNIMPLEMENTED 4.4alpha)

-e errexit

Ha nem interaktív, azonnal kilép, ha az ellenőrzött parancs sikertelen. A parancs kilépési állapotát explicit módon tesztelik, ha a parancsot egy vezérlésre használjákha elifwhile vagyamíg vagy ha a parancs egy `` && '' vagy `` || '' operátor balkezes operanduma.

-f noglob

Letiltja az elérési út kiterjesztését.

-n noexec

Ha nem interaktív, olvassa el a parancsokat, de ne hajtsa végre azokat. Ez hasznos a shell parancsfájlok szintaxisának ellenőrzéséhez.

-u nounset

Írjon egy üzenetet a standard hibához, ha megpróbálja bővíteni egy nem beállított változót, és ha a shell nem interaktív, akkor azonnal lépjen ki. (FELHASZNÁLT 4,4ALFA)

-v bőbeszédű

A shell írja a bemenetet a standard hibára, ahogy olvasható. Hasznos a hibakereséshez.

-x xtrace

Minden parancsot írjon standard hibára (előtte a `+ 'a végrehajtás előtt. Hasznos a hibakereséshez.

-q quietprofile

Ha a -v vagy -x beállításokat, ne alkalmazza őket az inicializálási fájlok olvasásakor, ezek a / etc / profile .profile és a fájl által megadott fájl.ENV környezeti változó.

-ÉN ignoreeof

Figyelmen kívül hagyja az EOF-et az interaktív inputról.

-én interaktív

A héj kényszerítése interaktív viselkedésre.

-m monitor

Kapcsolja be a munka vezérlését (akkor állítsa be automatikusan az interaktív beállítást).

-s stdin

Parancsok beolvasása a szabványos bemenetről (automatikusan beállítva, ha nincsenek fájl argumentumok). Ez az opció nincs hatással arra az esetre, ha a héj már elindult (azaz a készlet (1)).

-V vi

Engedélyezze a beépített vi (1) parancssori szerkesztőt (letiltja -E ha be van állítva).

-E emacs

Engedélyezze a beépített emacs (1) parancssori szerkesztőt (letiltja -V ha be van állítva).

-b értesít

Engedélyezze az aszinkron értesítést a háttérben végzett munka befejezéséről. (FELHASZNÁLT 4,4ALFA)

Lexikai struktúra

A shell a beolvasást a fájlok soraiban értelmezi, és feltöri a szavakat a fehérekbe (üres és lapos), valamint bizonyos karakterek szekvenciájára, amelyek különlegesek a `` operators '' nevű héjhoz. Kétféle operátor létezik: az irányítást végző szolgáltatók és átirányítási szolgáltatók (jelentésüket később tárgyaljuk). Az alábbiakban felsoroljuk az üzemeltetők listáját:

"Vezérlők:"

& && ( ) ; ;; | ||

"Átirányítási szolgáltató:"

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

idézve

Az idézet segítségével bizonyos karakterek vagy szavak különleges jelentése eltávozható a héjhoz, például az operátorok, a fehérek vagy a kulcsszavak számára. Háromféle idézet létezik: illeszkednek az egyes idézőjelekhez, a kettős idézőjelekhez és a visszafordulókhoz.

backslash

A backslash megőrzi a következő karakter szó szerinti jelentését, kivéve az Aq újvonalat. Az Aq újvonalat megelőző ellentétet line vonalként kezeljük.

Egyetlen idézet

A karakterek egyetlen idézőjelben történő tárolása megőrzi az összes karakter szó szerinti jelentését (kivéve az egyes idézőjeleket, ami lehetetlenné teszi, hogy egyetlen idézőjelet egyetlen idézőjelbe tegyenek).

Dupla idézetek

A kettős idézőjelben szereplő karakterek befoglalása megőrzi a karakterek szó szerinti jelentését, kivéve a dollarsign ($) backquote (`) és a backslash () értékeket. A kettős idézőjelek között a backslash történelmileg furcsa, és csak a következő karaktereket idézheti:

$ `

Egyébként szó szerint marad.

Fenntartott szavak

A fenntartott szavak olyan kifejezések, amelyeknek különleges jelentése van a héjnak, és amelyeket egy vonal elején és egy vezérlõ operátor után ismerünk el. A következő tartalék szavak:

! Taelif Ta fi Ta, míg a Ta eset

egyébként Taa Ta, majd Ta {Ta}

do Tamegtett Ta, amíg a Ta taac

Jelentésüket később tárgyaljuk.

Más nevek

Az álnév az alias (1) beépített parancs segítségével megadott név és megfelelő érték. Amikor fenntartott szó fordul elő (lásd fent), és a fenntartott szavak ellenőrzése után a shell ellenőrzi a szót, hogy megnézze, egy alias-nak felel meg. Ha ez megtörténik, a bemeneti adatfolyamban az értékével helyettesít. Például, ha van egy `` lf '' nevû álnév az `` ls -F '' értékkel, akkor a bemenet:

Ha a foobar

lett volna

ls -F foobar

Az álnevek kényelmes módot kínálnak a naiv felhasználók számára a parancsok rövidítése számára, anélkül, hogy meg kellene tanulniuk az argumentumokkal ellátott függvények létrehozását. Alkalmazhatók lexikusan homályos kódok létrehozására is. Ez a használat nem kedvező.

parancsok

A shell értelmezi az általa olvasott szavakat egy olyan nyelvnek megfelelően, melynek specifikációja kívül esik a man oldalán (lásd a BNF-et aPOSIX 1003.2 dokumentum). Lényeges azonban, hogy egy sor olvasható, és ha a vonal első szava (vagy egy vezérlő után) nem fenntartott szó, akkor a shell egy egyszerű parancsot észlelt. Ellenkező esetben összetett parancsot vagy más speciális konstrukciót lehetett volna felismerni.

Egyszerű parancsok

Ha egy egyszerű parancs felismerésre került, akkor a shell elvégzi a következő műveleteket:

  1. A `` name = value '' formanyomtatvány vezető szavait le kell vágni és az egyszerű parancs környezetébe kell rendelni. Az átirányítási szolgáltatók és azok érvei (az alábbiakban ismertetettek szerint) le vannak vágva és feldolgozásra kerülnek.

  2. A fennmaradó szavakat kibővítettük a "Expansions" nevű szakaszban leírtak szerint, és az első megmaradt szó a parancsnévnek és a parancsnak. A többi szó a parancs argumentumainak tekintendő. Ha nincs parancsnév, az 1. pontban felismert `` name = value '' változó hozzárendelések hatással vannak az aktuális shellre.

  3. Az átirányításokat a következő részben leírt módon végezzük.

átirányítás

Az átirányítások segítségével megváltoztathatja, ha egy parancs beolvassa a bemenetet vagy elküldi a kimenetét. Általában az átirányítások megnyitják, bezárják vagy megismétlik egy meglévő hivatkozást egy fájlra. Az átirányításhoz használt általános formátum:

n redir-op fájl

hol redir-op egyike a korábban említett átirányítási szolgáltatóknak. Az alábbiakban felsoroljuk a lehetséges átirányításokat. A Bq n egy opcionális szám, mint a `3 '(nem` Bq 3', amely egy fájlleíróra utal.

n> fájlt

Átirányítja a szabványos kimenetet (vagy n) a fájlba.

n> | fájl

Ugyanaz, de felülírja a -C választási lehetőség.

n >> fájlt

Add hozzá a szabványos kimenetet (vagy n) a fájlhoz.

n <fájl

Átirányítja a szabványos bemenetet (vagy n) a fájlból.

n1 <& n2

Ismételje a standard bemenetet (vagy n1) az n2 fájlleíróból.

n <&

Zárja be a standard bemenetet (vagy n).

n1> & n2

Dupla standard kimenet (vagy n1) n2-ből.

n> &

Szoros szabványos kimenet (vagy n).

n <> fájlt

Nyissa meg a fájlt az olvasáshoz és az íráshoz a szabványos bemeneten (vagy n).

A következő átirányítást gyakran "itt-dokumentumnak" nevezik

n << határoló

Itt-doc-szöveg …

határoló

Az egymást követő vonalakra a határolóig terjedő összes szöveget elmenti és hozzáférhetővé teszi a parancsnak a szabványos bemeneten vagy az n fájlleírónál, ha megadta.Ha az eredeti sorban megadott határoló meg van adva, az itt-doc-szöveget szó szerint értelmezzük, ellenkező esetben a szöveg paraméter-kiterjesztésnek, parancshelyettesítésnek és számtani kiterjesztésnek van alávetve (az "Expansions" részben leírtak szerint) 'Ha az operátor `` << -' 'helyett `` <<' ', akkor az itt-doc-szövegben lévő vezető füllel le van tiltva.

Keresés és végrehajtás

Háromféle parancs létezik: shell funkciók, beépített parancsok és normál programok - és a parancsot keresik (név szerint) ebben a sorrendben. Mindegyiket különféle módon hajtják végre.

Héjfunkció végrehajtásakor az összes héj pozícióparamétert (kivéve a $ 0 értéket, amely változatlan marad) a héjfüggvény argumentumaira van állítva. A parancs környezetében explicit módon elhelyezett változók (a függvénynevek elhelyezésével hozzárendelve) a helyi függvényre vannak állítva, és a megadott értékekre vannak állítva. Ezután a függvénydefinícióban megadott parancs végrehajtásra kerül. A pozícióparaméterek visszaállnak eredeti értékükre, amikor a parancs befejeződik. Mindez az aktuális shellben történik.

A shell szerkezetek belsőleg a shell-hez kerülnek végrehajtás nélkül, új folyamat létrehozása nélkül.

Ellenkező esetben, ha a parancsnév nem egyezik egy funkcióval vagy beépített, akkor a parancsot a fájlrendszerben normál programként keresik (a következő részben leírtak szerint). Amikor egy normál program fut, a shell futtatja a programot, átadva az argumentumokat és a környezetet a programhoz. Ha a program nem egy normál végrehajtható fájl (vagyis ha nem kezdődik a "mágikus számmal", amelynekASCII a reprezentáció "#!", tehát a execve (2) az Er ENEEXEC-et adja vissza), a shell a programot alulnézetben értelmezi. Ebben az esetben a gyermek héja újból inicializálódik, úgyhogy a hatás olyan lesz, mintha egy új héj meghívására lenne szükség az ad-hoc shell parancsfájl kezeléséhez, kivéve, hogy a szülői héjban található hashed parancsok helyét a gyermek.

Ne feledje, hogy a dokumentum és a forráskód korábbi verziói félrevezetően és szórványosan utalnak egy shell-parancsfájlra, mágikus szám nélkül, mint "shell eljárás".

Útkeresés

Amikor parancsot talál, a shell először úgy látja, hogy van-e shell-függvénye ennek a névnek. Ezután egy beépített parancsot keres ezen a néven. Ha egy beépített parancsot nem találunk, akkor a két dolog egyike megtörténik:

  1. A perjelet tartalmazó parancsok egyszerűen végrehajtásra kerülnek keresések végrehajtása nélkül.

  2. A shell minden bejegyzést keresPÁLYA viszont a parancsot. APÁLYAa változónak kettőspontokkal elválasztott bejegyzések sorozata kell lennie. Minden bejegyzés egy könyvtár nevét tartalmazza. Az aktuális könyvtár implicit módon feltüntethető egy üres könyvtárnévvel, vagy kifejezetten egyetlen időszakkal.

Parancs kilépés állapot

Minden parancsnak van kilépési állapota, amely befolyásolhatja más parancshalmazok viselkedését. A paradigma az, hogy egy parancs kilép a normál vagy a sikeres nullával, és nem nulla a hiba, a hiba vagy a hamis jelzés miatt. Az egyes parancsok man oldalának jeleznie kell a különféle kilépési kódokat és azok jelentését. Ezenkívül a beépített parancsok kilépési kódokat adnak vissza, ugyanúgy, mint egy végrehajtott shell függvény.

Komplex parancsok

A komplex parancsok az egyszerű parancsok kombinációi a vezérlő operátorokkal vagy a fenntartott szavakkal együtt egy nagyobb összetett parancsot alkotnak. Általánosabban egy parancs egyike a következőknek:

  • egyszerű parancs
  • csővezeték
  • lista vagy összetett lista
  • összetett parancs
  • funkció meghatározása

Hacsak másként nem jelezzük, a parancs kilépési állapota az utolsó egyszerű parancs végrehajtása.

csővezetékek

A csővezeték egy vagy több, a vezérlő által elválasztott parancssorozat. Az összes, de az utolsó parancs szabványos kimenete a következő parancs szabványos bemenetéhez kapcsolódik. Az utolsó parancs szabvány kimenete a szokásos módon öröklődik a héjból.

A csővezeték formátuma:

! parancs1 | parancs2 …

Az 1. parancs szabványos kimenete a 2. parancs standard bemenetére van csatlakoztatva. A parancs szabványos bemenetét, szabványos kimenetét vagy mindkettőjét a csővezeték adja hozzá, mielőtt a parancs részét képező átirányítási operátorok által megadott átirányítás előtt.

Ha a csővezeték nem a háttérben van (később tárgyaljuk), akkor a parancsnokság minden parancsra vár.

Ha a fenntartott szó! nem előzi meg a csővezetéket, a kilépési állapot a csővezetéken megadott utolsó parancs kimeneti állapota. Ellenkező esetben a kilépési állapot az utolsó parancs kimeneti állapotának logikus NEM. Ez azt jelenti, hogy ha az utolsó parancs nulla értéket ad vissza, akkor a kilépési állapot 1; ha az utolsó parancs nullánál nagyobb, a kilépési állapot nulla.

Mivel a szabványos bemeneti vagy szabványos kimenet csővezeték hozzárendelése, vagy mindkettő a átirányítás előtt történik, átirányítással módosítható. Például:

$ command1 2> & 1 | command2

mind a szabványos kimenet, mind a standard parancs1 hibáját a parancs2 standard bemenetére küldi.

A; vagy terminátor okozza az előző AND-OR-listát (a továbbiakban leírt módon) egymás után végrehajtva; a & az aszinkron végrehajtást hajtja végre az előző AND-OR-listán.

Vegyük észre, hogy a többi héjtól eltérően minden folyamatban lévő folyamat a meghívó héj gyermeke (hacsak nem beépített héj, amely esetben az aktuális héjban végrehajtódik, de a környezeti hatásokat törli).

Háttérparancsok -

Ha egy parancsot az ampersand (&) vezérlő végzi, akkor a shell végrehajtja a parancsot aszinkron módon - azaz a shell nem várja meg a parancs befejezését a következő parancs végrehajtása előtt.

A háttérben futó parancs futtatásának formátuma:

parancs1 & parancs2 & …

Ha a shell nem interaktív, az aszinkron parancs standard bemenete a / dev / null értékre van állítva

Listák - általában beszéd

A lista nulla vagy több parancssorból álló sorozatot tartalmaz, amelyeket újvonalak, pontosvesszők vagy hangjelzők választanak el, és amelyek adott esetben a három karakter egyikével szüntethetők meg. A listában szereplő parancsok a sorrendbe kerülnek. Ha a parancsot egy parancssor követi, a shell elindítja a parancsot, és azonnal továbblép a következő parancsra; különben vár a parancs befejezésére, mielőtt folytatná a következőt.

Rövidzárlista-üzemeltetők

`` && '' és `` || '' az AND-OR listás operátorok. `&& '' végrehajtja az első parancsot, majd végrehajtja a második parancsot, mivel az első parancs kilépési állapota nulla. `` || '' hasonló, de végrehajtja a második parancsot, mivel az első parancs kimeneti állapota nemzero. `` && '' és `` || '' mind ugyanolyan prioritással bírnak.

Áramlásvezérlő konstrukciók - ha, miközben, esetre

Az if parancs szintaxisa

ha listát

majd sorolja fel

elif lista

akkor lista …

egyéb lista

fi

A time parancs szintaxisa

míg a lista

csináld listát

Kész

A két lista végrehajtása többször történik, míg az első lista kilépési állapota nulla. Az addig, amíg a parancs hasonló, de van a szó egészen addig a helyén, amíg az ismétlődik, amíg az első lista kilépési állapota nulla.

A for parancs szintaktikája

változó szóban …

csináld listát

Kész

A szavak kiterjesztésre kerülnek, majd a lista ismétlõdõen végrehajtásra kerül az egyes szavakra beállított változóval. do és done helyettesítheti a `` {'' és ``} ''

A törés és a folytatás parancs szintaxisa

szünet num

folytassa num

A szünet befejezi a leghosszabb számot a ciklusok és a hurkok között. A folytatás folytatódik a legbelső hurok következő iterációjával. Ezek beépített parancsokként működnek.

Az ügy parancs szintaxisa

esettanulmány

minta) lista ;;

esac

A minta valójában egy vagy több mintázat lehet (lásd később ismertetett Shell Patterns), amelyeket `` `karakterekkel választanak el.

Csoportosítási parancsok együtt

A parancsok csoportosításával írhatók

(lista)

vagy

{list;

Ezek közül az első hajtja végre a parancsokat egy alsó szinten. A (lista) csoportba sorolt ​​beépített parancsok nem befolyásolják az aktuális shell-ot. A második forma nem fork egy másik héjat, így kissé hatékonyabb. A csoportosító parancsok ezzel együtt lehetővé teszik a kimenet átirányítását, mintha egy program lenne:

{printf hello; printf világ n ";}> üdvözlet

Funkciók

A függvénydefiníció szintaxisa

name () parancsot

A függvénydefiníció végrehajtható állítás; végrehajtásakor egy névvel ellátott függvényt telepít és visszatér nulla állapotú kilépési állapotba. A parancs általában egy lista, amely a `` {'' és ``} ''

A változók helyi függvényeként lokalizálhatók egy függvénynek. Ez egy függvény első mondatként jelenik meg, és a szintaxis

helyi változó | - …

A helyi beépített parancsként működik.

Ha egy változó helyi, akkor örökli a kiindulási értéket, és az exportált és readonly zászlókat a változó ugyanolyan névvel a környező hatókörben, ha van ilyen. Ellenkező esetben a változó kezdetben nincs beállítva. A shell dinamikus robbantást használ, tehát ha az x helyi függvényt f függvénynek hívja, amely ezt követõen g függvényt hív, a g belsejében létrehozott x változóra való hivatkozások az f belsejében deklarált x változóra utalnak, nem az x nevű globális változóra .

Az egyedüli speciális paraméter, mint amennyit helyi lehet, `` - '' A `` - '' helyi beállítása minden olyan shell opciót, amely a beállított parancson keresztül megváltozik a funkción belül, visszaállítva az eredeti értékekre, amikor a függvény visszatér.

A visszatérési parancs szintaxisa

visszatérés exitstatus

Megszünteti az aktuálisan végrehajtott függvényt. A megtérülés beépített parancsként valósul meg.

Változók és paraméterek

A héj paramétereket tartalmaz. Egy névvel jelölt paraméter változónak nevezhető. A bekapcsoláskor a shell az összes környezeti változót héjváltozókká alakítja. Új formátumokat lehet beállítani az űrlap használatával

név = érték

A felhasználó által beállított változóknak csak egy névnek kell szerepeltetniük az alfabetikusokat, numerikusokat és aláhúzásokat, amelyek közül az elsőnek nem lehet numerikusnak lennie. A paramétereket az alábbiakban leírt szám vagy különleges karakter is jelölheti.

Pozícióparaméterek

Pozícióparaméter egy paraméter, amelyet egy szám (n> 0) jelez. A shell ezeket kezdetben a parancssori argumentumok értékére állítja be, amelyek követi a shell parancsfájl nevét. A beépített készlet (1) szintén beállítható vagy alaphelyzetbe állítható.

Speciális paraméterek

Egy speciális paraméter egy olyan paraméter, amelyet az alábbi speciális karakterek jeleznek. A paraméter értéke szerepel a karakter mellett.

*

Kiterjeszti a pozícióparamétereket, kezdve az egyikből. Ha a terjeszkedés egy kettős idézőjelben történik, akkor egyetlen mezőre bővül, ahol minden egyes paraméternek az első karakterével elválasztott értéke van.IFS változó, vagy a haIFS nincs beállítva.

@

Kiterjeszti a pozícióparamétereket, kezdve az egyikből.Ha a terjeszkedés kettős idézőjelek között történik, minden pozícióparaméter különálló argumentumként bővül. Ha nincsenek pozícióparaméterek, a @ kiterjesztése nulla argumentumot generál, még akkor is, ha a dupla idézőjelet. Ez alapvetően azt jelenti, hogy ha $ 1 `` abc '' és $ 2 `` def ghi '' akkor Qq $ @ kiterjeszti a két argumentumot:

abc def ghi

#

Kiterjeszti a helyzeti paraméterek számát.

?

Bővíti a legutóbbi csővezeték kilépési állapotát.

- (Jelszó)

Az aktuális opció zászlókra (az egybetűs opciónevek egy karakterláncba összefűzve) bővül, ahogyan azt a meghívás, a beépített beépített parancs, vagy a héj implicit módon megadja.

$

Bővíti a meghívott shell folyamatazonosítóját. A subshell megtartja ugyanazt a $ értéket, mint annak szülőjét.

!

Bővíti az aktuális héjból végrehajtott legfrissebb háttér parancs folyamatazonosítóját. Csővezeték esetében a folyamat azonosítója a pipeline utolsó parancsának.

0 (nulla)

Kiterjeszti a shell vagy shell script nevét.

Word bővítések

Ez a záradék leírja a különböző szavakkal végrehajtott bővítéseket. Nem minden bővítést hajtanak végre minden szóban, ahogy azt később kifejtettük.

A Tilde kiterjesztések, a paraméterek bővítései, a parancscserék, az aritmetikai kiterjesztések és az egyetlen szóban megjelenő idézeteltávolítások egyetlen mezőre bővülnek. Ez csak mező-megosztás vagy útvonalnév-bővítés, amely több mezőt hozhat létre egyetlen szóból. Az egyetlen kivétel erre a szabályra a speciális paraméter @ kiterjesztése a kettős idézőjelek között, ahogy fentebb leírtuk.

A szó bővítés sorrendje:

  1. Tilde bővítés, Paraméter bővítés, Command Substitution, Számtani Expansion (ezek mindegyike egyszerre jelentkezik).

  2. A mező felosztása az (1) lépésben létrehozott mezőkön történik, hacsak nemIFS változó null.

  3. Pathname bővítés (hacsak nincs beállítva -f érvényben van).

  4. Idézet eltávolítása.

A $ karakter a paraméterek bővítésének, parancs helyettesítésének vagy aritmetikai értékelésének bevezetésére szolgál.

Tilde bővítés (a felhasználó saját könyvtárának helyettesítésével)

Egy nem titkos tilde karakterrel (~) kezdődő szó tilde kiterjesztésre kerül. Minden szóköz (/) vagy a szó végén lévő karaktereket felhasználónévként kezelnek, és a felhasználó saját könyvtárába kerülnek. Ha a felhasználónév hiányzik (mint a ~ / foobar), a tilde helyett a ITTHON változó (az aktuális felhasználó saját könyvtára).

Paraméter bővítés

A paraméterek bővítésének formátuma a következő:

$ {Kifejezés}

ahol a kifejezés az összes karakterből áll, amíg a hozzá tartozó "`} "'Any` `} nem kerül visszaugrásra egy idézett stringen belül, és a beágyazott számtani kiterjesztésekben, parancshelyettesítésekben és változó bővítésekben lévő karaktereket nem vizsgáljuk meg megfelelő ``} ''

A legegyszerűbb formátum a paraméterek terjeszkedéséhez:

$ {Paraméter}

A paraméter értéke, ha van ilyen, helyettesített.

A paraméter nevét vagy szimbólumát zárójelben lehet elhelyezni, amelyek opcionálisak, kivéve az egynél több számjegyű pozícióparamétereket, vagy ha a paramétert egy olyan karakter követi, amely a név részeként értelmezhető. Ha egy paraméter-terjeszkedés a kettős idézőjelek között történik:

  1. A bővítés eredményeire nem kerül sor a pathname bővítésre.

  2. A terepi bõvítés eredményeként nem történik mezõbányás, a @ kivételével.

Ezenkívül a paraméterek bővítése módosítható az alábbi formátumok egyikével.

$ {Paraméter: szavas}

Alapértelmezett értékek használata. Ha a paraméter nincs beállítva vagy nulla, a szó kiterjesztése helyettesíthető; ellenkező esetben a paraméter értéke helyettesített.

$ {Paraméter: = szó}

Alapértelmezett értékek hozzárendelése. Ha a paraméter nincs beállítva vagy nulla, a szó kiterjesztése a paraméterhez van hozzárendelve. Minden esetben a paraméter végső értéke helyettesíthető. Ily módon csak változók, nem pozícióparaméterek vagy speciális paraméterek rendelhetők.

$ {Paraméter:? Szó}

Jelölje meg a hibát, ha az Null vagy a Unset. Ha a paraméter nincs beállítva vagy nulla, a szó kiterjesztése (vagy egy üzenet, amely jelzi, hogy nincs megadva, ha a szó elmarad) szabványos hibára íródik, és a shell kilép a nemzár kilépési állapotával. Ellenkező esetben a paraméter értéke helyettesíthető. Az interaktív héjnak nem kell kilépnie.

$ {Paraméter: + szó}

Alternatív érték használata. Ha a paraméter nincs beállítva vagy nulla, akkor null helyettesíti; egyébként a szó kiterjesztése helyettesít.

A korábban bemutatott paraméterkibővítéseknél a kettőspont használata a formátumban egy olyan paramétert eredményez, amely nincs beállítva vagy nulla; a kettőspont elhagyása egy olyan paramétert eredményez, amely csak nem állítható be.

$ {# Paraméter}

String hossza. A paraméter értékének karakter hosszúsága.

A következő négyféle paraméter-bővítés biztosítja a szubsztrátum feldolgozását. Mindegyik esetben a minták kiértékeléséhez a mintázat illesztés jelölését (lásd Shell Patterns), a szabályos kifejezés jelölés helyett. Ha a paraméter * vagy @, akkor a bővítés eredménye nem meghatározott. A teljes paraméter kiterjesztési karakterlánc kettős idézőjelekkel történő lezárása nem okozza a következő négy fajta minta karaktert, míg a karakterek idézése a zárójelben ez a hatás.

$ {Paraméter% szót}

Távolítsa el a legkisebb szuffix mintát. A szó kiterjesztésre kerül mintázat létrehozására. A paraméterbővítés ezután paramétert eredményez, és a minta legkisebb része a törölt mintával egyezik meg.

$ {Paraméter %% szót}

Távolítsa el a legnagyobb utótag mintát.A szó kiterjesztésre kerül mintázat létrehozására. A paraméterbővítés ezután a paramétert eredményezi, és a mintát a mintával egyező módon kirajzolják.

$ {Paraméter # szó}

Távolítsa el a legkisebb előtagmintát. A szó kiterjesztésre kerül mintázat létrehozására. A paraméterbővítés ezután a paramétert eredményezi, és az előtag legkisebb része a mintával törlésre kerül.

$ {Paraméter ## szót}

Távolítsa el a legnagyobb előtagmintát. A szó kiterjesztésre kerül mintázat létrehozására. A paraméterbővítés ezután paramétert eredményez, és a mintának a prefix számának megfelelő legnagyobb része törlődik.

Parancshelyettesítés

A parancscserék lehetővé teszik a parancs kimenetének helyettesítését a parancsnév helyett. A parancsok helyettesítése akkor történik, amikor a parancs a következőképpen van zárva:

$ (Parancs)

vagy Po `` backquoted '' Pc változat:

`command`

A shell kiterjeszti a parancs helyettesítését végrehajtva a parancsot egy subshell környezetben, és felváltja a parancs helyettesítését a szabványos kimenet a parancsot, eltávolítva szekvenciák egy vagy több s a helyettesítés végén. (Beágyazott s a kimenet vége előtt nem távolítják el; azonban a terepi felosztás során lefordíthatók s, az értékétől függőenIFS és idézve, hogy ez érvényes.)

Aritmetikai bővítés

A számtani expanzió mechanizmust biztosít aritmetikai kifejezés kiértékelésére és értékének helyére. A számtani kiterjesztés formátuma a következő:

$ ((Kifejezés))

A kifejezést úgy kell kezelni, mintha dupla idézőjelben lenne, kivéve, ha a kettős idézetet a kifejezés belsejében nem kezelik. A shell kiterjeszti az összes jelzőt a kifejezés kiterjesztésében, a parancs helyettesítésében és az idézet eltávolításában.

Ezután a shell ezt aritmetikai kifejezésként kezeli, és helyettesíti a kifejezés értékét.

Fehér szóköz (Field Splitting)

A paraméterek bővítése, a parancsok helyettesítése és számtani kiterjesztése után a héj olyan bővítmények és helyettesítések eredményeit vizsgálja, amelyek nem fordultak elő kettős idézőjelben a terepi hasadáshoz, és több mező eredményezhet.

A héj az egyes karaktereket kezeliIFS mint határoló, és használja a határolókat a paraméterek terjeszkedésének és a parancs helyettesí- tésének mezõkre való felosztására.

Pathname bővítés (fájlnév létrehozása)

Hacsak a -f zászló van beállítva, a fájlnevek generálása a szómegosztás befejezése után történik. Minden szó minták sorozata, szeletekkel elválasztva. A bővítési folyamat helyettesíti a szót az összes meglévő fájl nevével, amelynek nevét úgy alakíthatjuk ki, hogy az egyes mintákat egy meghatározott sorrendnek megfelelő karakterláncra cseréljük. Ennek két korlátai vannak: először egy minta nem egyezik meg egy karaktersorozattal rendelkező karaktersorozattal, és másodszor, a minta nem egyezik egy adott időtartammal kezdődő karakterlánccal, kivéve, ha a minta első karaktere egy időszak. A következő rész leírja a Pathname bővítéshez és az eset (1) parancshoz használt mintákat.

Shell minták

A minták normál karakterekből állnak, amelyek megfelelnek maguknak és meta-karaktereknek. A meta-karakterek ``! '' `` * '' ``? '' És `'' 'Ezek a karakterek elveszítik a különleges jelentését, ha idézték őket. Amikor a parancsot vagy a változóhelyettesítést végrehajtják, és a dollárjelet vagy a visszaidõt idéztek nem kettõs idõben, a parancsváltozó vagy a kimenet értéke beolvasódik ezekre a karakterekre, és meta karakterekké alakul.

A csillag (`` * '') minden karakterláncnak felel meg. A kérdőjel megegyezik az egyetlen karakterrel. A bal oldali konzol (`` '')) egy karakterosztályt vezet be. A karakterosztály végét egy (`` '') jelzi, ha a `` '' hiányzik, akkor a `` '' illeszkedik a `` '' kifejezéshez, nem pedig egy karakterosztályt. A karakterosztály megegyezik a szögletes zárójelek közötti karakterek bármelyikével. A mínuszjel használatával számos karakter adható meg. A karakterosztály kiegészíthető egy felkiáltójel segítségével a karakterosztály első karakterével.

Ahhoz, hogy a karakterosztályba "` '' szerepeljen, írja be az első karaktert (a ``! '' Után, ha van ilyen). A mínuszjel beillesztéséhez tegye meg az első vagy utolsó karaktert

Builtins

Ez a rész felsorolja azokat a beépített parancsokat, amelyek beépítettek, mivel olyan műveletet kell végrehajtaniuk, amelyet nem lehet külön folyamat végrehajtani. Ezen túlmenően számos más parancs is beilleszthető a hatékonyság érdekében (pl. Echo 1).

:

Egy null parancs, amely 0 (true) kilépési értéket ad vissza.

. fájl

A megadott fájl parancsát a shell elolvassa és végrehajtja.

álnév név = string …

Ha name = karakterlánc van megadva, a shell definiálja az álnevet név értékkel húr Ha igaz név meg van adva, az álnév értéke név nyomtatódik. Nincsenek érvek, aálnév beépített nyomtatja az összes meghatározott álnév nevét és értékét (ldunalias)

bg munka …

Folytassa a megadott feladatokat (vagy az aktuális feladatot, ha nincs megadva feladat) a háttérben.

parancs parancs arg …

Végezze el a megadott beépített parancsot. (Ez akkor hasznos, ha olyan shell függvényt használ, amelynek neve ugyanaz, mint egy beépített parancs.)

CD Könyvtár

Váltson a megadott könyvtárra (alapértelmezett$ HOME) Ha bejegyzés van aCDPATH jelenik meg aCD parancsot vagy a shell változótCDPATH be van állítva, és a könyvtár neve nem kezdődik vágójellel, majd a listában felsorolt ​​könyvtárakCDPATH megkeresi a megadott könyvtárat. ACDPATH ugyanaz, mint aPÁLYA Egy interaktív héjban aCD A parancs kiadja a könyvtár nevét, amelyre ténylegesen át lett kapcsolva, ha ez eltér a felhasználó által megadott névtől. Ezek eltérőek lehetnek, vagy mert aCDPATH mechanizmust használtunk, vagy azért, mert szimbolikus kapcsolatot kerestünk.

eval húr…

Összekapcsolja az argumentumokat szóközökkel. Ezután ismételje meg és hajtsa végre a parancsot.

exec parancs arg …

Hacsak a parancs elmarad, a shell folyamat helyébe a megadott program (amelynek valódi programnak kell lennie, nem beépített héjnak vagy funkciónak). Bármely átirányítás aexeca parancsot állandónak jelölték, így azok nem törlődnek, amikor aexec parancs befejezi.

kijárat exitstatus

Húzza le a shell eljárást. Ha exitstatus megadják, hogy a héj kilépési státusaként használják; egyébként az előző parancs kilépési állapotát használják.

export név…

export -p

A megadott neveket exportálják úgy, hogy azok a következő parancsok környezetében jelennek meg. Egy változó exportálásának egyetlen módja az, hogy megszüntesse azt. A shell lehetővé teszi egy változó értékének beállítását, ugyanakkor írás közben exportálják

exportnév = érték

Az argumentumok nélkül az export parancs felsorolja az összes exportált változó nevét. A … val -popció megadta, hogy a kimenet megfelelően formázható nem interaktív használatra.

fc-e szerkesztő első utolsó

fc -l -nr első utolsó

fc -s régi = új első

Afc beépített listák, vagy szerkesztések és újra végrehajtások, korábban az interaktív héjba írt parancsok.

-e szerkesztő

Használja a szerkesztő által kijelölt szerkesztőt a parancsok szerkesztéséhez. A szerkesztő sztring parancsneve, amelyet aPÁLYA változó. Az érték aFCEDIT változót használják alapértelmezettként, amikor -e nincs megadva. HaFCEDIT null vagy unset, aSZERKESZTŐ változót használnak. HaSZERKESZTŐ null vagy unset, ed (1) szerkesztőjeként használatos.

-l (ell)

Adja meg a parancsokat, ne pedig egy szerkesztőt hívjon fel rájuk. A parancsok az első és az utolsó operandus által megjelölt sorrendben vannak írva,r minden parancs előtt a parancs száma.

-n

Szüntesse meg a parancsok számát, amikor a -l-vel listázunk.

-r

Fordítsa meg a felsorolt ​​parancsok sorrendjét (a -l vagy szerkesztett (sem -l sem -s)

-s

Indítsa újra a parancsot anélkül, hogy egy szerkesztőt felszólítana.

első

utolsó

Válassza ki azokat a parancsokat, amelyek listázni vagy szerkeszteni. A hozzáférhetõ korábbi parancsok számát aHISTSIZE változó. Az első vagy az utolsó vagy mindkettő értéke az alábbiak egyike:

+ Száma

Egy pozitív szám, amely egy parancsszámot képvisel; parancsok száma megjeleníthető a -l választási lehetőség.

-szám

Egy negatív decimális szám, amely az előzőleg végrehajtott parancsot ábrázolja. Például -1 a közvetlenül előző parancs.

húr

Egy olyan karakterlánc, amely a legutóbb beírt parancsot jelöli, amely az adott karakterlánccal kezdődik. Ha a régi = új operandust sem a -s az első operandus string formája nem tartalmazhat beágyazott egyenlő jelet.

Az alábbi környezetváltozók befolyásolják az fc végrehajtását:

FCEDIT

A használni kívánt szerkesztő neve.

HISTSIZE

Az előző parancsok száma, amelyek elérhetők.

fg munka

Mozgassa a megadott feladatot vagy az aktuális feladatot az előtérbe.

getopts optstring var

APOSIX getopts parancs, hogy ne keverjük össze a Bell Labs -eredped getopt (1).

Az első érvnek egy sor betűnek kell lennie, amelyek mindegyikét opcionálisan kettőspont követheti annak jelzésére, hogy az opció argumentumot igényel. A megadott változó az elemzett opcióra van állítva.

Agetopts parancs az oldott getopt (1) segédprogramot az üres területeket tartalmazó argumentumok kezelése miatt lemondja.

Agetopts beépített lehet használni paraméterek és azok érveket a paraméterek listájáról. Amikor meghívják,getopts a következő opció értékét helyezi el a megadott parancssortól a megadott parancssortól var és indexe a shell változóbanOPTIND Amikor a shell meghívásra kerül,OPTIND inicializálva 1. Minden argumentumot igénylő opciónál agetopts beépített helyezi a héj változóbaOPTARG Ha egy opció nem engedélyezett a optstring azutánOPTARG lesz érvénytelenítve.

optstring egy elismert opcionális betűk egy csoportja. Ha egy betűt egy kettőspont követi, akkor az opció várhatóan olyan érvvel fog rendelkezni, amely a fehér helytől elválaszthatatlanul vagy attól elkülönítve lehet. Ha egy opcionális karakter nem található meg, ahol várható,getopts beállítja a változót var egy "`? ''getopts majd megszüntetiOPTARG és a kimenetet szabvány hibára írja. Azáltal, hogy a kettőspontot a optstring minden hibát figyelmen kívül hagy.

Az utolsó opció elérésekor nem nulla érték kerül visszaadásra. Ha nincsenek megmaradt érvek,getopts beállít var a speciális opcióhoz, `` - '' egyébként, ez be fog állni var hogy ``? ''

A következő kódfájl azt mutatja meg, hogyan lehet feldolgozni az argumentumokat egy olyan parancsra, amely képes az a és b opciókat és a c opciót, amelyhez argumentum szükséges.

míg a getopts abc: fcsinálesetben $ f bea | b) flag = $ f ;;c) carg = $ OPTARG ;;?) echo $ USAGE; kilépés 1 ;;esacKészváltás `expr $ OPTIND - 1`

Ez a kód elfogadja az alábbiak bármelyikét egyenértékűnek:

cmd -acarg fájl fájlcmd -a -c arg fájl fájlcmd -carg -a fájl fájlcmd -a -carg - fájl fájl

hash -rv parancs…

A héj megőrzi a hash asztalt, amely emlékeztet a parancsok helyére. Anélkül, hogy érvelnék, ahash parancs kiírja a táblázat tartalmát. Olyan bejegyzések, amelyeket az utolsó óta nem tekintettek megCD parancsot csillaggal jelöltük; ezek a bejegyzések érvénytelenek lehetnek.

Érvekkel ahash parancs törli a megadott parancsokat a hash táblaból (kivéve, ha ezek a függvények), majd megtalálja azokat. A … val -v opció, a hash kinyomtatja a parancsok helyét, amint megtalálja őket. A -r opció a hash parancsot a hash tábla összes bejegyzésének törlésére a funkciók kivételével.

jobid munka

Nyomtassa ki a folyamatok folyamatazonosítóit a munkában. Ha a munka argumentum elhagyása esetén az aktuális feladatot használják.

munkahelyek

Ez a parancs felsorolja azokat a háttérfolyamatokat, amelyek az aktuális shell folyamat gyermekei.

pwd

Nyomtassa ki az aktuális könyvtárat. A beépített parancs különbözhet az azonos nevű programtól, mert a beépített parancs megjegyzi, hogy az aktuális könyvtár nem az, hogy újra újraindítja azt. Ez gyorsabbá teszi. Ha azonban az aktuális könyvtár átnevezve van, apwd továbbra is kinyomtatja a könyvtár régi nevét.

olvas-p gyors -r változó…

A prompt kinyomtatható, ha a -p lehetőség van megadva, és a standard bemenet terminál. Ezután egy sor olvasható ki a szabványos bemenetről. A soron következő új sor törlődik a vonalról, és a sor felosztása a fent leírt szómegosztási szakaszban leírtak szerint történik, és a darabokat rendre a változókhoz rendelik. Legalább egy változót kell megadni. Ha több változó van mint a változók, akkor a többi darab (aIFS amelyek elválasztják őket) az utolsó változóhoz rendelik. Ha több változó van mint a darabok, akkor a fennmaradó változókhoz hozzárendeli az null karakterláncot. Aolvas beépített jelzi a sikert, kivéve, ha az EOF a bemeneten fellép, és ebben az esetben a hiba visszaáll.

Alapértelmezés szerint, kivéve, ha a -r opció megadása esetén a backslash `` '' escape karakterként működik, ami a következő karaktert szó szerint kezeli. Ha egy visszalépést új sor követi, akkor a visszalépést és az új sort törli.

csak olvasható név…

readonly -p

A megadott nevek csak olvashatóak, ezért nem módosíthatók és nem módosíthatók. A shell lehetővé teszi egy változó értékének beállítását, ugyanakkor csak írható írásjelekkel

readonly name = érték

Az argumentumok nélkül az readonly parancs felsorolja az összes csak olvasható változó nevét. A … val -p opció megadta, hogy a kimenet megfelelően formázható nem interaktív használatra.

készlet { -lehetőségek | + opciók | - arg …

Akészlet parancs három különböző funkciót hajt végre.

Az argumentumok nélkül felsorolja az összes shell változó értékeit.

Ha megadja a beállításokat, akkor beállítja a megadott opciójelzőket, vagy törli őket az Sx argumentumlista feldolgozás szakaszban leírt módon.

A beállított parancs harmadik használata a shell pozícióparamétereinek értékeinek a megadott args-ra való beállítása. A pozícióparaméterek változtatásának megváltoztatása nélkül a `` - '' paraméte