Aloittelijan opas komentosarjakirjoitukseen: perusteet

Termi "komentosarjat" mainitaan usein Linux-foorumeilla, mutta monet käyttäjät eivät tunne sitä. Tämän helpon ja tehokkaan ohjelmointimenetelmän oppiminen voi auttaa sinua säästämään aikaa, oppimaan komentorivin paremmin ja karkottamaan tylsiä tiedostojen hallintatehtäviä.

Mikä on Shell-komentosarja?

Linux-käyttäjä tarkoittaa, että pelaat komentorivillä. Pitäkää siitä tai ei, on vain joitain asioita, jotka tehdään paljon helpommin tämän käyttöliittymän kautta kuin osoittamalla ja napsauttamalla. Mitä enemmän käytät ja opit komentoriviä, sitä enemmän näet sen potentiaalin. Komentorivi itsessään on ohjelma: kuori. Suurin osa Linux-distroista käyttää nykyään Bashia, ja juuri tähän syötät komentoja.

Jotkut teistä, jotka käyttivät Windowsia ennen Linuxin käyttöä, saattavat muistaa eräajotiedostot. Nämä olivat pieniä tekstitiedostoja, jotka voit täyttää komennoilla ja Windows ajaa ne vuorotellen. Se oli fiksu ja siisti tapa saada aikaan joitakin asioita, kuten pelien suorittaminen lukion tietokonelaboratoriossa, kun et voinut avata järjestelmäkansioita tai luoda pikakuvakkeita. Erätiedostot Windowsissa, vaikka ne ovat hyödyllisiä, ovat halpoja jäljitelmiä komentosarjoista.

Shell-komentosarjat antavat meille mahdollisuuden ohjelmoida komennot ketjuina ja antaa järjestelmän suorittaa ne komentosarjatapahtumana, kuten eräajotiedostot. Ne mahdollistavat myös paljon hyödyllisempiä toimintoja, kuten komentojen korvaamisen. Voit kutsua komennon, kuten päivämäärän, ja käyttää sen tulostusta osana tiedostojen nimeämisjärjestelmää. Voit automatisoida varmuuskopiot, ja jokaisella kopioidulla tiedostolla voi olla nykyinen päivämäärä liitettynä nimen loppuun. Komentosarjat eivät ole vain komentojen kutsuja. Ne ovat omia ohjelmiaan. Komentosarjojen avulla voit käyttää ohjelmointitoimintoja - kuten 'for' -silmukoita, if / then / else-lauseita ja niin edelleen - suoraan käyttöjärjestelmän käyttöliittymässä. Ja sinun ei tarvitse oppia toista kieltä, koska käytät mitä jo tiedät: komentorivin.

Se on todella skriptien voima, luulen. Pääset ohjelmoimaan jo tuntemillasi komennoilla samalla kun opit useimpien tärkeimpien ohjelmointikielien katkelmia. Pitäisikö tehdä jotain toistuvaa ja tylsiä? Kirjoita se! Tarvitsetko oikotien todella sekavaan komentoon? Kirjoita se! Haluatko rakentaa todella helppokäyttöisen komentoriviliittymän johonkin? Kirjoita se!

Ennen kuin aloitat

Ennen kuin aloitamme komentosarjasarjamme, käsitellään joitain perustietoja. Käytämme bash-kuorta, jota useimmat Linux-jakelut käyttävät luonnollisesti. Bash on saatavana myös Mac OS -käyttäjille ja Cygwinille Windowsissa. Koska se on niin yleismaailmallinen, sinun pitäisi pystyä käsikirjoittamaan alustastasi riippumatta. Lisäksi niin kauan kuin kaikki viitatut komennot ovat olemassa, komentosarjat voivat toimia useilla alustoilla ilman, että säätöä tarvitaan vain vähän tai ei ollenkaan.

