Aloittelijan opas Shell-komentosarjoille: perusteet

Sisällysluettelo:

Aloittelijan opas Shell-komentosarjoille: perusteet
Aloittelijan opas Shell-komentosarjoille: perusteet

Video: Aloittelijan opas Shell-komentosarjoille: perusteet

Video: Aloittelijan opas Shell-komentosarjoille: perusteet
Video: Fitbit Versa 4 Review: Not as Good as Expected? - YouTube 2024, Marraskuu
Anonim
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.
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 komentosarja on?

Linux-käyttäjänä voit pelata 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-komentosarjoilla voimme ohjelmoida komentoja ketjuissa ja käyttää järjestelmää 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, if / then / else -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.
Shell-komentosarjoilla voimme ohjelmoida komentoja ketjuissa ja käyttää järjestelmää 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, if / then / else -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.

Se 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 joitain 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.

Heidän ydinsä, komentosarjat ovat vain tavallisia tekstitiedostoja. Voit käyttää mitä tahansa tekstieditoria kirjoittamaan ne: gedit, emacs, vim, nano … Tämä luettelo jatkuu. Varmista, että tallennat sen pelkkänä tekstinä, ei rikkaana tekstinä tai Word-asiakirjana. Koska rakastan helppokäyttöisyyttä, jota nano tarjoaa, käytän sitä.

Script-oikeudet ja -nimet

Komentosarjat toteutetaan kuten ohjelmat, ja jotta tämä tapahtuisi, niillä on oltava oikeat käyttöoikeudet. Voit tehdä skriptit suoritettaviksi suorittamalla seuraavan komennon:

chmod +x ~/somecrazyfolder/script1

Sen avulla kuka tahansa voi käyttää kyseistä komentosarjaa. Jos haluat rajoittaa sen käyttöä vain käyttäjälle, voit käyttää sitä sen sijaan:

chmod u+x ~/somecrazyfolder/script1

Jotta voisit suorittaa tämän komentosarjan, sinun on syötettävä cd oikeaan hakemistoon ja suorita sitten komentosarja seuraavasti:

cd ~/somecrazyfolder

./script1

Jotta asiat olisivat helpommin toteutettavissa, voit sijoittaa komentosarjat kotihakemiston "bin" -kansioon:

~/bin

Monissa moderneissa doksissa 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 kannattaa tarkistaa, onko käytössäsi ohjelma, joka käyttää tätä nimeä:

which [command]

Monet ihmiset nimittävät aikaisemmat komentosarjat "testi", ja kun he yrittävät käyttää sitä komentorivillä, mikään ei tapahdu. Tämä johtuu siitä, että se on ristiriidassa testikomennon kanssa, joka ei tee mitään ilman argumentteja. Varmista, että käsikirjoituksesi nimet eivät ole ristiriidassa komentojen kanssa, muutoin 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ä.
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ä.
  1. Jokaisen komentosarjan pitäisi olla "#! / Bin / bash"
  2. Jokainen uusi rivi on uusi komento
  3. Kommentoidut rivit alkavat #
  4. Komentoja ympäröi ()

Hash-Bang Hack

Kun kuori parsittaa tekstitiedoston läpi, suorin tapa tunnistaa tiedosto komentokuvana 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

Jokainen uusi rivi olisi pidettävä uutena komennuksena tai suuremman järjestelmän komponenttina. Jos / sitten / muuten lausumat käsittelevät esimerkiksi 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 #, linja jätetään huomiotta. Tämä muuttuu 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 aivoristeillä

