Mi a Shell szkript és miért érdemes használni?

Mi a Shell szkript és miért érdemes használni?

A shell egy Linux vagy Unix operációs rendszeren belüli program, amely lehetővé teszi a rendszer által végrehajtandó parancsok megadását. Amikor egy terminál ablakot megnyitnak egy linuxos számítógépen, elindítja a parancsértelmező felületet bemutató shell programot. Ezt a felületet parancssori felületnek nevezik. Amikor parancsot ad meg, azt a shell hajtja végre, és a kimenet megjelenik a képernyőn.





Amellett, hogy interaktív módon tudja elfogadni és végrehajtani a parancsokat, a shell végrehajthatja a fájlban tárolt parancsokat is. Ez a végrehajtási mód az úgynevezett shell scriptelés , és ebben a cikkben a shell scriptelés alapjaival foglalkozunk.





1. A héj története

A hetvenes években kezdődött a Unix, volt egy shell program, az úgynevezett V6 Shell Ken Thomson fejlesztette ki. Ez egy interaktív héj volt, és hiányzott a szkriptelési képessége.





Ezt követte a Bourne Shell 1977 -ben, és ma is használatban marad a gyökér fiókot. Ez a héj olyan szkriptképességeket adott hozzá, amelyek az évek során a gyakorlatban rendkívül hasznosnak bizonyultak.

A héj további fejlesztése az 1980 -as években számos népszerű héjváltozatot eredményezett, amelyek közül a legnépszerűbbek a C-Shell és a Korn Shell . Mindegyik kagyló saját szintaxist hozott, amely bizonyos esetekben drasztikusan különbözött az eredeti héjtól.



Manapság az egyik legnépszerűbb kagyló a Bash Shell . Bash azt jelenti Bourne-Again-Shell és az eredeti Bourne Shell jelentősen javított változata.

kapcsolja be a zseblámpát kapcsolja be a zseblámpát

Ebben a cikkben a shell parancsfájlokat írjuk le a Bash Shell .





2. Shell -szkript végrehajtása

Hogyan hajthat végre shell parancsfájlt? Egyszerű. Csak adja át a parancsfájl elérési útját argumentumként a héjnak:

Minta shell script:





echo 'hello world'

Futtassa a következőképpen:

$ bash hello.sh
# prints
hello world

Jegyzet: A héj megköveteli, hogy a sorokat LF karakterekkel fejezzék be (Line-Feed). Ha a shell parancsfájlját Windows rendszerre írja, és közvetlenül Linux rendszeren próbálja végrehajtani, akkor hibákba ütközhet. A Windows a CR-LF kombinációt (Carriage-Return-Line-Feed) használja a vonalvégződéshez. Ezt csak LF -re kell átalakítani. Ellenőrizze a Windows szerkesztőben, hogyan lehet ezt megtenni.

Van egy másik módja annak, hogy egy parancsfájlt közvetlenül parancsként futtassunk. Illessze be a következő sort (a hashbang deklaráció) a shell -szkript első soraként.

oké google meg akarom hallgatni
#!/bin/bash

Ezzel a változással az egyszerű shell parancsfájlunk a következő:

#!/bin/bash
echo 'hello world'

Most a következőképpen kell végrehajtania a parancsfájlt:

$ chmod +x hello.sh

Ezen a ponton közvetlenül végrehajthatja a parancsfájlt anélkül, hogy kifejezetten hivatkoznia kellene a héjra.

$ hello.sh
# prints
hello world

Nézzük most a shell parancsfájlok használatának néhány előnyét.

3. Feladat automatizálása

A shell parancsfájlok használatának első előnye a gyakran végrehajtott feladatok automatizálása. Tegyük fel, hogy van egy feladata, amelyet minden nap el kell végeznie. Ha minden nap több parancsot kell végrehajtania a linux rendszeren, ezeket a parancsokat fájlban tárolhatja, és futtathatja a parancsfájlt. Például:

  • Archiváljon és töltsön fel egy fájlt vagy mappát minden nap a felhőtároló létesítmény mint például az S3.
  • Tömörítse a naplófájlokat, amelyek naponta nőnek.
  • Töltse le a részvényárakat, elemezze a lekért adatokat, és küldjön e -mailt vagy SMS -t, ha bizonyos feltételek teljesülnek (túl magas vagy túl alacsony árak).

4. Több parancs kombinálása

A gyakori feladatok automatizálása mellett előnyös lehet az is, ha több parancsszekvenciát egyetlen parancsba kombinálhat. Egy parancs megjegyzése sokkal egyszerűbb, mint több parancs, nem is beszélve a végrehajtás sorrendjéről.

