Kuinka suorittaa komentoja Shell -komentosarjasta

How Execute Commands From Within Shell Script

Bashissa komentosarjan komentosarjojen suorittaminen voi aluksi olla hieman pelottavaa ja saattaa vaatia harppauksen. Loppujen lopuksi bash -komentosarjan sisällä suoritettavat komennot eivät ole vuorovaikutteisia. Täällä laskemme perustan komentojen suorittamiseen komentosarjan komentosarjasta ja vastaamme seuraaviin komentoja koskeviin kysymyksiin: Mistä ne tulevat? Mitä ne ovat? Kuinka käytämme niitä käsikirjoituksessa?

Mistä käskyt tulevat?

Bash -komennot tulevat mistä tahansa seuraavista luokista:



Bash itse (katso sisäänrakennetut)

Bashin mukana tulee omat komennot, jotka mahdollistavat pääsyn sisäänrakennettuihin ominaisuuksiin, kuten matriisien ilmoittamiseen, rivien lukemiseen tiedostosta ja muihin bash-ominaisuuksiin. Kutsumme tämän luokan komentoja, bash sisäänrakennettuja komentoja tai lyhyesti rakennettuja komentoja.



Suoritettavat tiedostot ympäristössäsi (katso ulkoiset komennot)

Oletuksena bash perii oletusarvoisesti tiettyjä muuttujia. Tämä havaitaan PATH -muuttujan tapauksessa, mukaan lukien suoritettavien tiedostojen sijainnit, joihin viitataan ulkoisina komennoina bashissa. Eli jos kiemura komento on polullasi, se voidaan suorittaa bash -komentosarjasta samalla tavalla kuin vuorovaikutteisessa tilassa. Kutsumme tämän luokan komentoja, ulkoisia komentoja tai lyhyesti komentoja.



Käyttäjän määrittämä toiminto (katso toiminnot)

Ennen kuin suoritat ulkoisia komentoja ja sisäänrakennettuja toimintoja, bash tarkistaa, onko toiminto määritetty. Jos se on, toiminto suoritetaan komennona. Jos ei, se jatkaa komentojen etusijajärjestystä. Jotta komentosarjan ulkopuolella määritetty toiminto voidaan suorittaa, ne on ilmoitettava -x -attribuutilla; muutoin ne voidaan sisällyttää käyttämällä. Komento. Kutsumme tämän luokan komentoja käyttäjän määrittämiin toimintoihin tai toimintoihin lyhyesti.

Mitä ovat komennot

Komento on mikä tahansa sana, jota on käsiteltävä ohjelman ainoana tulopisteenä kuoriympäristössä. Jos komento suoritetaan, itse komento ja valinnaiset argumentit annetaan sijaintiparametreina, $ {0}, $ {1}, $ {2},… Nolla sijaintiparametri ($ {0}) merkitsee itse komento ja se ei muutu kontekstissaan. Toisin kuin toimintojen sijaintiparametrit, $ {1}, $ {2},… jotka voivat muuttua kontekstista riippuen, $ {0} on muuttumaton funktiokutsujen välillä.

Komentojen laajuus riippuu ilmoituksen sijainnista ja määritteistä, jotka on määritetty yleiseksi, sisäänrakennetuksi bashiksi tai paikalliseksi bash-ohjelmalle.



Tässä on luettelo tiedettävästä komentotyypistä.

Sisäänrakennetut komennot

Nämä ovat bash-maailmankaikkeuden ensiluokkaisia ​​kansalaisia, mukaan lukien hahmot, kuten '.' ':' '[' '] Ja varatut sanat, kuten julista bashissa. Luotat siihen, että nämä komennot, jotka sisältyvät bash -sisäänrakennettujen komentojen luetteloon, ovat käytettävissä bash -skriptissäsi.

Jotkin komennot eivät välttämättä ole käytettävissä bash -tulkisi nimityksestä ja versionumerosta riippuen.

Ulkoiset komennot

Ulkoiset komennot ovat suoritettavia tiedostoja, joita voi käyttää bash -komentosarjan, kuten curl, ulkopuolella. Toisin kuin toiminnot, ulkoisia komentoja ei tallenneta muuttujiksi.

Mitä pienempi komentolajin etusija on, sitä myöhemmin komento voidaan tulkita. Ulkoisilla komennoilla on alhaisin etusija bashissa. Tämä tarkoittaa ennen ulkoisen komennon suorittamista, tulkki bash, etsii toimintoja, sitten sisäänrakennettuja ja yrittää lopulta tarkistaa, onko komento olemassa ulkoisesti. Jos ei, sinun pitäisi nähdä seuraava virhe.

bash: tuntematon-command:komentoei löydetty

