Ce este Shell Scripting și de ce ar trebui să-l utilizați

Ce este Shell Scripting și de ce ar trebui să-l utilizați

Shell-ul este un program dintr-un sistem de operare Linux sau Unix care vă permite să introduceți comenzi pentru executare de către sistem. Când se deschide o fereastră de terminal pe un computer Linux, pornește programul shell care prezintă o interfață pentru a introduce comenzi. Această interfață este cunoscută sub numele de interfață de linie de comandă. Când este introdusă o comandă, aceasta este executată de shell și ieșirea este afișată pe ecran.





Pe lângă faptul că poate accepta și executa comenzi interactiv, shell-ul poate executa și comenzi stocate într-un fișier. Acest mod de execuție este cunoscut sub numele de scripting shell și, în acest articol, acoperim elementele de bază ale scriptului shell.





1. Istoria cochiliei

Începând cu Unix în anii 1970, a existat un program shell numit V6 Shell dezvoltat de Ken Thomson. Era un shell interactiv și nu avea capacitatea de script.





A fost urmat de Bourne Shell în 1977 și rămâne în uz astăzi ca shell implicit pentru rădăcină cont. Acest shell a adăugat abilități de scriptare care s-au dovedit extrem de utile în practică de-a lungul anilor.

Dezvoltarea ulterioară a shell-ului în anii 1980 a dat naștere la multe variante populare de shell, dintre care cele mai populare au fost C-Shell si Korn Shell . Fiecare dintre aceste cochilii și-a adus propria sintaxă care, în anumite cazuri, a fost drastic diferită de cochilia inițială.



Una dintre cele mai populare scoici de astăzi este Bash Shell . Bash înseamnă Bourne-Again-Shell și este o variantă foarte îmbunătățită a originalului Bourne Shell.

cum să mutați fișiere între Google Drive

În acest articol, descriem scripturile shell pentru coaja Bash .





2. Executarea unui script Shell

Cum executați un script shell? Simplu. Treceți doar calea scriptului ca argument către shell:

Un exemplu de script shell:





echo 'hello world'

Rulați-l după cum urmează:

$ bash hello.sh
# prints
hello world

Notă: Shell-ul necesită terminarea liniilor cu caractere LF (Line-Feed). Dacă scrieți scriptul shell pe Windows și încercați să-l executați direct pe un sistem Linux, este posibil să aveți erori. Windows utilizează combinația CR-LF (Carriage-Return-Line-Feed) pentru terminarea liniei. Acest lucru trebuie convertit numai în LF. Verificați editorul Windows pentru modalități de a face acest lucru.

Există o altă modalitate de a executa un script shell direct ca o comandă. Introduceți următoarea linie ( hashbang declarație) ca prima linie a scriptului dvs. shell.

computerul nu recunoaște telefonul când este conectat
#!/bin/bash

Odată cu această modificare, scriptul nostru simplu de shell este acum:

#!/bin/bash
echo 'hello world'

Acum, trebuie să faceți fișierul script executabil după cum urmează:

$ chmod +x hello.sh

În acest moment, puteți executa fișierul script direct fără a fi nevoie să faceți referire la shell în mod explicit.

$ hello.sh
# prints
hello world

Să analizăm acum câteva avantaje ale utilizării scripturilor shell.

3. Automatizarea sarcinilor

Primul avantaj al utilizării scripturilor shell este automatizarea sarcinilor executate frecvent. Să presupunem că aveți o sarcină pe care trebuie să o efectuați în fiecare zi. Dacă trebuie să executați mai multe comenzi pe sistemul dvs. Linux în fiecare zi, puteți stoca aceste comenzi într-un fișier și puteți rula scriptul. Exemplele includ:

  • Arhivați și încărcați în fiecare zi un fișier sau un folder pe un facilitate de stocare în cloud precum S3.
  • Comprimați fișierele jurnal care tind să crească în fiecare zi.
  • Obțineți prețurile acțiunilor, analizați datele preluate și declanșați un e-mail sau un SMS când sunt îndeplinite anumite condiții (prețuri prea mari sau prea mici).

4. Combinarea mai multor comenzi