Komentosarjojen avulla voidaan helposti käyttää järjestelmänvalvojan tai pääkäyttäjän oikeuksia, joten on parasta testata komentosarjoja ennen niiden käyttöönottoa. Käytä myös tervettä järkeä, kuten varmista, että sinulla on varmuuskopiot tiedostoista, joissa aiot suorittaa komentosarjan. On myös erittäin tärkeää käyttää oikeita vaihtoehtoja, kuten –i komentoon rm, jotta vuorovaikutusta vaaditaan. Tämä voi estää joitain ikäviä virheitä. Lue sellaisenaan lataamasi komentosarjat ja ole varovainen omistamiesi tietojen suhteen, mikäli asiat menevät pieleen.

Skriptit ovat ytimessä vain pelkkää tekstiä. Voit kirjoittaa ne millä tahansa tekstieditorilla: gedit, emacs, vim, nano ... Tätä luetteloa voidaan jatkaa. Muista vain tallentaa se pelkkänä tekstinä, ei Rich Text -tekstinä tai Word-asiakirjana. Koska rakastan nanon helppokäyttöisyyttä, käytän sitä.

Komentosarjan käyttöoikeudet ja nimet

Komentosarjat suoritetaan kuten ohjelmat, ja jotta tämä tapahtuisi, heillä on oltava asianmukaiset oikeudet. Voit tehdä komentosarjat suoritettaviksi suorittamalla seuraavan komennon:

chmod + x ~ / somecrazyfolder / script

Tämän avulla kuka tahansa voi suorittaa kyseisen skriptin. Jos haluat rajoittaa sen käytön vain käyttäjälle, voit käyttää tätä sen sijaan:

chmod u + x ~ / somecrazyfolder / script

Tämän komentosarjan suorittamiseksi sinun on cd oikeaan hakemistoon ja sitten suoritettava komentosarja näin:

cd ~ / somecrazyfolder

./script1

Asioiden helpottamiseksi voit sijoittaa komentosarjat kotihakemistosi bin-kansioon:

~ / bin

Monissa moderneissa distroissa tätä kansiota ei enää luoda oletuksena, mutta voit luoda sen. Tähän yleensä tallennetaan suoritettavat tiedostot, jotka kuuluvat käyttäjällesi eikä muille käyttäjille. Sijoittamalla komentosarjat tähän, voit vain suorittaa ne kirjoittamalla heidän nimensä, kuten muutkin komennot, sen sijaan, että sinun tarvitsisi cd: tä ja käyttää etuliitettä './'.

Ennen kuin nimeät komentosarjan, sinun on kuitenkin tehtävä seuraava komento tarkistamaan, onko sinulla asennettuna ohjelma, joka käyttää kyseistä nimeä:

mikä [komento]

Monet ihmiset nimeävät varhaiset komentosarjansa "testiksi", ja kun yritetään suorittaa 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ä komentosarjojesi nimet eivät ole ristiriidassa komentojen kanssa, muuten saatat huomata tekevänsi asioita, joita et aio tehdä!

Komentosarjojen ohjeet

Kuten aiemmin mainitsin, jokainen komentotiedosto on olennaisesti pelkkää tekstiä. Tämä ei tarkoita sitä, että voit kirjoittaa haluamallasi tavalla. Kun tekstitiedostoa yritetään suorittaa, kuoret jäsentävät niiden läpi vihjeitä siitä, ovatko ne komentosarjoja vai ei, ja kuinka käsitellä kaikkea oikein. Tämän vuoksi sinun on tiedettävä muutama ohje.

  1. Jokaisen käsikirjoituksen tulee olla "#! / Bin / bash"
  2. Jokainen uusi rivi on uusi komento
  3. Kommenttirivit alkavat numerolla #
  4. Komennot ympäröivät ()

Hash-Bang Hack

Kun komentotulkki jäsentää tekstitiedoston, suorin tapa tunnistaa tiedosto komentosarjan muodostamalla ensimmäinen rivi:

#! / bin / bash