Vanhemmissa päivinä komentojohdannaiset tehtiin yksittäisillä rastimerkeillä (`, jakaa ~ avaimen). Emme aio koskettaa tätä vielä, mutta kun useimmat ihmiset poistuvat ja tutkivat perusteiden oppimisen jälkeen, on luultavasti hyvä mainita, että sinun pitäisi käyttää 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 nimi ristiriidassa jotain:

Näet, että komentoa ei ole, joten olemme kaikki käyttäneet tätä nimeä.
Näet, että komentoa ei ole, joten olemme kaikki käyttäneet tätä nimeä.

Luo tyhjä tiedosto ~ / bin -kansioon:

touch ~/bin/datecp

Ja nyt muutetaan lupa, ennen kuin unohdamme:
Ja nyt muutetaan lupa, ennen kuin unohdamme:
Aloitetaan sitten käsikirjoituksen rakentaminen. Avaa kyseinen tiedosto valintasi tekstieditorissa. Kuten sanoin, pidän nano-yksinkertaisuudesta.
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.
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.

Katso alla olevaa kuvakaappausta, miten päivämäärän komennon tuotos saadaan:

Käytetään päivämääräkomennon viimeistä iterointia, "päivämäärä +% m_% d_% y-% H.% M.% S", ja käytä sitä komentosarjassamme.

Jos tallennamme tämän käsikirjoituksen juuri nyt, voimme käyttää sitä ja antaa meille päivämääräkomennon tuotos, kuten odotimme:
Jos tallennamme tämän käsikirjoituksen juuri nyt, voimme käyttää sitä ja antaa meille päivämääräkomennon tuotos, kuten odotimme:
Tehdään kuitenkin jotain erilaista. Anna muuttujan nimi, kuten date formatted tähän komentoon. Asianmukainen syntaksi on seuraava:
Tehdään kuitenkin jotain erilaista. Anna muuttujan nimi, kuten date formatted tähän komentoon. Asianmukainen syntaksi on seuraava:

variable=$(command –options arguments)

Ja meille, me rakennamme sen näin:

date_formatted=$(date +%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ä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 tulos:

Image
Image
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.
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.

Palatkaamme käsikirjallamme. Seuraavaksi lisäämme komennon kopiointiosaan.

cp –iv $1 $2.$date_formatted

Tämä vetoaa kopiointikomentoon -i ja -v-asetuksilla. Ensin kysytään tarkistusta ennen tiedostojen päällekirjoittamista, ja jälkimmäinen näyttää sen, mitä komentorivillä on alas.
Tämä vetoaa kopiointikomentoon -i ja -v-asetuksilla. 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, dollarimerkki ($), jota seuraa numero, merkitsee sitä 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.

Tarkastelemalla käsikirjoitusta voimme nähdä, että viittaamme kahteen argumenttiin:

Tämä tarkoittaa sitä, että kun suoritamme komentosarjan, meidän on annettava kaksi argumenttia, jotta komentosarja toimisi oikein. Ensimmäinen argumentti, $ 1, on tiedosto, joka kopioidaan, ja se korvataan, kun komentojonon ensimmäinen argumentti on.
Tämä tarkoittaa sitä, että kun suoritamme komentosarjan, meidän on annettava kaksi argumenttia, jotta komentosarja toimisi oikein. Ensimmäinen argumentti, $ 1, on tiedosto, joka kopioidaan, ja se korvataan, kun komentojonon ensimmäinen argumentti on.

Toinen argumentti, $ 2, toimii saman komennon tulostustiedostona. Mutta voit myös nähdä, että se on erilainen. Olemme lisänneet ajanjakson, ja olemme viitanneet yllä olevaan arvoon. Kiinnostaako tämä, mitä tämä tekee?

Tässä, mitä tapahtuu, kun komentosarja ajetaan:

Näet, että tulostustiedosto on lueteltu minulle, mitä annoin $ 2: lle, jota seuraa aika, sitten päivämääräkomennon tuotos! Onko järkevää, eikö?
Näet, että tulostustiedosto on lueteltu minulle, mitä annoin $ 2: lle, jota seuraa aika, sitten päivämääräkomennon tuotos! Onko järkevää, eikö?

Nyt kun suoritan datecp-komennon, se ajaa 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.

Oletko käsikirjoitus? Onko neuvoja aloittelijoille? Jaa ajatuksesi kommentteihin! Siellä on enemmän tulossa tähän sarjaan!

Suositeltava: