- Bashin valikot rakennetaan yhdistämällä rakenteita, kuten read, case ja select, jolloin voit valita toimintoja muistamatta niitä. komennot monimutkainen.
- Koodin järjestäminen itsenäisiksi funktioiksi (create, validate, delete, list) helpottaa skriptien ylläpitoa ja laajentamista interaktiivisten valikoiden avulla.
- Työkalut, kuten valintaikkuna, lisäävät edistyneitä tekstiliittymiä laatikoilla ja kursorinavigaatiolla, mikä sopii erinomaisesti visuaalisempiin valikoihin terminaali.
- Cron-integraatio ja hyvät virheenkorjauskäytännöt tekevät näistä valikoista vankkoja ratkaisuja tehtävien automatisointiin ja hallintaan Linuxissa.
Jos työskentelet GNU/Linuxin kanssa päivittäin, ennemmin tai myöhemmin mietit, miten automatisoida toistuvia tehtäviä menettämättä hallintaa toteutuksesta. Siinä kohtaa Bash-skriptit, joissa on asetusvalikot: pieniä ohjelmia terminaalissa, jotka kysyvät, mitä haluat tehdä, ja toimivat sen mukaisesti.
Näiden valikoiden luominen ei ole pelkästään konsoliguruille varattu juttu, vaan se on varsin helppoa. Muutamalla Bash-perusrakenteella—valita, tapaus, luettusilmukoita ja joitakin lisäominaisuuksia, kuten graafisten valikoiden valintaikkuna— voit liittää mitä tahansa yksinkertaisesta numeerisesta valitsimesta interaktiiviset tekstirajapinnat kursorin nuolilla, ponnahdusikkunoilla ja tietojen validoinneilla.
Peruskäsitteet: mikä on Bash-skripti, jossa on asetusvalikko
Un käsikirjoitus Bash ei ole mitään muuta kuin tekstitiedosto komentoineen jotka tulkki suorittaa peräkkäin. Valikon lisäämisen etuna on, että sen sijaan, että käyttäjä käynnistäisi aina saman sekvenssin, hän voi valitse suoritettava toiminto milloin tahansa kirjoittamalla numeron, siirtymällä nuolilla tai valitsemalla tietyn merkinnän.
Tässä yhteydessä Bashin vaihtoehtovalikko voi olla useissa muodoissa: klassisesta numeroidusta luettelosta lue + tapaus...jopa koko näytön valintaikkunoita apuohjelmalla Vuoropuhelu, käymällä läpi avainsanan tarjoamia automaattisia valikoita select integroitu itse Bashiin.
Tämän tyyppisiä skriptejä käytetään esimerkiksi hallita käyttäjiä yksinkertaisesta sovelluksesta voit käynnistää eri kansioiden varmuuskopioita, näyttää järjestelmän apuohjelmia (prosessit, kalenteri, isäntänimi) tai kapseloida useita hallinnollisia tehtäviä yhden alle yhtenäinen ja käyttäjäystävällinen käyttöliittymä konsolissa.
Kätevyyden lisäksi nämä valikot ovat hyödyllisiä, koska ne mahdollistavat komentorivin käytöstä vähemmän kokeneiden ihmisten... suorittaa monimutkaisia toimintoja muistamatta reittejä, vaihtoehtoja tai parametreja, mikä vähentää virheitä ja säästää aikaa.
Yksinkertaiset valikot, joissa on luku- ja kirjainkokotoiminto: suorin lähestymistapa
Suorin tapa rakentaa valikko Bashissa on näytä numeroitu luettelo vaihtoehtoja, lue näppäin tai numero read ja käyttäjän syöttämien tietojen perusteella suorittaa yhden tai toisen koodilohkon käyttämällä rakennetta case ... esac.
Kuvittele, että sinulla on varmuuskopioskripti, joka pakkaa neljä eri kansiota 7zIlman valikkoa skripti yksinkertaisesti suorittaisi kaikki komennot kerralla, jolloin syntyisi neljä tiedostoa varmuuskopio joka kerta, kun suoritat sen, vaikka haluaisit päivittää vain toisen niistä.
Ratkaisu on ryhmitellä nuo komennot yhdeksi skriptiksi ja lisätä siihen pieni valikko. valitse käynnistettävä varmuuskopioYleensä käytetty perusmalli on:
1) Määritä tarvittavat muuttujat, kuten nykyinen päivämäärä, varmuuskopiotiedostojen nimeämiseksi.
2) Näytä vaihtoehdot useilla echoEsimerkiksi yksi otsikkorivi ja neljä riviä kutakin tehtävää kohden: väliaikainen kansio, Dropbox, Dokumentit ja Android Studio.
3) Lue valittu vaihtoehto näppäimistöltä käyttämällä read tallentaaksesi yhden merkin tai numeron, joka sitten tallennetaan muuttujaan (esimerkiksi n).
4) Käyttää lausetta case $n in ... esac päättää, mikä komento suoritetaan arvon perusteella: jokainen haara case sisältää tilauksen 7z vastaavat valittua kansiota, ja myös jokerimerkki on määritelty *) vangita virheelliset vaihtoehdot ja ilmoittaa käyttäjälle.
Käytännön esimerkki: varmuuskopiovalikko Bashissa
Hyvin tyypillinen tapaus koti- tai pientoimistoympäristöissä on skripti, joka käynnistyy manuaaliset varmuuskopiot ulkoiseen asemaan. Sen sijaan, että ylläpitäisimme neljää erillistä skriptiä tai ajaisimme aina kaikkia varmuuskopioita, voimme keskittää logiikan yhteen interaktiiviseen valikkoon.
Esimerkkiskriptin runko alkaa yleensä shebang-rivillä #!/bin/bash, jota seuraa päivämäärän asetus:
DATE se saadaan date +"%Y-%m-%d"jotta kaikki luodut tiedostot tunnistetaan päivän mukaan, mikä on erittäin käytännöllistä historiallisten kopioiden keräämiseksi.
Käyttäjälle näytetään sitten tällainen lohko (kirjoitettu tähän havainnollistamistarkoituksessa): yksi rivi tekstillä ja neljä seuraavaa riviä, jotka on numeroitu 1–4 ja joista jokainen kuvaa yhtä kansiota: tmp, dropbox, documents y androidNuo kuvaukset auttavat tekemään siitä On selvää, mitä tuetaan joka tapauksessa.
Yksinkertaisella read n Valinta on tallennettu. Siitä eteenpäin case $n in voit liittää jokaisen numeron tiettyyn komentoon 7z joka pakkaa ulkoisen aseman kansion. Käyttämällä kiinteää pakkausta -mx9 ja salasana, jossa on -pContraseña Se lisää turvallisuutta ja tehokkuutta, ja nimeämiskäytäntöön kuuluu päivämäärä ja kansion pääte (esimerkiksi $FECHA-tmp.7z) auttaa löytämään helposti jokaisen tiedoston.
Tämän lähestymistavan suuri etu on, että käyttäjä voi ilman logiikan päällekkäisyyttä tai useiden tiedostojen ylläpitoa suorita vain sinua kiinnostava tehtäväJa jos jonain päivänä haluamme lisätä uuden varmuuskopiokansion, meidän tarvitsee vain lisätä uusi vaihtoehto valikkoon ja sen haara case.
Edistyneet valikot valinnalla: Bashin omien ominaisuuksien hyödyntäminen
Bash sisältää erittäin kätevän avainsanan numeroitujen valikoiden automaattiseen luomiseen: valitaSen avulla sinun ei tarvitse kirjoittaa kaikkea käsin. echo näyttääksesi asetukset tai hallitaksesi indeksinumeroita; tulkki itse käsittelee sen Tulosta ruokalista ja tallenna valintasi..
Valikon tyypillinen rakenne, jossa on select Se on jotakuinkin tällaista: määritellään taulukko eri vaihtoehdoilla, asetetaan erityinen muuttuja PS3 kehotteella (esimerkiksi «») ja sitten avataan silmukka select opt in "1" "2" "3" "Quit"; do ... done.
Sisällä do ... done a:ta käytetään uudelleen tapaus $opt-in linkittääksesi jokaisen taulukon arvon tiettyyn toimintoon. Varmuuskopiointiesimerkissä merkinnät "1", "2" ja "3" vastaavat kutakin kansio- tai varmuuskopiojoukkoa, jonka haluamme suorittaa, ja lisävaihtoehto, kuten "Lopeta", mahdollistaa poistu valikosta yksinkertaisella break.
Suuri ero verrattuna lähestymistapaan, jossa read on se select Se tulostaa automaattisesti luettelon numeroiduista vaihtoehdoista, ja käyttäjän tarvitsee vain kirjoittaa vaihtoehdon numero. Lisäksi Bash hallitsee muuttujaa REPLY syötetyllä arvolla, mikä helpottaa validointia monimutkaisemmissa tapauksissa.
Hieman monimutkaisemmissa valikoissa, select Tämä on erityisen hyödyllistä, koska se vähentää toistuvan koodin määrää ja tekee skriptistä tehokkaamman. luettavampi ja helpommin ylläpidettävävarsinkin kun vaihtoehtojen lista kasvaa aika.
Rakenteisten valikoiden luominen: esimerkki käyttäjähallinnasta funktioiden avulla
Kun valikko ohjaa herkempiä tehtäviä, kuten käyttäjätilien hallinta Sisäisessä sovelluksessa on suositeltavaa järjestää skripti selkeästi erillisiin funktioihin. Yksi klassinen esimerkki määrittelee ainakin neljä funktiota: solicitar_usuario(), validar_usuario(), crear_usuario() y eliminar_usuario(), valikon näyttävän pääsilmukan lisäksi.
Toiminto request_user() Se käsittelee vuorovaikutteisesti käyttäjän tilin nimen ja salasanan pyytämisen kaksoisvahvistuksella. Sisäisesti se kerää valinnaisen viestin, joka annetaan parametrina ja näyttää eri tekstiä kontekstista riippuen (ensimmäinen rekisteröinti, käyttäjän kaksoissyöte, salasanan korjaus jne.).
Samassa funktiossa sitä käytetään read -p pyytää käyttäjätunnusta ja read -sp Salasanan syöte piilotetaan päätelaitteessa. Tämän jälkeen käyttäjää pyydetään toistamaan salasana toisessa muuttujassa, ja näkyviin tulee rivinvaihto, jossa on echo "" jotta kehote ei juutuisi edelliseen tekstiin.
Toinen keskeinen osa on validate_user()joka tarkistaa, onko annettu nimi jo olemassa. Se perustuu tyypillisesti tekstitiedostoon (esimerkiksi accesos/cuentasjossa yksi tili on listattu riviä kohden. grep Tunnistetta etsitään ja määritetään ohjausmuuttuja, kuten validacion, arvoon 0 tai 1 riippuen siitä, onko osumaa löytynyt.
Tämä funktio palauttaa tuloksensa käyttämällä return, mikä mahdollistaa sen käytön tyypin olosuhteissa while validar_usuario "$usuario"; do ... done. Tällä tavalla luo_käyttäjä() voi vedota solicitar_usuario niin monta kertaa kuin on tarpeen, kunnes nimi on uusi ja salasanat täsmäävät.
sisällä luo_käyttäjä()Tiedonkeruun jälkeen muodostetaan kaksi silmukkaa: toinen toistuu niin kauan kuin tili on jo tiedostossa, jolloin näytetään viesti, kuten "Valittu käyttäjä on jo olemassa…", ja toinen toistuu, jos salasana ei vastaa vahvistusta, jolloin käyttäjän on täytettävä molemmat kentät uudelleen. Kun vahvistukset on suoritettu, funktio lisää käyttäjätunnuksen tiedostoon. accesos/cuentas kanssa echo "$usuario" >> accesos/cuentas ja vahvistaa näytöllä tekstillä, kuten "käyttäjän luoma".
Toiminto poista_käyttäjä() Se noudattaa samanlaista filosofiaa, mutta keskittyy tilin poistamiseen. Ensin se pyytää nimen poistamista read -pja käytä sitten silmukkaa yhdessä validar_usuario varmistaakseen, että tili todella on olemassa. Jos käyttäjää ei löydy, näkyviin tulee viesti "Käyttäjää ei löydy" ja funktiosta poistutaan. return 1.
Kun tili on voimassa, poisto suoritetaan yleisellä tempulla: se suoritetaan grep -Ev "$usuario" accesos/cuentas > accesos/cuentas_tmp luodaksesi väliaikaisen tiedoston ilman vastaavaa riviä ja nimeäksesi sen sitten uudelleen mv accesos/cuentas_tmp accesos/cuentasLopuksi toiminnosta ilmoitetaan viestillä, kuten "käyttäjä poistettu".
Skriptin pääsilmukka: hallintavalikon rakentaminen
Kun aputoiminnot on määritelty, Ääretön silmukka joka toimii päävalikkona. Se kirjoitetaan yleensä muodossa while true; do ... donejotta skripti ei pääty yhden toiminnon suorittamisen jälkeen, vaan palaa vaihtoehtojen luetteloon, kunnes käyttäjä päättää poistua.
Silmukan sisällä kutsu osoitteeseen clear Puhdista näyttö saadaksesi siistimmän ympäristön. Tulosta sitten echo valikon otsikko (esimerkiksi "Käyttäjähallinta") ja erilaiset numeroidut vaihtoehdot: luo käyttäjä, poista käyttäjä, listaa käyttäjät ja poistu.
Vaihtoehto valitaan käyttämällä read -sn1 opcionTämä lukee yhden merkin ilman kaikua (tai minimaalisella kaiulla) ja tallentaa sen vastaavaan muuttujaan. Tämä mahdollistaa käyttäjän yksinkertaisesti painaa näppäintä 1–4 ilman, että joissakin tapauksissa tarvitsee vahvistaa Enterillä, riippuen siitä, miten näppäinyhdistelmä on käytetty.
Seuraavaksi, a echo "" siirtyäksesi seuraavalle riville ja syöttääksesi tapauslohko joka käsittelee jokaisen vaihtoehdon. Haara "1" kutsuu crear_usuario, "2" kutsuu eliminar_usuario, "3" käyttää cat accesos/cuentas näyttääksesi kaikille käyttäjille ja sitten read -n1 -p "" tai vastaava tauko ennen valikkoon palaamista, ja "4" suorittaa exit 0 poistuaksesi skriptistä.
Jälkeen esacYleensä on lyhyt tauko, esim. read -n1 -p "Presione cualquier tecla"Tämä estää näytön päivittymisen liian nopeasti, jos toiminto päättyy ilman näkyvää vuorovaikutusta (esimerkiksi käyttäjän luomisen jälkeen). Tämä tehostaa työnkulkua. mukava ja intuitiivinen näppäimistön ääressä olevalle henkilölle.
Tämä silmukka + valikko + tapaus -malli on laajennettavissa lähes mihin tahansa tehtävään: niin kauan kuin sinulla on hyvin määritelty joukko toimintoja, jotka haluat esittää käyttäjälle, voit pakata ne funktioiksi ja linkittää ne samankaltaisesta rakenteesta.
Käytä valintaa luodaksesi tyylikkäämpiä varmuuskopiovalikoita
Palatakseni varmuuskopioiden esimerkkiin, valikon viimeistellymmässä versiossa hyödynnetään avainsanaa valita manuaalisen yhdistämisen sijaan echo y readTässä tapauksessa ensimmäinen asia on korjata muuttuja PS3 viestillä, joka näkyy kehotteena, esimerkiksi: PS3="".
Sitten määritellään taulukko, kuten options=("1" "2" "3" "Quit")ja se on kirjoitettu select opt in "${options}"; do ... doneBash näyttää automaattisesti numeroidun valikon, jossa on nämä neljä merkintää, ja käyttäjä valitsee syöttämällä haluamaansa numeroa vastaavan numeron.
Kehon sisällä select a on toteutettu tapaus $opt-in vaihtoehtojen erottamiseksi toisistaan. Haarassa "1" suoritetaan 7z-komento väliaikaisen kansion varmuuskopiointia varten, haarassa "2" Dropbox-varmuuskopiointia varten, haarassa "3" Dokumentit-kansiota varten ja niin edelleen. Kun pääset "Lopeta"-vaihtoehtoon, käytä break lopettaaksesi valinnan ja siten lopettaaksesi valikon näyttämisen.
Kuten aiemminkin, haara on mukana. *) Jos käyttäjä syöttää odottamattomia merkintöjä, tulostuu viesti, kuten "Virheellinen vaihtoehto", jos arvo ei sovi luetteloon. Tämä lähestymistapa helpottaa ryhmittele useita huoltotehtäviä yhdellä skriptillä ilman, että tarvitsee muistaa yksittäisiä tiedostonimiä.
Vaikka käsitteellisesti se ei tee mitään sellaista, mitä sillä ei voisi tehdä read + case, select Se vähentää koodin visuaalista kohinaa ja hallitsee automaattisesti joitakin yksityiskohtia, mikä tekee siitä mielenkiintoisen vaihtoehdon, kun haluat pitää skriptin selkeänä ja ytimekkäänä.
Interaktiiviset valikot valintaikkunalla: terminaalin "laatikko"-tyyppiset käyttöliittymät
Jos haluat mennä askeleen pidemmälle, voit käyttää tekstirajapintatyökaluja, kuten VuoropuheluNäiden työkalujen avulla voit näyttää valikoita reunuksilla, otsikoilla, painikkeilla ja tekstimuotoisilla laatikoilla, samalla tavalla kuin vanhemmissa sovelluksissa, kuten ncursesissa. Ne ovat täydellisiä, kun etsit käyttäjäystävällistä kokemusta. visuaalisempi ja helpommin navigoitava näppäimistöllä.
Valintaikkunan avulla voit luoda navigoitavia valikoita kursorin nuolilla ja pikanäppäimet LinuxissaTyypillinen esimerkki on skripti, joka näyttää ruudun, jonka otsikko on esimerkiksi "Apuohjelmat" tai "PÄÄVALIKKO", luettelon vaihtoehdoista ("Prosessit", "Kalenteri", "Isäntä", "Poistu") ja ylimääräisen ohjepainikkeen. Käyttäjä voi navigoida nuolinäppäimillä, korostaa kirjaimia tai yksinkertaisesti painaa numeroita 1–9 valitakseen.
Tämän tyyppisen skriptin yleinen toimintatapa on seuraava: valitun vaihtoehdon tallentamiseksi määritellään väliaikainen tiedosto (esimerkiksi INPUT=/tmp/menu.sh.$$) ja toinen tekstiruutuihin näytettävien komentojen tulosteen tallentamiseksi (OUTPUT=/tmp/output.sh.$$), yllään muuttuja $$ erottaakseen jokaisen prosessin toisistaan.
Ohjeiden kautta trap Se on konfiguroitu siten, että vastaanotettaessa tiettyjä signaaleja, kuten SIGHUP SIGINT tai SIGTERMSkripti suorittaa puhdistusrutiinin, joka poistaa nämä väliaikaiset tiedostot ja sulkeutuu automaattisesti. Tämä estää jäännöstiedostojen jäämisen järjestelmään, jos käyttäjä keskeyttää skriptin Ctrl+C-näppäinyhdistelmällä tai jos prosessi päättyy äkillisesti.
Funktio, kuten näytäTulos() Se kiteyttää viestiruudun ja valintaikkunan näyttämisen logiikan. Se kerää parametreja, kuten ikkunan korkeuden, leveyden ja otsikon, ja kutsuu sitten funktiota. dialog --backtitle "Utilidades" --title "${titulo}" --clear --msgbox "$(cat $OUTPUT)" altura ancho (tai vastaava muunnelma) esittääkseen TULOSTA-sisällön puhtaassa laatikossa.
Muita erityisiä toimintoja, kuten näytäIsäntä() o näytäKalenteri()Ne tuottavat tiedot, jotka haluat visualisoida. Esimerkiksi muestraHost() ajot hostname ja ohjaa tuloksen osoitteeseen $OUTPUTja sitten soita muestraSalida 6 40 "Nombre del Host". Samalla tavalla, muestraCalendario() ajot cal ja näyttää pienen kuukausikalenterin laatikossa nimeltä "Kalenteri".
Pääsilmukassa dialog --menu Se vastaa varsinaisen asetusvalikon rakentamisesta. Parametrit, kuten taustan otsikko, on määritelty (--backtitle), laatikon otsikko (--title), kuvaileva teksti nuolien ja numeroiden käytöstä, mitat (korkeus, leveys, näkyvien elementtien enimmäismäärä) ja lopuksi "tunniste"-"kuvaus"-parit kullekin valikkovaihtoehdolle.
Käyttäjän valinta tallennetaan ohjaamalla valintaikkunan vakiotuloste syötetiedostoon (2>"${INPUT}"Sitten tiedosto luetaan jollain tavalla, kuten opcionesMenu=$(<"${INPUT}") ja tapausasetuksetValikko sisään vastaavan funktion käynnistämiseksi: näytä prosessit, näytä kalenteri, näytä isäntänimi tai poistu valikosta.
Kun silmukka päättyy (kun käyttäjä valitsee "Poistu"), skripti poistaa väliaikaiset tiedostot jos ne ovat edelleen olemassa, käyttämällä tarkistuksia, kuten && rm $OUTPUT ja sama $INPUTTällä tavoin järjestelmä puhdistetaan ja valmistellaan tulevia suorituksia varten.
Valikot, joissa on valinta ja valintaikkuna: valinta kursoreilla
Viesti-ikkunoiden valintaikkunoiden lisäksi on olemassa erittäin mielenkiintoinen integraatio: valikoiden luominen, jotka eivät ainoastaan hyväksy numeroita, vaan myös salli kohdistimen liikuttaminen eri vaihtoehtojen läpi, ikään kuin se olisi Midnight Commanderin kaltaisten sovellusten alasvetovalikko.
Apuohjelma Vuoropuhelu Se sisältää muun muassa tietyn tyyppisen valikkolaatikon: --menuTällaisella puhelulla respuesta=$(dialog --title "Ejemplo de menu" --stdout --menu "Opciones" 12 20 5 1 "Opción 1" 2 "Opción 2" 3 "Opción 3" 4 "Opción 4")Näytölle tulee otsikollinen laatikko, jossa on numeroitu luettelo; käyttäjä liikkuu nuolilla, valitsee merkinnän ja valintaikkuna palauttaa siihen liittyvän arvon (esimerkiksi "1", "2" jne.), joka tallennetaan muuttujaan respuesta.
Kiitos vaihtoehdosta --stdoutValinta kirjoitetaan standarditulosteeseen ja se voidaan tallentaa suoraan komennon korvaavalla komennolla, kuten yllä olevalla. Sieltä voit yksinkertaisesti käyttää case "$respuesta" in toimia valitun vaihtoehdon mukaisesti. Tämä muunnelma on erityisen hyödyllinen liitännät SSH tekstitilassa, jossa ei ole graafista käyttöliittymää, mutta halutaan mukava interaktiivinen kokemus.
Laajemmissa skenaarioissa on yleistä yhdistää dialogi Bash-funktioihin ja tarvittaessa muihin kieliin, kuten Python Monimutkaisempiin tehtäviin, esimerkiksi Telegram-bottien rakentamiseen, joissa asetusvalikko siirtyy itse chatissa, mutta valinta- ja hoitologiikka Se noudattaa hyvin samanlaista kaavaa kuin päätevalikot.
Bashin "puhdas" valintakomento kevyille valikoille
Vaikka olemme jo nähneet käytännön sovelluksia selectBashin tarjoamaa komennon perussyntaksia kannattaa tarkastella lähemmin, koska se on erittäin kevyt työkalu yksinkertaisten valikoiden rakentamiseen ilman ulkoisia riippuvuuksia.
Yleinen rakenne on: määritellään taulukko optioineen ja sitten kirjoitetaan se select opt in "${opciones}"; do ... doneJoka kerta, kun käyttäjä syöttää numeron, Bash asettaa vastaavan taulukon elementin muuttujalle. opt ja raakaöljyn mukanaan tuoma arvo $REPLY.
Tyypillisessä valikossa voi näkyä viesti, kuten "Valitse vaihtoehto:", ja joukko vaihtoehtoja: "Vaihtoehto 1", "Vaihtoehto 2", "Vaihtoehto 3" ja "Poistu". Silmukan sisällä on rakenne tapaus $opt-in Sen avulla voit määrittää vastaavan toiminnon jokaiselle näistä merkkijonoista: näyttää viestin, suorittaa funktion, kutsua toisen skriptin jne.
Valikon sulkemiseksi on asetettu, että kun käyttäjä valitsee "Poistu", break joka katkaisee silmukan selectLisäksi haaraa voidaan käyttää *) sieppaamaan virheelliset syötteet (esim. alueen ulkopuoliset numerot) ja näyttämään varoituksen, kuten "virheellinen vaihtoehto $REPLY".
Tämä valikkomuoto sopii erityisesti silloin, kun haluat jotain erittäin kannettava ja koristamatonSe ei vaadi Bashin lisäksi muita työkaluja, toimii yhtä hyvin graafisissa ympäristöissä kuin SSH:n yli ja on riittävän ilmaisuvoimainen kattamaan useimmat perusinteraktiiviset työnkulut.
Bash-ohjelmoinnin perustiedot, joita tarvitset valikoihisi
Jotta saisit kaiken irti kaikesta yllä olevasta, on hyödyllistä hallita perusasiat ohjelmointi Bashissa. Ensinnäkin, käyttö jittu (#!/bin/bash tai vastaava polku järjestelmässäsi) ja rivin lopun käsittely (CRLF vs. LF), jotka vaikuttavat siirrettävyyteen.
On myös tärkeää ymmärtää, suoritusoikeudetSkripti ei käynnisty suoraan, ennen kuin sille on määritetty suoritusbitti komennolla, kuten chmod u+x nombre_script.shSieltä voit soittaa hänelle ./nombre_script.sh tai bash nombre_script.shkuten haluat.
Syötteen ja tulosteen osalta komennot, kuten echo Ne tulostavat tekstimerkkijonoja tai muuttujien arvoja, read Se mahdollistaa käyttäjätietojen keräämisen ja uudelleenohjauksen > y >> Sen avulla voit kirjoittaa tai lisätä sisältöä tiedostoihin. Näiden uudelleenohjausten hallinnan oppiminen on avainasemassa, jos haluat valikkosi toimivan oikein. hallita määritystiedostojakäyttäjäluettelot tai lokit.
Bashin muuttujilla ei ole tarkkaa tyyppiä: ne voivat sisältää numeroita, tekstiä tai mitä tahansa merkkijonoja ilman, että tulkki tekee niiden välillä juurikaan eroa. Ne yksinkertaisesti deklaroidaan muodossa nombre=valorja niihin viitataan $nombreOn suositeltavaa noudattaa selkeä ja kuvaava nimeämistyyli, alkaen kirjaimella tai alaviivalla, välttäen välilyöntejä ja varattuja sanoja, kuten if, then o else.
Lopuksi, ohjausrakenteet, kuten if ... then ... fisilmukoita while y for ja lauseita case Ne ovat liima, joka pitää koossa koko valikoiden kulun: päätetään, mikä vaihtoehto on valittu, milloin kysymys toistetaan, miten kenttä vahvistetaan tai milloin skriptistä poistutaan.
Automatisoi komentosarjojen suorittaminen cronilla ja debuggaa ne, kun ne epäonnistuvat
Kun Bash-valikot toimivat vuorovaikutteisesti, saatat haluta automatisoi joitakin näistä tehtävistä Niiden suorittaminen automaattisesti, esimerkiksi yöllisen varmuuskopioinnin ajoittaminen tietyillä oletusasetuksilla. Tässä kohtaa [seuraava näyttää olevan erillinen, asiaan liittymätön osio:] cron, klassinen tehtävien ajoitus järjestelmissä, kuten unix.
Cron-merkinnän syntaksi noudattaa tätä kaavaa: minuto hora día mes día_semana comandoJotain sellaista 0 0 * * * /ruta/a/script.sh Se käynnistää skriptin joka päivä keskiyöllä, samalla kun */5 * * * * /ruta/a/script.sh Se kulkee viiden minuutin välein, ja 0 6 * * 1-5 Se ajetaan maanantaista perjantaihin klo 6.
Hallitaksesi ajoitettuja tehtäviäsi käytät crontab -l (listaa nykyiset työpaikat) ja crontab -e (muokkaus). Näissä skripteissä voit käyttää uudelleen valikoidesi funktioita ja logiikkaa, mutta tässä tapauksessa asetukset asetetaan komentoriviargumenteilla tai sisäisillä muuttujilla ilman käyttäjän toimia.
Tuolloin Bash-skriptien virheenkorjausOn olemassa useita keskeisiä tekniikoita: aktivoi set -x Skriptin alussa Bash tulostaa jokaisen suorittamansa komennon plusmerkin (+) edessä, jolloin voit seurata komentoa askel askeleelta. set -e Se aiheuttaa skriptin automaattisen päättymisen, jos jokin komento palauttaa muun lopetuskoodin kuin 0.
muuttuja $? Se sisältää aina viimeksi suoritetun komennon lopetuskoodin, joten voit käyttää sitä yhdessä ehtolauseiden kanssa virheiden havaitsemiseksi: if ; then echo "Hubo un error."; fiJa tietenkin myös virheenkorjausviestit kanssa echo Strategisiin pisteisiin lisättyinä ne auttavat hahmottamaan muuttujien sisällön ja todellisen suoritusvirran.
Kun automaatioon liittyy cron, järjestelmälokien tarkastelu on olennaista. Debianin tai Ubuntun kaltaisissa jakeluissa monet croniin liittyvät viestit päättyvät /var/log/syslogSieltä voit tarkistaa, onko työt käynnistetty, ovatko skriptit palauttaneet virheitä tai onko käyttöoikeuksissa ongelmia.
Kaikkien näiden osien ansiosta, yksinkertaisimmista valikoista lue ja tapaus jopa visuaalisesti houkuttelevimpien käyttöliittymien kanssa Vuoropuhelu, käytön kautta valitaHyvin jäsenneltyjen funktioiden, cron-automaation ja perusvirheenkorjaustekniikoiden avulla sinulla on valtava määrä mahdollisuuksia luoda Bash-skriptit, joissa on asetusvalikot jotka tekevät päivittäisestä työskentelystäsi terminaalissa paljon mukavampaa ja hallitumpaa, niin yleisten käyttäjätehtävien kuin pienten hallintapaneelienkin osalta palvelimilla ja henkilökohtaisilla tietokoneilla.
Intohimoinen kirjoittaja tavujen maailmasta ja tekniikasta yleensä. Rakastan jakaa tietämykseni kirjoittamalla, ja sen aion tehdä tässä blogissa, näyttää sinulle kaikki mielenkiintoisimmat asiat vempaimista, ohjelmistoista, laitteistoista, teknologisista trendeistä ja muusta. Tavoitteeni on auttaa sinua navigoimaan digitaalisessa maailmassa yksinkertaisella ja viihdyttävällä tavalla.
