23Aug
Termi "shell scripting" mainitaan usein Linux-foorumeilla, mutta monet käyttäjät eivät tunne sitä.Tämän helppokäyttöisen ja tehokkaan ohjelmointimenetelmän avulla voit säästää aikaa, oppia komentorivin paremmin ja lopettaa tylsät tiedostonhallintatehtävät.
Mikä Shellin komentosarjat ovat?
Koska Linux-käyttäjä tarkoittaa, pelaat noin komentorivillä.Kuten tai ei, on vain joitakin asioita, jotka tehdään helpommin tämän käyttöliittymän kautta kuin osoittamalla ja napsauttamalla. Mitä enemmän käytät ja opi komentorivillä, sitä enemmän näet sen potentiaalin. No, itse komentorivi on ohjelma: kuori. Useimmat Linux-distrojat käyttävät nykyään Bashia, ja juuri sinä todella syötät komentoja.
Jotkut teistä, jotka käyttävät Windowsia ennen Linuxin käyttöä, voivat muistaa erätiedostoja. Nämä olivat pieniä tekstitiedostoja, jotka voisit täyttää suoritettavia komentoja ja Windows käyttää niitä vuorostaan. Se oli älykäs ja siisti tapa saada joitakin asioita, kuten ajaa pelejä korkeakoulu tietokone lab, kun et voi avata järjestelmän kansioita tai luoda pikakuvakkeita. Erätiedostot Windowsissa, vaikka ne ovat hyödyllisiä, ovat kuori komentosarjoja.
Shell-komentosarjat mahdollistavat komentojen käsittelemisen ketjuissa ja järjestelmän suorittamisen komentosarjatapahtumana, kuten erätiedostoja. Ne mahdollistavat myös paljon hyödyllisemmän toiminnon, kuten komennon korvaamisen. Voit nimetä komennon, kuten päivämäärän, ja käyttää sen tuotos osana tiedostojen nimeämissuunnitelmaa. Voit automatisoida varmuuskopiot ja jokainen kopioitu tiedosto voi olla nykyinen päivämäärä, joka on liitetty sen nimen loppuun. Komentosarjat eivät ole pelkästään komentoja. Ne ovat ohjelmia omin päin. Komentosarjan avulla voit käyttää ohjelmointitoimintoja - kuten "for" -silmukoita, jos /then/ muut lausuntoja ja niin edelleen - suoraan käyttöjärjestelmän rajapinnassa. Sinun ei tarvitse oppia toista kieltä, koska käytät jo tiedätte: komentorivi.
Tämä on todellakin käsikirjoituksen voima, luulen. Voit ohjelmoida jo tiedät komennot, kun opit tärkeimpien ohjelmointikielten niittejä.Tarvitseeko tehdä jotain toistuvaa ja tylsiä?Script it! Tarvitsetko pikakuvakkeen todella sekava komento? Script it! Haluatko rakentaa todella helppokäyttöisen komentorivin käyttöliittymän jotain? Script it!
Ennen kuin aloitat
Ennen kuin aloitamme komentosarja-sarjan, katetaan muutamia perustietoja. Käytämme bash-kuorta, jota useimmat Linux-jakelut käyttävät natively. Bash on käytettävissä Mac OS -käyttäjille ja Cygwin Windowsille. Koska se on niin yleismaailmallista, sinun pitäisi pystyä käsikirjoituksesta riippumatta alustastasi. Lisäksi, niin kauan kuin kaikki viitatut komennot ovat olemassa, komentosarjat voivat toimia useilla alustoilla, joissa on vain vähän tai ei lainkaan säätämistä.
-komentosarjat voivat helposti käyttää "pääkäyttäjän" tai "ylivaraajan" oikeuksia, joten on parasta testata komentosarjoja ennen kuin laitat ne käyttöön. Käytä myös tervettä järkeä, kuten varmistamalla, että sinulla on varmuuskopioita tiedostoista, joista aiot suorittaa komentosarjan. On myös erittäin tärkeää käyttää oikeita vaihtoehtoja, kuten -i rm-komennolle, jotta vuorovaikutus on välttämätöntä.Tämä voi estää joitain ikäviä virheitä.Sellaisena voit lukea skriptejä, jotka lataat ja ole varovainen tietojen mukana, vain siinä tapauksessa, että asiat menevät väärin.
Skriptejä ovat ydinään vain pelkkää tekstitiedostoa. Voit käyttää mitä tahansa tekstieditoria kirjoittamaan ne: gedit, emacs, vim, nano. .. Tämä luettelo jatkuu. Muista vain tallentaa se tavallisena tekstinä, ei rikkaana tekstinä tai Word-asiakirjana. Koska rakastan helppokäyttöisyyttä, jota nano tarjoaa, käytän sitä.
-komentosarjan käyttöoikeudet ja -nimet
-komentosarjat suoritetaan ohjelmien tapaan, ja jotta ne tapahtuvat, niillä on oltava oikeat käyttöoikeudet. Voit tehdä skriptit suoritettaviksi suorittamalla seuraavan komennon:
chmod + x ~ /somecrazyfolder/-komentosarja 1
Tämä mahdollistaa kenen tahansa suorittavan kyseisen komentosarjan. Jos haluat rajoittaa sen käyttöä vain käyttäjälle, voit käyttää sitä sen sijaan:
chmod u + x ~ /somecrazyfolder/-komentosarja 1
Jotta voit suorittaa tämän komentosarjan, sinun on syötettävä cd oikeaan hakemistoon ja suorita sitten tämä kirjoitus:
cd ~ / somecrazyfolder
. /script1
Voit tehdä asioista helpompaa voit sijoittaa komentosarjat kotihakemistoosi "bin" -kansioon:
~ / bin
Monissa moderneissa tosissa tätä kansiota ei enää luoda oletuksena, mutta voit luoda sen. Tämä on yleensä silloin, kun tallennetaan suoritettavat tiedostot, jotka kuuluvat käyttäjänne eikä muille käyttäjille. Sijoittamalla komentosarjoja täällä, voit vain käyttää niitä kirjoittamalla heidän nimensä aivan kuten muut komennot sen sijaan, että tarvitsisit cd-levyn ympärille ja käytät './' -otsiketta.
Ennen kuin nimeät käsikirjoituksen, sinun on kuitenkin seuraavan komennon avulla tarkistettava, onko sinulla ohjelmalla, joka käyttää tätä nimeä:
joka [komento]
Monet ihmiset nimittävät aikaisemmat komentosarjat "testi" ja kun he yrittävätsuorita komentorivillä, mitään ei tapahdu. Tämä johtuu siitä, että se on ristiriidassa testikomennon kanssa, joka ei tee mitään ilman argumentteja. Varmista aina, että käsikirjoituksesi nimet eivät ole ristiriidassa komennoilla, muuten saatat löytää itsesi tekemällä asioita, joita et aio tehdä!
Scripting Guidelines
Kuten aiemmin mainitsin, jokainen komentotiedosto on lähinnä selkeä teksti. Tämä ei tarkoita sitä, että voit kirjoittaa mitä haluatte kaikki tahtomatta. Kun tekstitiedostoa yritetään suorittaa, kuoret käsittelevät niitä selville siitä, ovatko ne komentosarjoja vai eivät, ja miten käsitellä kaikkea oikein. Tämän takia on muutamia ohjeita, jotka sinun on tiedettävä.
- Jokaisen komentosarjan pitäisi olla "#!/bin/ bash "
- Jokainen uusi rivi on uusi komento
- Kommentointirivit alkavat #
- : llä Komentoja ympäröi()
Hash-Bang Hack
Kun kuori parsittaa tekstitiedoston kautta, suorin tapa tunnistaa tiedosto nimelläskripti on tekemällä ensimmäinen rivi:
#!/bin/ bash
Jos käytät toista kuorta, vaihda sen polku tähän. Komentorivit alkavat hashilla( #), mutta lisäävät bang( !) Ja shell-polun sen jälkeen, kun se on eräänlainen hakkerointi, joka ohittaa tämän kommentointisäännön ja pakottaa komentosarjan suoritettavaksi tämän rivin osoittavan kuoren kanssa.
Uusi rivi = Uusi komento
Jokaista uutta riviä pitää pitää uusi komento tai suuremman järjestelmän osa. Jos esimerkiksi /then/-lausekkeet käsittelevät useita rivejä, mutta jokaisen järjestelmän osa on uudessa rivissä.Älä anna komennon päästää seuraavaan riviin, koska tämä voi katkaista edellisen komennon ja antaa sinulle seuraavan rivin virheen. Jos tekstieditori tekee tämän, sinun kannattaa poistaa tekstipakkaus käytöstä turvallisella puolella. Voit poistaa tekstin käärinnän nanobittiä painamalla ALT + L-näppäintä.
Kommentti Usein #s
Jos aloitat rivin #, riviä ei oteta huomioon. Tämä muuttaa sen komentoriviksi, jossa voit muistuttaa itseäsi siitä, mitä edellisen komennon tuotos oli, tai mitä seuraava komento tekee. Jälleen sammuta tekstin kääriminen tai rikkoa kommentit useisiin viivoihin, jotka kaikki alkavat hashilla. Useiden kommenttien käyttäminen on hyvä käytäntö pitää, sillä se antaa sinulle ja muille ihmisille nopeammin komentojasi. Ainoa poikkeus on edellä mainittu Hash-Bang-hakata, joten älä seuraa #s with! S.;-)
Komennot ympäröidään parenteraaleilla
Vanhemmissa päivinä komento-korvaukset tehtiin yhdellä painikkeella( `, jakaa ~ -näppäin).Emme aio koskettaa tätä vielä, mutta kun useimmat ihmiset poistuvat ja tutkivat perusasiat oppimisen jälkeen, on luultavasti hyvä mainita, että käytät sulkeja sen sijaan. Tämä johtuu pääasiassa siitä, että kun peset - laitat komentoja muihin komentoihin - sulkeet toimivat paremmin.
Ensimmäinen komentosarja
Aloitetaan yksinkertaisella komentosarjalla, jonka avulla voit kopioida tiedostoja ja lisätä päivämäärät tiedostonimen loppuun. Let's call it "datecp".Tarkista ensin, onko kyseinen nimi ristiriidassa jotain:
Näet, että komentoa ei ole, joten olemme kaikki käyttäneet tätä nimeä.
Luo tyhjän tiedoston ~ / bin-kansioon:
touch ~ /bin/ datecp
Ja vaihdetaan nyt lupa, ennen kuin unohdamme:
Aloitetaan sitten käsikirjoituksen rakentaminen. Avaa kyseinen tiedosto valintasi tekstieditorissa. Kuten sanoin, pidän nano-yksinkertaisuudesta.
nano ~ /bin/ datecp
Ja mennään eteenpäin ja asetetaan vaatimus ensimmäinen rivi ja kommentti siitä, mitä tämä skripti tekee.
Seuraavaksi ilmoitetaan muuttuja. Jos olet koskaan ottanut algebralle, luultavasti tiedät mitä se on. Muuttujan avulla voimme tallentaa tietoja ja tehdä asioita sen kanssa. Muuttujat voivat laajentaa viittausta muualle. Eli niiden näyttämisen sijasta ne näyttävät tallennetut sisällöt. Voit myöhemmin kertoa, että sama muuttuja tallentaa eri tietoja, ja kaikki sen jälkeen tapahtuvat ohjeet käyttävät uutta tietoa. Se on todella hieno paikkamerkki.
Mitä asetamme muuttujaan? No, tallennetaan päivämäärä ja kellonaika! Tätä varten kutsumme päivämääräkomennon.
Tarkastele alla olevaa kuvakaappausta päivämäärän komennon tuottamiseen:
Voit nähdä, että lisäämällä eri muuttujia, jotka alkavat%: lla, voit muuttaa komenton tuottoa haluamaasi kohtaan. Lisätietoja on päivämääräkomennon manuaalisessa sivussa.
Käytetään päivämäärän komennon viimeistä iterointia, "date +% m_% d_% y-% H.% M.% S", ja käytä sitä komentosarjassamme.
Jos aiomme tallentaa tämän käsikirjoituksen juuri nyt, voimme käyttää sitä ja antaa meille päivämääräkomennon tuotoksen, kuten odotimme:
Mutta teemme jotain erilaista. Anna muuttujan nimi, kuten date_formatted tähän komentoon. Oikea syntaksi on seuraava:
muuttuja = $( komento -option argumentit)
Ja meille rakennamme näin:
date_formatted = $( päivämäärä +% m_% d_% y-% H.%M.% S)
Tätä kutsumme komennon korvaamiseksi. Olemme lähinnä kerrottu, että aina, kun muuttuja "date_formatted" ilmestyy, suoritetaan komentojen sisällä sulkeissa. Tällöin näytetään minkä tahansa komennon antamat tuotokset muuttujan nimen sijasta, "date_formatted".
Tässä on esimerkkikirjoitus ja sen lähtö:
Huomaa, että lähdössä on kaksi tilaa. Echo-komennon lainausmerkit ja muuttujan edessä oleva tila ovat molemmat näkyvissä.Älä käytä välilyöntejä, jos et halua niiden tulevan näkyviin. Huomaa myös, että ilman tätä lisättyä "echo" -viivaa, komentosarja ei antaisi mitään tuottoa.
Palataan käsikirjallamme. Seuraavaksi lisäämme komennon kopiointiosaan.
cp -iv $ 1 $ 2. $ date_formatted
Tämä kutsuu kopio komennon -i ja -v vaihtoehdoilla. Ensin kysytään tarkistusta ennen tiedostojen päällekirjoittamista, ja jälkimmäinen näyttää sen, mitä komentorivillä on alas.
Seuraavaksi näet, että olen lisännyt $ 1 -vaihtoehdon. Kun kirjoitat komentosarjaa, dollarin merkki( $) ja numero seuraa kyseisen scriptin numeroitua argumenttia, kun sitä kutsuttiin. Esimerkiksi seuraavassa komennossa:
cp -iv Trogdor2.mp3 ringtone.mp3
Ensimmäinen argumentti on "Trogdor2.mp3" ja toinen argumentti on "ringtone.mp3".
Kun tarkastelemme käsikirjoitustasi, voimme nähdä, että viittaamme kahteen argumenttiin:
Tämä tarkoittaa, että kun suoritamme komentosarjan, meidän on annettava kaksi argumenttia, jotta komentosarja toimisi oikein. Ensimmäinen argumentti, $ 1, on tiedosto, joka kopioidaan ja korvataan nimellä "cp -iv" -komennon ensimmäinen argumentti.
Toinen argumentti, $ 2, toimii saman komennon tulostustiedostona. Mutta voit myös nähdä, että se on erilainen. Olemme lisänneet ajanjakson ja olemme viitanneet "date_formatted" -muuttujasta yllä.Kiinnostaako tämä, mitä tämä tekee?
Seuraavassa on, mitä tapahtuu, kun komentosarjaa ajetaan:
Näet, että tulostustiedosto on lueteltu mitä tahansa, jonka annoin $ 2, jonka jälkeen jaksot, sitten päivämääräkomennon tuotos! Onko järkevää, eikö?
Kun suoritan datecp-komennon, se suorittaa tämän komentosarjan ja antaa minun kopioida minkä tahansa tiedoston uuteen paikkaan ja lisätä automaattisesti päivämäärän ja kellonajan tiedostonimen lopettamiseen. Hyödyllistä arkistointia varten!
Shell-komentosarjat ovat keskeisessä asemassa, jotta käyttöjärjestelmäsi toimisi sinulle. Sinun ei tarvitse oppia uutta ohjelmointikieltä sen tekemiseksi. Kokeile kirjoittaa joitain peruskomentoja kotona ja alkaa miettiä, mitä voit käyttää tätä varten.
Te kirjoitatko? Onko neuvoja aloittelijoille? Jaa ajatuksesi kommentteihin! Tähän sarjaan tulee enemmän!