Bash -skriptissä toiminnot voivat ohittaa ulkoisen komennon, jos he jakavat saman nimen, kuten olemme nähneet aiemmin curl bash -esimerkeissä. Seuraavassa on esimerkki mukautetusta ulkoisesta komennosta, joka käyttää toimintoa.

kiemura() {
komento $ {FUNCNAME}...
}

Tämä toimii, koska toiminnot ovat etusijalla kuin ulkoiset komennot ja jopa bash -rakenteet. Rajoitus on toiminnon nimen sallitut merkit.

Huomaa, että yllä oleva esimerkki voidaan suorittaa käyttämällä aliaksia seuraavasti.

alias kiemura= '
{
kihara ...
}
''

Aliasten tapauksessa komennon tyyppi voi vaihdella suoritettavan kontekstin mukaan, kun taas funktiomenetelmää käyttävissä mukautetuissa ulkoisissa komennoissa tulopiste on aina funktio.

Toiminnot

Toiminnot hallitsevat bashissa. Ennen kuin tarkastellaan sisäänrakennettuja ja ulkoisia komentoja, bash tarkistaa, onko funktioehdokkaan määrittämä funktio, ensimmäinen sana rivillä vai sen jälkeen; merkki, joka osoittaa komentorivin lopun. Ainoa poikkeus ovat bash-muuttujat, jotka on kirjoitettu isoilla kirjaimilla, kuten $ {FUNCNAME}.

alias() { FUNCNAME= asdf;heitti pois $ {@ ,,};}
alias kiemura='TEST CURL ALIAS' #?

Yksinkertaiset komennot

Yksinkertaiset komennot määritellään bash -man -sivuilla sanana, jota seuraa valinnaiset argumentit. Yksinkertainen komento voi kontekstissa olla joko sisäänrakennettu, ulkoinen komento tai toiminto.

Kuinka suorittaa komentoja bash -komentosarjasta

Nyt kun tiedämme, minkä tyyppisiä komentoja on saatavilla, voimme laajentaa niiden käyttöä skripteissäsi. Ensinnäkin meidän on tiedettävä, miten komentojärjestys toimii bashissa.

Tässä on joitain tapoja hallita bash -komentosarjan etusijaa.

Anna bash päättää

komento_nimi

Suurimmaksi osaksi, etenkin alussa, annamme vain bashin päättää, mitä komentoa käytetään. On kuitenkin tapauksia, joissa bash ei voi tulkita tarkoitustasi oikein. Näin on silloin, kun toimintojen nimet ja ulkoiset komennot tai sisäänrakennetut ovat päällekkäisiä.

Suorita ulkoinen komento

komentokomento_nimi

Oletetaan, että interaktiivisessa tilassa on käytettävissä ulkoinen komento command_name ja haluat käyttää sitä bash -komentosarjassa. Voimme nimenomaisesti kertoa bashille, että command_name on ulkoinen komento käyttämällä sisäänrakennettua komentoa.

Esimerkkejä ulkoisista komennoista

Esimerkkejä ulkoisista komennoista olettaen, että seuraavat on asennettu:

tiedosto
mennä
viikuna
Esimerkki: Hae tiedostotyyppi ja tiedot
{ # hae tiedostotyyppi ja tiedot
tiedosto $ {infile} # (1,2)
}
# (1) komento, tiedosto
# (2) infile = {Polku tiedostoon}
Esimerkki: Vaihe muokattu ja uudet tiedostot gitissä
{ # vaiheen tiedostoa gitissä
git lisää.# (1)
}
# (1) komento, git
Esimerkki: Luo ascii -taidetta viikunan avulla
{ # luoda ascii -taidetta
viikuna$ {message} # (1,2)
}
# (1) -komento, viipale
# (2) message = {Viesti näytettäväksi ascii artina}

Suorita sisäänrakennettu komento

sisäänrakennettukomento_nimi

Oletetaan, että komento_nimi on yksi komennoista, jotka on määritetty sisäänrakennetuksi bashissa. Ilmoittaaksemme bashille, että haluamme suorittaa komennon_nimi sisäänrakennettuina, käytämme sisäänrakennettua.

Esimerkkejä sisäänrakennetuista komennoista
Esimerkki: Kuinka monta sisäänrakennettua?
sisäänrakennettu{,}{,,}{,,,} # kuinka monta sisäänrakennettua?
Esimerkki: Phantom julistaa
{
julistaa() { heitti poisOho!;}
julistaa- xfjulistaa #?
}

Johtopäätös

Komennon suorittaminen bash -komentosarjan sisällä on melko helppoa. Pääkäyttötyyppejä on kolme. Tietäen kuinka yksinkertaiset komennot tulkitaan bashissa voi parantaa hallintaa siitä, minkä tyyppinen komento suoritetaan ajon aikana.