A Kezdő útmutatója a Shell Scripting The Basics-hoz
A „shell scripting” kifejezés gyakran szerepel a Linux fórumokon, de sok felhasználó nem ismeri. Ez az egyszerű és hatékony programozási módszer segíthet időt takarít meg, jobban megtanulhatja a parancssort és eltörölheti az unalmas fájlkezelési feladatokat.
Mi a Shell parancsfájl?
Linux-felhasználóként a parancssorban játszol. Akár tetszik, akár nem, van néhány dolog, ami sokkal könnyebben történik ezen az interfészen keresztül, mint a mutató és kattintással. Minél többet használ és megtanulja a parancssort, annál inkább látja annak lehetőségét. Nos, maga a parancssor egy program: a héj. A legtöbb Linux-böngésző ma Bash-t használ, és ez az, amit valóban beírsz.
Néhányan, akik a Linuxot használták a Linux használata előtt, emlékezhetnek a kötegelt fájlokra. Ezek olyan kis szövegfájlok voltak, amelyekkel a parancsokat betölthetik, és a Windows futtatja őket. Ez okos és ügyes módja volt, hogy néhány dolgot megtegyünk, mint például a játékokat a középiskolai számítógép laboratóriumában, amikor nem sikerült megnyitni a rendszer mappáit vagy létrehozni a parancsikonokat. A Windows-os kötegfájlok hasznosak, bár hasznosak a shell-szkripteknek.
A Shell parancsfájlok lehetővé teszik számunkra, hogy a parancsokat láncokban programozzuk, és a rendszer parancsfájlként is végrehajtsa őket, mint a kötegelt fájlok. Ezenkívül sokkal hasznosabb funkciókat tesz lehetővé, mint például a parancs helyettesítése. Meghívhat egy parancsot, mint például a dátumot, és használhatja a kimenetet fájlnevezési rendszer részeként. Automatikusan automatizálhatja a biztonsági mentéseket, és minden másolt fájl az aktuális dátumot a nevének végéhez csatolhatja. A parancsfájlok nem csak a parancsok meghívása. Ezek önálló programok. A parancsfájlok lehetővé teszik a programozási funkciók használatát - mint például a „hurkok”, ha / majd / egyéb utasítások, stb. - közvetlenül az operációs rendszer felületén. És nem kell más nyelvet tanulni, mert azt használja, amit már tud: a parancssort.
Azt hiszem, ez a szkriptek hatalma. A már megismert parancsokkal programozható, miközben a legtöbb programozási nyelvről kapcsokat tanul. Kell valami ismétlődő és unalmas? Script meg! Kell egy gyorsbillentyű egy igazán kanyargós parancshoz? Script meg! Szeretne egy nagyon könnyen használható parancssori felületet létrehozni valamire? Írja be!
Mielőtt elkezded
Mielőtt elkezdenénk a szkriptek sorozatát, fedezzük fel néhány alapvető információt. A bash shell-et fogjuk használni, amelyet a legtöbb Linux disztribúció natívan használ. A Bash a Mac OS-felhasználók és a Cygwin számára is elérhető a Windows rendszerben. Mivel olyan univerzális, a platformtól függetlenül képesnek kell lennie szkriptetni. Ezen túlmenően mindaddig, amíg az összes hivatkozott parancs létezik, a szkriptek több platformon is működhetnek, és csekély mértékű csípést nem igényelnek.
A parancsfájlok könnyen használhatják az „adminisztrátor” vagy a „szuperfelhasználó” jogosultságokat, így a legjobb, ha tesztelje a szkripteket, mielőtt azokat üzembe helyezné. Szintén használja a józan észt, úgy, hogy győződjön meg róla, hogy biztonsági másolatot készít a fájlokról, amelyeken egy parancsfájlt futtat. Az is fontos, hogy a megfelelő opciókat, például a -i-t használjuk az rm parancshoz, így szükséges a kölcsönhatás. Ez megakadályozhat néhány csúnya hibát. Mint ilyen, olvassa el a letöltött parancsfájlokat, és legyen óvatos az adatokkal, csak abban az esetben, ha a dolgok rosszul mennek.
A parancsfájlok csak a szöveges fájlok. Bármilyen szövegszerkesztővel írhatja őket: gedit, emacs, vim, nano ... Ez a lista folytatódik. Csak győződjön meg róla, hogy egyszerű szövegként, nem pedig gazdag szövegként vagy Word-dokumentumként mentette el. Mivel szeretem a nano könnyű használatát, ezt fogom használni.
Script engedélyek és nevek
A parancsfájlok hasonló programokat hajtanak végre, és ahhoz, hogy ez megtörténjen, megfelelő jogosultságokkal kell rendelkezniük. A parancsfájlok futtathatóvá tehetők az alábbi parancs futtatásával:
chmod + x ~ / somecrazyfolder / script1
Ez lehetővé teszi, hogy bárki futtassa az adott parancsfájlt. Ha azt szeretné, hogy a felhasználását csak a felhasználóra korlátozza, akkor ezt használhatja:
chmod u + x ~ / somecrazyfolder / script1
A parancsfájl futtatásához a megfelelő könyvtárba kell beírnia, majd futtatnia kell a következő parancsfájlt:
cd ~ / somecrazyfolder
./ script1
Ahhoz, hogy a dolgok kényelmesebbé váljanak, szkripteket helyezhet a „bin” mappába a saját könyvtárában:
~ / Bin
Sok modern diszpozícióban ez a mappa már nem alapértelmezés szerint jön létre, de létrehozhatja azt. Ez általában akkor történik, amikor a futtatható fájlokat tárolják, amelyek a felhasználóhoz tartoznak, és nem a többi felhasználóhoz. A parancsfájlok itt történő elhelyezésével egyszerűen futtathatja őket a nevük beírásával, csakúgy, mint más parancsok, ahelyett, hogy cd körül kellene lennie, és használnia kell a "./" előtagot.
Mielőtt nevet adna egy parancsfájlnak, ellenőrizze, hogy van-e telepítve egy olyan program, amely az adott nevet használja:
melyik [parancs]
Sokan nevezik a korai szkriptek „tesztjét”, és amikor megpróbálják a parancssorban futtatni, semmi sem történik. Ez azért van, mert ellentmond a tesztparancsnak, amely semmit sem tesz érvek nélkül. Mindig győződjön meg róla, hogy a szkriptnevek nem ütköznek egymással a parancsokkal, különben előfordulhat, hogy olyan dolgokat találsz, amiket nem akarsz tenni!
Scripting-irányelvek
Mint korábban említettem, minden szkriptfájl lényegében egyszerű szöveg. Ez azonban nem jelenti azt, hogy bármit is írhatsz, amit akarsz. Amikor egy szövegfájlt megpróbálunk végrehajtani, a kagyló átvizsgálja őket, hogy nyomokat kapjanak arról, hogy szkriptek vagy sem, és hogyan kezelik mindent megfelelően. Emiatt néhány iránymutatást kell tudni.
- Minden szkriptnek „#! / Bin / bash”
- Minden új sor új parancs
- A megjegyzéssorok egy # -vel kezdődnek
- A parancsokat a ()
A Hash-Bang Hack
Amikor egy shell egy szövegfájlon elemzi a fájlt, akkor a legegyszerűbb módja annak, hogy a fájlt szkriptként azonosítsa az első sorának megadásával:
#! / Bin / bash
Ha másik héjot használ, helyettesítse az utat itt. A megjegyzéssorok hash-ekkel (#) kezdődnek, de a bang (!) És a shell-útvonal hozzáadása után egyfajta hack, amely megkerülni fogja ezt a megjegyzési szabályt, és arra kényszeríti a parancsfájlt, hogy végrehajtja azt a shell-t, amelyet ez a sor mutat.
Új sor = Új parancs
Minden új sort új parancsnak kell tekinteni, vagy egy nagyobb rendszer összetevőjének. Ha a / akkor / más utasítások például több sort vesznek át, a rendszer minden összetevője új sorban van. Ne hagyja, hogy a parancssor a következő sorba essen át, mivel ez meg tudja szüntetni az előző parancsot, és hibát okozhat a következő sorban. Ha a szövegszerkesztő ezt teszi, akkor kapcsolja ki a szöveget a biztonságos oldalról. Kikapcsolhatja a szövegburkolást a nano-bitben, az ALT + L-hez ütve.
Hozzászólás Gyakran #
Ha egy vonalat indít egy # -vel, a vonal figyelmen kívül marad. Ez egy megjegyzések sorává válik, ahol emlékeztetheti magát az előző parancs kimenetére, vagy a következő parancsra. Ismét kapcsolja ki a szöveges csomagolást, vagy szakítsa meg a megjegyzéseket több sorba, amelyek mindegyike hash-val kezdődik. A sok hozzászólás használata jó gyakorlat, mivel lehetővé teszi, hogy Ön és más emberek könnyebben csípessék a szkriptet. Az egyetlen kivétel a fent említett Hash-Bang hack, így ne kövesse a # s-t! ;-)
A Parentheses által vezérelt parancsok
Régebbi napokban a parancsok helyettesítései egyetlen kullancsjelzéssel (', megosztja a ~ kulcsot). Még nem fogunk megérinteni ezt, de mivel a legtöbb ember elindul és felfedezi az alapokat, azt valószínűleg jó ötlet megemlíteni, hogy zárójeleket kell használnia. Ez főleg azért van, mert amikor a parancsokat más parancsokba helyezi - jobb zárójelek működnek.
Az első szkripted
Kezdjük egy egyszerű szkripttel, amely lehetővé teszi a fájlok másolását és a dátumok hozzáadását a fájlnév végéhez. Hívjuk „datecp” -nek. Először nézzük meg, hogy ez a név ütközik-e valamivel:
Láthatjuk, hogy a parancsnak nincs kimenete, így mindannyian beállítjuk, hogy ezt a nevet használjuk.
Hozzunk létre egy üres fájlt a ~ / bin mappában:
érintse meg a ~ / bin / datecp elemet
És most változtassuk meg az engedélyt, mielőtt elfelejtenénk:
Akkor kezdjük építeni a forgatókönyvet. Nyissa meg a fájlt a szövegszerkesztőben. Mint mondtam, szeretem a nano egyszerűségét.
nano ~ / bin / datecp
És menjünk előre, és tegyük az előfeltétel első sorába, és egy megjegyzést arról, hogy mit csinál ez a szkript.
Ezután állítsuk be a változót. Ha valaha is algebrát vittél, valószínűleg tudja, hogy mi az. A változó lehetővé teszi számunkra az információk tárolását és a vele kapcsolatos dolgokat. A változók máshol is hivatkozhatnak. Vagyis a nevük megjelenítése helyett tárolt tartalmukat fogják megjeleníteni. Később elmondhatja, hogy ugyanazt a változót különböző információk tárolására, és az azt követő utasításokra is felhasználhatja az új információkat. Ez egy igazán divatos helyőrző.
Mit teszünk ki változóból? Nos, tároljuk a dátumot és az időt! Ehhez felhívjuk a dátum parancsot.
Tekintse meg az alábbi képernyőképet a dátumparancs kimenetének elkészítéséhez:
Láthatjuk, hogy a% -kal kezdődő különböző változók hozzáadásával megváltoztathatja a parancs kimenetét a kívánt értékre. További információért nézze meg a dátumparancs kézi oldalát.
Használjuk a dátumparancs utolsó utolsó iterációját, „dátum +% m_% d_% y-% H.% M.% S”, és használd ezt a szkriptünkben.
Ha most menteni szeretnénk ezt a forgatókönyvet, futtathatnánk, és megadná nekünk a dátumparancsot, mint azt várnánk:
De csináljunk valami mást. Adjunk meg egy változó nevet, mint például a date_formatted ehhez a parancshoz. Ennek megfelelő szintaxisa a következő:
változó = $ (parancs -opciók argumentumok)
És számunkra ez így épülne:
date_formatted = $ (dátum +% m_% d_% y-% H.% M.% S)
Ezt nevezzük parancs-helyettesítésnek. Alapvetően elmondjuk a bash-nak, hogy amikor a „date_formatted” változó megjelenik, a zárójelben lévő parancsot futtassa. Ezután a változó neve helyett a "date_formatted" helyett a parancsok által megadott kimenetet kell megjeleníteni..
Íme egy példa script és annak kimenete:
Ne feledje, hogy a kimenetben két szóköz van. Az echo parancs idézetein belüli tér és a változó előtti tér egyaránt megjelenik. Ne használjon tereket, ha nem akarja, hogy megjelenjenek. Ne feledje, hogy a hozzáadott „echo” sor nélkül a parancsfájl semmilyen kimenetet nem ad.
Térjünk vissza a szkriptünkhöz. Add hozzá a parancs másolási részébe.
cp -iv $ 1 $ 2. $ date_formatted
Ezzel a -i és -v opciókkal meghívjuk a másolási parancsot. Az előbbi kérni fogja, hogy ellenőrizze a fájlt, mielőtt felülírná a fájlt, és ez utóbbi megjeleníti, hogy mi van a parancssorban.
Ezután láthatjuk, hogy hozzáadtam a „$ 1” opciót. A szkriptelés során egy dollárjel ($), amelyet egy szám követ, a parancsfájl számozott argumentumát jelzi, amikor meghívást kapott. Például a következő parancsban:
cp -iv Trogdor2.mp3 csengőhang.mp3
Az első argumentum a „Trogdor2.mp3”, a második érv pedig „csengőhang.mp3”.
Visszatekintve a szkriptünkre, láthatjuk, hogy két érvre hivatkozunk:
Ez azt jelenti, hogy a parancsfájl futtatásakor két argumentumot kell adnunk ahhoz, hogy a parancsfájl helyesen működjön. Az első argumentum, az $ 1, a másolandó fájl, és helyettesíti a „cp -iv” parancs első argumentumát.
A második argumentum, a $ 2 ugyanazon parancs kimeneti fájlaként fog működni. De láthatjuk, hogy ez más. Hozzáadtunk egy időszakot, és a „date_formatted” változót felülről hivatkoztuk. Kíváncsi, hogy mi ez?
Az alábbiak szerint történik, amikor a parancsfájl fut:
Láthatjuk, hogy a kimeneti fájl fel van tüntetve, mint amit a 2 dollárért írtam, majd egy időszakot, majd a dátumparancs kimenetét! Értelme van, igaz?
Most, amikor futtatom a datecp parancsot, akkor futtatja ezt a parancsfájlt, és lehetővé teszi, hogy bármilyen fájlt másoljak egy új helyre, és automatikusan hozzáadjam a dátumot és időt a fájlnév végéhez. Hasznos az archiváláshoz!
A Shell-parancsfájlok központi eleme az operációs rendszered működésének. Nem kell új programozási nyelvet tanulnia, hogy ez történjen. Próbálja meg a parancsfájlokat néhány alapvető parancs segítségével otthon és kezdje el gondolni, hogy mit használhat.
Szkript? Kérjen tanácsot a kezdőknek? Ossza meg gondolatait a megjegyzésekben! Ennél a sorozatnál több van!