Példa lehet a Linux operációs rendszer indítási sorrendje. A rendszerindítás részeként az operációs rendszer számos parancsot hajt végre, hogy a rendszer megfelelő állapotba kerüljön. Ezek a parancsok valójában shell parancsfájlok, amelyek a /stb Könyvtár. Ha megnéz egy ilyen parancsfájlt, rájön a rendszer indításának összetettségére, amelyet esetleg kézzel kellett végrehajtania shell parancsfájlok hiányában.

Az alábbi példa egy shell parancsfájl, /etc/profile , amelyet a rendszer minden alkalommal végrehajt, amikor egy felhasználó bejelentkezik. Képzelje el, hogy kézzel írja be ezeket a parancsokat!

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).
if [ '$PS1' ]; then
if [ '$BASH' ] && [ '$BASH' != '/bin/sh' ]; then
# The file bash.bashrc already sets the default PS1.
# PS1='h:w$ '
if [ -f /etc/bash.bashrc ]; then
. /etc/bash.bashrc
fi
else
if [ '`id -u`' -eq 0 ]; then
PS1='# '
else
PS1='$ '
fi
fi
fi
# The default umask is now handled by pam_umask.
# See pam_umask(8) and /etc/login.defs.
if [ -d /etc/profile.d ]; then
for i in /etc/profile.d/*.sh; do
if [ -r $i ]; then
. $i
fi
done
unset i
fi

5. Könnyebb fejleszteni

Lehetséges ugyanazokat a műveleteket végrehajtani, mint egy shell script egy normál programban, amely C/C ++ nyelven íródott. Azonban sokkal könnyebb shell parancsfájlt írni és hibakeresni, mint egy C/C ++ programmal. Különösen a rendszergazdai feladatokhoz, amelyek magukban foglalják a külső parancsok végrehajtását, fájlok és könyvtárak létrehozását és eltávolítását, a kimenetek átirányítását stb.

A C/C ++ programok sokkal alacsonyabb szintű működésre alkalmasak, mint például a rendszerhívások meghívása, az adatstruktúrák manipulálása stb.

6. Átláthatóság

A shell parancsfájl szöveges fájlként könnyen megtekinthető, és ellenőrizheti, hogy milyen műveleteket hajt végre. Ezzel szemben az egyetlen módja annak, hogy valaha is megtudja, mit csinál egy olyan program, amely olyan nyelven íródott, mint a C/C ++ (és végrehajtható fájlba van fordítva), ha úgy dönt, hogy elmondja, vagy hozzáfér a forráskódhoz. Például ellenőrizheti, hogy a shell parancsfájl nem törli -e a fájlokat, és ha szüksége van ezekre a fájlokra, másolhatja őket egy másik helyre.

Sokkal könnyebb diagnosztizálni a problémákat a parancsfájlokkal, mint a szokásos programokkal, mivel megnézheti a forráskódot. Ez a szkript sikertelen, mert nem létezik könyvtár? Megnézheti a szkript kódját, és létrehozhatja a könyvtárat (bár egy jól viselkedő shell scriptnek ellenőriznie kell és létre kell hoznia, hogy elkerülje az ilyen hibákat).

7. Hordozható

NAK NEK shell script átvihető más Unix és Unix-szerű operációs rendszerekre, és végrehajtható (ha maga a héj is jelen van). Még akkor is, ha egy shell szkriptet más architektúrákról, például x86, MIPS, Sparc stb.

A C/C ++ programot csak akkor lehet átvinni és használni egy másik rendszeren, ha lemásolja a forráskódot, felépíti a programot és megpróbálja futtatni. Még akkor is előfordulhat, hogy nem működik a várt módon, ha architektúra-specifikus kódot használ.

Most, hogy fogalma van arról, hogy mi a shell szkript és milyen előnyökkel jár, nem szeretné ezeket használni a feladataihoz? Milyen problémákkal találkozott használatuk során? Kérjük, tudassa velünk az alábbi megjegyzésekben.

hogyan lehet visszafordítani a képkeresést a telefonon
Részvény Részvény Csipog Email 5 tipp a VirtualBox Linux gépek feltöltéséhez

Unod már a virtuális gépek által kínált gyenge teljesítményt? Íme, mit kell tennie a VirtualBox teljesítményének növelése érdekében.

Olvassa tovább
Kapcsolódó témák
  • Programozás
  • Linux Bash Shell
A szerzőről Jay Sridhar(17 cikk megjelent) Bővebben: Jay Sridhar

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, véleményeket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide