23Aug
Terminit "shell skriptimine" mainitakse tihti Linuxi foorumites, kuid paljud kasutajad ei tunne seda. Selle lihtsa ja võimas programmeerimismeetodi õppimine aitab teil säästa aega, õppida käsurealt paremini ja eemaldada tüütu failihalduse ülesanded.
Mis on Shelli skriptid?
Kasutades Linuxi kasutajat, tähendab see, et sa mängid käsurea abil. Nagu või mitte, on vaid mõni asi, mida on selle liidese kaudu palju hõlpsamini teha, kui juhtida ja klõpsates. Mida rohkem te kasutate ja õppite käsurealt, seda rohkem näete selle potentsiaali. Noh, käsurea ise on programm: shell. Enamik Linuxi distributsiooni kasutab täna Bashi ja selle kaudu sisestate käsud sisestama.
Nüüd, mõned teist, kes kasutasid Windowsit enne Linuxi kasutamist, võivad meeles pidada partiifaile. Need olid väikesed tekstifailid, mida võite täitmise käskudega täita ja Windows käivitas need omakorda. Kui te ei suutnud avada süsteemikaustu ega luua otseteid, oli see nutikas ja puhas viis mõnede asjade sooritamiseks, näiteks mängida oma keskkooli arvutiklassis. Windowsi partiifailid, mis on kasulikud, on odavad jäljendid shell skripte.
Shell-skriptid võimaldavad meil programmeerida käske ahelates ja käivitada süsteem kui scripted sündmus, nagu ka partitsed failid. Need võimaldavad ka palju kasulikumaid funktsioone, nagu käsu asendamine. Võite käsku käivitada, näiteks kuupäeva, ja kasuta seda väljastama failide nimetamise skeemi osana. Võite varundusi automatiseerida ja iga kopeeritud faili saab selle nime lõppu lisada praeguse kuupäeva. Skriptid ei ole ka käskude kutsed. Need on programmid iseenesest. Skriptimine võimaldab kasutada operatsioonisüsteemi liidese kaudu programmeerimisfunktsioone - näiteks 'loopide jaoks', kui /then/ muud avaldused jne. Ja te ei pea õppima mõnda teist keelt, sest kasutate seda, mida te juba teate: käsurealt.
See on tõesti võimas skriptimine, ma arvan. Saate programmeerida käskudega, mida juba teate, samal ajal kui õpivad kõige enam programmeerimiskeele. Kas peate tegema midagi korduvat ja tüütu? Script seda! Kas soovite otsekohe tõeliselt keerdse käskluse jaoks? Script seda! Kas soovite luua midagi hõlpsasti käsurealiidest? Script seda!
Enne kui alustate
Enne kui hakkame oma skriptide seeriat alustama, vaatame põhiteavet. Me kasutame bash-kestat, mida enamus Linuxi distributsioone kasutab ennast. Bash on saadaval Mac OSi kasutajatele ja Cygwinile ka Windowsis. Kuna see on nii universaalne, peaksite saama skripti oma platvormist sõltumata. Lisaks, seni, kuni kõik viidatud käsklused on olemas, võivad skriptid töötada mitmel platvormil, mida nõutakse vähese häälestamisega.
skriptid võivad hõlpsasti kasutada administraatori või administraatori õigusi, seega on kõige parem katsetada skripte enne nende tööle panemist. Samuti kasutage tervet mõistust, näiteks veenduge, et olete failide varukoopiaid, millega olete skripti käivitanud. Samuti on tõesti oluline kasutada õigeid valikuid, näiteks käsu r-i jaoks, nii et teie suhtlus on vajalik. See võib takistada mõned leinavad vigu. Sellisena loete läbi skripte, mida laadite alla, ja olge nende andmetega ettevaatlik, kui asjad lähevad valesti.
Oma põhiosas on skriptid lihtsalt tekstifailid. Tekstiredaktori saab neile kirjutada: gedit, emacs, vim, nano. .. See nimekiri läheb edasi. Lihtsalt veenduge, et salvestate selle kui tavalise teksti, mitte rikasteksti või Wordi dokumendina. Kuna ma armastan nano pakutavat kasutuskõlblikkust, kasutan seda.
skripti õigused ja nimed
skriptid on täidetavad nagu programmid ning selleks peab neil olema õiged õigused. Võite teha skripte käivitatavaks, käivitades sellele järgmise käsu:
chmod + x ~ /somecrazyfolder/ script1
See võimaldab igal konkreetsel skriptil käivitada. Kui soovite piirata selle kasutamist ainult teie kasutajale, võite selle asemel kasutada:
chmod u + x ~ /somecrazyfolder/ skript1
Selle skripti käivitamiseks peate cd sisestama õigesse kataloogi ja seejärel käivitage selline skript:
cd ~ / somecrazyfolder
. /script1
Asjade mugavamaks muutmiseks võite paigutada skripte oma kodukataloogi kausta "bin":
~ / bin
Paljudes kaasaegsetes marsruutides pole seda kausta enam vaikimisi loodud, kuid saate seda luua. See on tavaliselt käimasolevate failide salvestamine, mis kuuluvad teie kasutajale ja mitte teistele kasutajatele. Asetades skripte siin, saate neid lihtsalt käivitada, kirjutades nende nime, nagu ka teisi käske, selle asemel, et printida ja kasutada "./" eesliidet.
Enne skripti nime saamist peaksite järgima seda käsku, et kontrollida, kas teil on olemas selline nimi, mis on installitud:
mis [command]
Paljud inimesed nimetavad oma varajasi skripte "test" ja kui nad püüavadkäivitage see käsureal, ei juhtu midagi. Seda põhjusel, et see on vastuolus katsekäsuga, mis ei tee argumentidega midagi. Alati veenduge, et teie skripti nimed ei oleks käskudega vastuolus, vastasel juhul võib juhtuda, et teete asju, mida te ei kavatse teha!
skriptimise juhised
Nagu ma varem mainisin, on iga skriptifail sisuliselt tavaline tekst. See ei tähenda siiski, et võite kirjutada seda, mida soovite kõikvõimalikult tühjalt. Kui tekstifaili üritatakse täita, siis karbid analüüsivad neid läbi viiside kohta, kas need on skriptid või mitte, ja kuidas kõik õigesti käidelda. Seetõttu on mõned juhised, mida pead teadma.
- Iga skript peaks olema koos "#!/bin/ bash "
- Iga uus rida on uus käsk
- Kommentaaride read algavad #
- -ga Käsud on ümbritsetud()
Hash-Bang Hack
Kui shell koondab tekstifaili läbi, on kõige otsesem viis faili tuvastamiseksskript on teha oma esimene rida:
#!/bin/ bash
Kui kasutate mõnda teise kestat, asenda see siin. Kommentaaride read algavad hashes'iga( #), kuid lisades pausi( !) Ja shelli tee pärast seda, kui see on mingi häkkimine, mis mööda seda kommentaari reeglit üritab ja sunnib skripti täitma shelliga, millele see joon näitab.
uus rida = uus käsk
Iga uut rida tuleks pidada uueks käsuks või suurema süsteemi komponendiks. Näiteks kui ülejäänud avaldused /then/ võtavad üle mitu rida, kuid selle süsteemi iga komponent on uues rida.Ärge laske käsklus ületada järgmisele reale, kuna see võib kärpida eelmist käsu ja anda teile järgmise rea vea. Kui teie tekstiredaktor seda teete, peate tekstiklaami väljalülitamiseks olema ohutu poolel. Teksti ümbermõõtu saab välja lülitada nano-bitise ALT + L-ga.
kommentaar Sageli koos #s
Kui alustate rea numbriga #, jäetakse rida ignoreerituks. See muudab selle kommentaarideks, kus saate meenutada endist eelmise käsu väljundit või seda, mida järgmine käsk teeb. Jällegi lülitage tekstivõre välja või katkestage kommenteerimine mitmesse rida, mis kõik algavad räsihinnaga. Palju kommentaare on hea tava hoida, kuna see võimaldab teil ja teistel inimestel hõlpsamini oma skripte muuta. Ainsaks erandiks on eespool nimetatud Hash-Bangi häkkimine, seega ärge järgige #s koos! Sga.;-)
käske ümbritsevad pardajuhised
Vanematel päevadel käsk asendusi tehti ühe märgi märkidega( `, jagab ~ võtme).Me ei kavatse seda veel puudutada, kuid kuna enamik inimesi läheb ära ja uurivad põhiteadmiste õppimist, siis on ilmselt hea mõte mainida, et peaksite selle asemel kasutama sulgudes. See on peamiselt seetõttu, et kui pesad - pane käske teiste käskude sees - sulgud toimivad paremini.
Teie esimene skript
Alustame lihtsa skriptiga, mis võimaldab kopeerida faile ja lisada kuupäevad failinime lõppu. Vaatame seda "datecp".Esmalt kontrollime, kas see nimi on midagi vastuolus:
Näete, et selle käsu väljund puudub, seega oleme kõik seadnud selle nime kasutamiseks.
Loome tühja faili kataloogis ~ / bin:
touch ~ /bin/ datecp
Ja muudame nüüd luba, enne kui me unustame:
. Alustame seejärel oma skripti. Avage see fail valitud tekstiredaktorisse. Nagu ma ütlesin, mulle meeldib nano lihtsus.
nano ~ /bin/ datecp
Ja käime edasi ja paneme esialgse eelduse ja kommenteerime, mida see skript teeb.
Järgnevalt deklareerime muutuja. Kui olete kunagi võtnud algebra, siis ilmselt teate, mis see on. Muutuja võimaldab meil salvestada teavet ja teha asju sellega. Muutujad võivad "laiendada", kui viidatakse mujal. See tähendab, et nende nime kuvamise asemel kuvatakse nende salvestatud sisu. Võite hiljem öelda, et sama muutuja säilitab erinevat teavet ja kõik juhised, mis ilmuvad pärast seda, kasutavad uut teavet. See on tõesti meeldiv kohatäide.
Mida me muudame välja? Pange tähele kuupäeva ja kellaaega! Selleks kutsume kuupäeva käsku.
Vaadake alljärgnevat ekraanipilti kuupäeva käsu väljundi loomiseks:
Näete, et lisades erinevad muutujad, mis algavad% -ga, saate käsu väljundit muuta soovitud viisil. Lisateabe saamiseks võite vaadata kuupäeva käsu käsitsi lehekülge.
Kasutame seda kuupäeva käsu viimast iteratsiooni, "date +% m_% d_% y-% H.% M.% S" ja kasutage seda meie skriptis.
Kui me peaksime selle skripti kohe salvestama, võiksime seda käivitada ja see annaks meile kuupäeva käsu väljundi nagu oleksime eeldanud:
Kuid tegema midagi muud. Andke muutuja nimi, nagu date_formatted sellele käsule. Selle õige süntaks on järgmine:
variable = $( käsu-võimaluste argumendid)
Ja meie jaoks oleksime selle ehitada järgmiselt:
date_formatted = $( date +% m_% d_% y-% H.%M.% S)
Seda nimetatakse käsku asenduseks. Me sisuliselt ütleme bash, et alati, kui muutuja "date_formatted" kuvatakse, käivitatakse sulgudes olev käsk. Siis tuleks muutuja nime asemel kuvada mis tahes väljund, mida käsklused annavad, "date_formatted".
Siin on näide skripti ja selle väljundit:
Pange tähele, et väljundis on kaks tühikut. Mõlema echo käsku jutumärkide ruum ja muutuja ees paiknev ruum kuvatakse mõlemad.Ärge kasutage tühikuid, kui te ei soovi, et need kuvataks. Samuti pange tähele, et ilma selle lisatud "echo" reanimata ei anna skript mingit väljundit.
Lähme tagasi meie skriptile. Järgmisena lisage käsu kopeerimise osa.
cp -iv $ 1 $ 2. $ date_formatted
See käivitab koopia käsuga -i ja -v valikud. Esimene palub teil kontrollida enne faili ülekirjutamist ja viimane näitab, mis käsureal on.
Järgmisena näete, et olen lisanud võimaluse "$ 1".Kui skriptid, siis tähistab dollar tähis( $), millele järgneb number, selle skripti nummerdatud argumendi, kui see on kutsutud. Näiteks järgmises käskluses:
cp -iv Trogdor2.mp3 ringtone.mp3
Esimene argument on "Trogdor2.mp3" ja teine argument on "ringtone.mp3".
Vaadates meie skripti tagasi, näeme, et me viitame kahel argumendil:
See tähendab, et skripti käivitamisel peame esitama kaks argumenti, et skript õigesti töötada. Esimene argument, $ 1, on fail, mida kopeeritakse ja asendatakse käsuga "cp -iv" esimese argumendina.
Teine argument, $ 2, toimib sama käsu väljundfailina. Kuid võite ka näha, et see on teistsugune. Oleme lisanud perioodi ja oleme viidanud ülaltoodud muutuja date_formatted. Kas see on huvitav?
Siin on see, mis juhtub siis, kui skript käivitatakse:
Saate näha, et väljundfail on loetletud nii, nagu ma sisestasin $ 2-le, millele järgneb ajavahemik, siis kuupäeva käsu väljund! Kas see on mõistlik, eks?
Nüüd, kui käivitan datecp käsku, käivitab see selle skripti ja lubab mul kopeerida kõik failid uude asukohta ja lisada automaatselt faili nime kuupäev ja kellaaeg lõpuni. Kasulik vara arhiveerimiseks!
Shell-skriptimine on teie operatsioonisüsteemi töö tegemise keskne koht. Samuti ei pea te õppima uut programmeerimiskeelt, et see juhtuks. Proovige skripte mõne põhikäsuga kodus ja hakake mõtlema, mida saate seda kasutada.
Kas sa saad skripti? Kas teil on nõuandeid algajatele? Jagage oma mõtteid kommentaarides! Selles seerias on veelgi rohkem!