În plus față de automatizarea sarcinilor frecvente, s-ar putea să fie de asemenea avantajos că puteți combina mai multe secvențe de comenzi într-o singură comandă. Amintirea unei singure comenzi este mult mai simplă decât mai multe comenzi, ca să nu mai vorbim de ordinea în care trebuie executate.

Un exemplu ar fi secvența de pornire a sistemului de operare Linux în sine. Ca parte a pornirii, sistemul de operare execută o serie de comenzi pentru a aduce sistemul într-o stare adecvată. Aceste comenzi sunt de fapt scripturi shell care trăiesc sub / etc director. Dacă aruncați o privire asupra unuia dintre aceste scripturi shell, veți realiza complexitatea pornirii unui sistem, pe care ar fi trebuit să le efectuați manual, în absența scripturilor shell.

Următorul este un exemplu de script shell, / etc / profile , care se execută de fiecare dată când un utilizator se conectează. Imaginați-vă că tastați aceste comenzi manual!

# /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. Mai ușor de dezvoltat

Este posibil să efectuați aceleași acțiuni ca un script shell într-un program obișnuit scris în C / C ++. Cu toate acestea, este mult mai ușor să scrieți și să depanați un script shell decât un program C / C ++. Mai ales pentru sarcinile de administrare a sistemului care includ executarea comenzilor externe, crearea și eliminarea fișierelor și directoarelor, redirecționarea ieșirii etc.

Programele C / C ++ sunt mai bune pentru un nivel mult mai scăzut de funcționare, cum ar fi invocarea apelurilor de sistem, manipularea structurilor de date etc.

6. Transparență

Un script shell, în virtutea faptului că este un fișier text, poate fi vizualizat cu ușurință pentru a verifica ce acțiuni efectuează. În schimb, singurul mod în care veți ști ce face un program scris într-un limbaj precum C / C ++ (și compilat într-un executabil) este dacă alege să vă spună sau dacă aveți acces la codul sursă. De exemplu, puteți verifica dacă un script shell șterge orice fișiere și, dacă aveți nevoie de aceste fișiere, le puteți copia într-o altă locație.

De asemenea, este mult mai ușor să diagnosticați problemele cu scripturile shell, mai degrabă decât programele obișnuite, deoarece puteți privi codul sursă. Scriptul eșuează deoarece un director nu există? Puteți căuta în codul scriptului și puteți crea directorul (deși un script shell bine comportat ar trebui să îl verifice și să îl creeze pentru a evita astfel de erori).

7. Portabil

LA script shell poate fi transferat către alte sisteme de operare Unix și similare Unix și executat (dacă shell-ul în sine este prezent). Chiar și atunci când transferați un script shell din diferite arhitecturi, cum ar fi x86, MIPS, Sparc, etc, scripturile shell sunt mult mai portabile decât programele C / C ++.

Singurul mod în care un program C / C ++ poate fi transferat și utilizat pe alt sistem este să copiați codul sursă, să construiți programul și să încercați să îl rulați. Chiar și atunci, este posibil să nu funcționeze așa cum era de așteptat dacă folosește cod specific arhitecturii.

Acum, că aveți o idee despre ce sunt scripturile shell și numeroasele avantaje ale acestora, nu ați dori să le folosiți pentru sarcinile dvs.? Cu ce ​​probleme v-ați confruntat atunci când le folosiți? Vă rugăm să ne anunțați în comentariile de mai jos.

Cum văd o imagine a casei mele pe Google Earth?
Acțiune Acțiune Tweet E-mail 5 sfaturi pentru a vă supraîncărca mașinile VirtualBox Linux

V-ați săturat de slaba performanță oferită de mașinile virtuale? Iată ce ar trebui să faceți pentru a vă spori performanța VirtualBox.

Citiți în continuare
Subiecte asemănătoare
  • Programare
  • Linux Bash Shell
Despre autor Jay Sridhar(17 articole publicate) Mai multe de la Jay Sridhar

Aboneaza-te la newsletter-ul nostru

Alăturați-vă newsletter-ului pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Faceți clic aici pentru a vă abona