Jos käytät toista kuorta, korvaa sen polku täällä. Kommenttirivit alkavat hajautuksista (#), mutta lisäämällä bang (!) Ja komentorivipolku sen jälkeen, kun se on eräänlainen hakkerointi, joka ohittaa tämän kommenttisäännön ja pakottaa komentosarjan suorittamaan kuorella, johon tämä rivi osoittaa.

Uusi rivi = Uusi komento

Jokainen uusi rivi on katsottava uudeksi komennoksi tai suuremman järjestelmän osaksi. Esimerkiksi if / then / else-lauseet ottavat haltuunsa useita rivejä, mutta järjestelmän kaikki komponentit ovat uudella rivillä. Älä anna komennon vuotaa seuraavalle riville, koska se voi katkaista edellisen komennon ja antaa sinulle virheen seuraavalle riville. Jos tekstieditori tekee niin, sinun on poistettava tekstin rivitys käytöstä ollaksesi turvallisella puolella. Voit poistaa tekstin rivityksen käytöstä nanobitillä painamalla ALT + L.

Kommentoi usein #s: llä

Jos aloitat rivin #: llä, rivi jätetään huomioimatta. Tämä muuttaa sen kommenttiriviksi, jossa voit muistuttaa itseäsi siitä, mikä edellisen komennon tulos oli tai mitä seuraava komento tekee. Sammuta uudelleen tekstin rivitys tai hajota kommenttisi useisiin riveihin, jotka kaikki alkavat hashilla. Paljon kommenttien käyttäminen on hyvä käytäntö, koska se antaa sinun ja muiden ihmisten muokata komentosarjojasi helpommin. Ainoa poikkeus on edellä mainittu Hash-Bang-hakkerointi, joten älä seuraa #s kanssa! S. ;-)

Komennot ympäröivät sulkeet

Vanhempina päivinä komentojen korvaaminen tehtiin yhdellä rasti -merkillä (`, jakaa ~ -avaimen). Emme aio koskettaa tätä vielä, mutta kun useimmat ihmiset lähtevät ja tutkivat perusopetuksen oppimisen jälkeen, on luultavasti hyvä mainita, että sinun tulisi käyttää sen sijaan sulkeita. Tämä johtuu pääasiassa siitä, että kun pesit - laitat komentoja muiden komentojen sisään - sulut toimivat paremmin.

Ensimmäinen käsikirjoituksesi

Aloitetaan yksinkertaisella komentosarjalla, jonka avulla voit kopioida tiedostoja ja liittää päivämääriä tiedostonimen loppuun. Kutsutaan sitä nimellä "datecp". Tarkastellaan ensin, onko nimi ristiriidassa jonkin kanssa:

Voit nähdä, että kumpi komento ei tuota, joten olemme kaikki valmiita käyttämään tätä nimeä.

Luodaan tyhjä tiedosto ~ / bin -kansioon:

kosketa ~ / bin / datecp

Ja muutetaan lupaa nyt, ennen kuin unohdamme:

Aloitetaan sitten käsikirjoituksen rakentaminen. Avaa tiedosto valitsemassasi tekstieditorissa. Kuten sanoin, pidän nanon yksinkertaisuudesta.

nano ~ / bin / datecp

Ja mennään eteenpäin ja laitetaan edellytys ensimmäinen rivi ja kommentti mitä tämä komentosarja tekee.

Seuraavaksi julistetaan muuttuja. Jos olet koskaan ottanut algebraa, tiedät todennäköisesti mikä se on. Muuttujan avulla voimme tallentaa tietoja ja tehdä asioita sen kanssa. Muuttujat voivat "laajentua", kun niihin viitataan muualla. Eli heidän nimensä näyttämisen sijaan he näyttävät tallennetun sisällön. Voit myöhemmin kertoa, että sama muuttuja tallentaa erilaisia ​​tietoja, ja kaikki sen jälkeen tapahtuvat ohjeet käyttävät uusia tietoja. Se on todella hieno paikkamerkki.

Mitä laitamme muuttujan sisään? No, tallennetaan päivämäärä ja kellonaika! Tätä varten kutsumme päivämääräkomennon.

Katso alla olevasta kuvakaappauksesta, kuinka rakentaa päivämääräkomennon lähtö:

Voit nähdä, että lisäämällä erilaisia ​​muuttujia, jotka alkavat%: lla, voit muuttaa komennon lähdön haluamaasi. Lisätietoja on päivämääräkomennon manuaalisella sivulla.

Käytetään tätä viimeistä päivämääräkomennon iteraatiota "date +% m_% d_% y-% H.% M.% S" ja käytetään sitä komentosarjassa.

Jos haluaisimme tallentaa tämän komentosarjan juuri nyt, voisimme suorittaa sen ja se antaisi meille päivämääräkomennon tuloksen kuten odotimme:

Mutta, tehdään jotain erilaista. Annetaan muuttujan nimi, kuten date_formatted tähän komentoon. Oikea syntaksia tälle on seuraava:

muuttuja = $ (komento –options argumentit)

Ja meille rakensimme sen näin:

date_formatted = $ (päiväys +% m_% d_% y-% H.% M.% S)

Tätä kutsutaan komentojen korvaamiseksi. Periaatteessa kerromme bashille, että aina kun muuttuja "date_formatted" tulee esiin, komento suoritetaan sulkeissa. Sen jälkeen mitä komennon antama lähtö pitäisi näyttää muuttujan nimen "date_formatted" sijaan.

Tässä on esimerkki komentosarjasta ja sen tuotoksesta:

Huomaa, että lähdössä on kaksi välilyöntiä. Kaiku-komennon lainausmerkeissä oleva tila ja muuttujan edessä oleva tila näytetään. Älä käytä välilyöntejä, jos et halua niiden näkyvän. Huomaa myös, että ilman tätä lisättyä "kaiku" -riviä komentosarja ei tuota mitään tulosta.

Palataan takaisin käsikirjoitukseen. Lisätään seuraavaksi komennon kopiointiosaan.

cp –iv $ 1 $ 2. $ date_formatted

Tämä käynnistää kopiointikomennon vaihtoehdoilla –i ja –v. Ensimmäinen pyytää sinulta vahvistusta ennen tiedoston korvaamista, ja jälkimmäinen näyttää mitä komentorivillä on.

Seuraavaksi näet, että olen lisännyt vaihtoehdon "$ 1". Komentosarjoja suoritettaessa dollarin merkki ($) ja numero merkitsevät komentosarjan sitä numeroitua argumenttia, kun sitä käytettiin. Esimerkiksi seuraavassa komennossa:

cp –iv Trogdor2.mp3 soittoääni.mp3

Ensimmäinen argumentti on “Trogdor2.mp3” ja toinen argumentti “ringtone.mp3”.

Kun tarkastelemme skriptiämme takaisin, voimme nähdä, että viittaamme kahteen argumenttiin:

Tämä tarkoittaa, että kun suoritamme komentosarjaa, meidän on annettava kaksi argumenttia, jotta komentosarja toimisi oikein. Ensimmäinen argumentti $ 1 on tiedosto, joka kopioidaan ja korvataan komennon “cp –iv” ensimmäisenä argumenttina.

Toinen argumentti, $ 2, toimii saman komennon lähtötiedostona. Mutta voit myös nähdä, että se on erilainen. Olemme lisänneet pisteen ja viitanneet muuttujaan "date_formatted" ylhäältä. Haluatko tietää, mitä tämä tekee?

Näin tapahtuu, kun komentosarja suoritetaan:

Voit nähdä, että tulostustiedosto on luettelossa mitä minä syötin hintaan $ 2, jota seuraa piste ja sitten päivämääräkomennon lähtö! On järkevää, eikö?

Nyt kun suoritan datecp-komennon, se suorittaa tämän komentosarjan ja antaa minun kopioida kaikki tiedostot uuteen sijaintiin ja lisätä päivämäärän ja kellonajan tiedostonimen loppuun automaattisesti. Hyödyllinen tavaroiden arkistointiin!

Shell-komentosarjat ovat keskeinen tekijä, kun käyttöjärjestelmäsi toimii. Sinun ei myöskään tarvitse oppia uutta ohjelmointikieltä sen toteuttamiseksi. Kokeile komentosarjoja joillakin peruskomennoilla kotona ja aloita ajatella, mihin voit käyttää tätä.

Kirjoitatko? Onko sinulla neuvoja aloittelijoille? Jaa ajatuksesi kommenteissa! Tässä sarjassa on tulossa lisää!