logo

Exemple de script Shell

Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.



Ce este Shell Script?

Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

Utilizări ale scripturilor Shell

Mai jos sunt câteva utilizări comune ale Shell Script:

  • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
  • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
  • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

Exemple de script Shell în Linux

1) Ce indică shebang (#!) de la începutul unui script shell?

The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.



De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

ordonați aleatoriu în sql
shebang

shebang

În acest exemplu:



  • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

2) Cum rulați un script shell din linia de comandă?

Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

  • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
chmod +x myscript.sh>
  • Executați scriptul folosind numele său de fișier:
./myscript.sh>

Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

vim myscript.sh>

#!/bin/bash
# Acest script imprimă techcodeview.com pe terminal
echo techcodeview.com

printeaza numele

printeaza numele

Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

4) Explicați scopul comenzii echo în scripting shell.

The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

434

comanda ecou

În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

5) Cum puteți atribui o valoare unei variabile într-un script shell?

Variabilelor li se atribuie valori folosind operatorul de atribuire =.

De exemplu:

#!/bin/bash
# Atribuirea unei valori unei variabile
nume=Jayesh
varsta=21
echo $nume $varsta

Explicaţie:

  • Variabilei nume i se atribuie valoarea Jayesh.
  • Variabilei de vârstă i se atribuie valoarea 21.
  • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

435

6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

Creați un nume de script `example.sh`.

#!/bin/bash
# Solicitați utilizatorului numele
echo Cum te cheamă?
citeste numele
# Salutați utilizatorul
echo Bună ziua, $name! Încântat de cunoştinţă.

Explicaţie:

  • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
  • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
  • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
  • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
  • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

436

7) Cum adăugați comentarii la un script shell?

Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

#!/bin/bash
# Acesta este un comentariu care explică scopul scriptului
ecou gfg

8) Creați un script shell care verifică dacă un fișier există în directorul curent.

Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

#!/bin/bash
fișier=example.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
echo Fișierul există: $fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
  4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
  5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
  6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
  7. fi: Această linie marchează sfârșitul instrucțiunii if.
Găsirea fișierului

Găsirea fișierului

9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

  • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
  • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

#!/bin/bash

abcd=Bună ziua
echo ‘$abcd’ # Ieșire: $abcd
echo $abcd # Ieșire: Bună

10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum , etc., unde reprezintă primul argument, reprezintă al doilea argument și așa mai departe.

De exemplu: Dacă numele nostru script în `example.sh`

#!/bin/bash

echo Nume script:

Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

Ce este Shell Script?

Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

Utilizări ale scripturilor Shell

Mai jos sunt câteva utilizări comune ale Shell Script:

  • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
  • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
  • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

Exemple de script Shell în Linux

1) Ce indică shebang (#!) de la începutul unui script shell?

The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

shebang

shebang

În acest exemplu:

  • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

2) Cum rulați un script shell din linia de comandă?

Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

  • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
chmod +x myscript.sh>
  • Executați scriptul folosind numele său de fișier:
./myscript.sh>

Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

vim myscript.sh>

#!/bin/bash
# Acest script imprimă techcodeview.com pe terminal
echo techcodeview.com

printeaza numele

printeaza numele

Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

4) Explicați scopul comenzii echo în scripting shell.

The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

434

comanda ecou

În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

5) Cum puteți atribui o valoare unei variabile într-un script shell?

Variabilelor li se atribuie valori folosind operatorul de atribuire =.

De exemplu:

#!/bin/bash
# Atribuirea unei valori unei variabile
nume=Jayesh
varsta=21
echo $nume $varsta

Explicaţie:

  • Variabilei nume i se atribuie valoarea Jayesh.
  • Variabilei de vârstă i se atribuie valoarea 21.
  • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

435

6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

Creați un nume de script `example.sh`.

#!/bin/bash
# Solicitați utilizatorului numele
echo Cum te cheamă?
citeste numele
# Salutați utilizatorul
echo Bună ziua, $name! Încântat de cunoştinţă.

Explicaţie:

  • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
  • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
  • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
  • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
  • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

436

7) Cum adăugați comentarii la un script shell?

Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

#!/bin/bash
# Acesta este un comentariu care explică scopul scriptului
ecou gfg

8) Creați un script shell care verifică dacă un fișier există în directorul curent.

Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

#!/bin/bash
fișier=example.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
echo Fișierul există: $fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
  4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
  5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
  6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
  7. fi: Această linie marchează sfârșitul instrucțiunii if.
Găsirea fișierului

Găsirea fișierului

9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

  • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
  • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

#!/bin/bash

abcd=Bună ziua
echo ‘$abcd’ # Ieșire: $abcd
echo $abcd # Ieșire: Bună

10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

De exemplu: Dacă numele nostru script în `example.sh`

#!/bin/bash

echo Nume script: $0
echo Primul argument: $1
echo Al doilea argument: $2

Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

cli argumente

cli argumente

11) Cum folosești bucla for pentru a itera o listă de valori?

Creați un nume de script `example.sh`.

#!/bin/bash

fructe=(curmal cu mere banane cireșe)
pentru fructe în ${fruits[@]}; do
echo Fructul curent: $fruct
Terminat

Explicaţie:

Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

  • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
  • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
  • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
  • do: Acest cuvânt cheie marchează începutul corpului buclei.
  • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
  • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
pentru buclă

pentru buclă

12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

Creați un nume de script `example.sh`.

#!/bin/bash

echo Introduceți un număr (N):
citeste N
suma=0
pentru (( i=1; i<=$N; i++ )); do
suma=$((suma + i))
Terminat
echo Suma numerelor întregi de la 1 la $N este: $sum

Explicaţie:
Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

  1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
  2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
  3. În interiorul buclei, se întâmplă următoarele lucruri:
    • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
    • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
    • Dacă condiția este adevărată, corpul buclei se execută.
    • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
  4. După fiecare iterație, i++ crește valoarea lui i cu 1.
  5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
  6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

439

13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

Creați un nume de script `word_count.sh`

#!/bin/bash

echo Introduceți cuvântul de căutat:
citește cuvânt_țintă
echo Introduceți numele fișierului:
citește numele fișierului
count=$(grep -o -w $target_word $filename | wc -l)
echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

Explicaţie:

  • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
  • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
  • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
  • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
  • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
    • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
    • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
    • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
    • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

441

14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

  • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
  • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

dacă [ condiție ]; apoi
# Comenzi de executat dacă condiția este adevărată
elif [ altă_condiție ]; apoi
# Comenzi de executat dacă another_condition este adevărată (opțional)
altfel
# Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
fi

Explicaţie:

  • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
  • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
  • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
  • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
  • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

16) Cum citești linii dintr-un fișier într-un script shell?

La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

#!/bin/bash
fișier=/home/jayeshkumar/jayesh.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
în timp ce IFS= citește linia -r; do
echo Line read: $line
# Adăugați aici logica dvs. de procesare
terminat <$fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
  4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
    • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
    • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
  5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
  6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
  7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
  8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
  9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
  10. fi: Această linie marchează sfârșitul instrucțiunii if.
fișier de citire

fișier de citire

Aici am folosit ` pwd ` pentru a obține calea directorului curent.

17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

Iată scenariul carecalcula factorialula unui număr dat.

#!/bin/bash
# Definiți o funcție pentru a calcula factorial
calculate_factorial() {
num=$1
fapt=1
pentru ((i=1; i<=num; i++)); do
fapt=$((fapt * i))
Terminat
echo $fapt
}
# Solicitați utilizatorului să introducă un număr
echo Introduceți un număr:
citește input_num
# Apelați funcția calculate_factorial cu numărul de intrare
factorial_result=$(calculate_factorial $numă_input)
# Afișează rezultatul factorial
echo Factorial al $numar_intrare este: $rezultat_factorial

Explicaţie:

  1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
  2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
  3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
  4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
  5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
  6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
  7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
  8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
Factorială

Factorială

18) Cum gestionați semnale precum Ctrl+C într-un script shell?

Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

#!/bin/bash
curăță() {
echo Scriptul întrerupt. Se efectuează curățarea...
# Adăugați aici acțiunile de curățare
iesirea 1
}
# Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
curatare capcane SIGINT
# Restul scenariului dvs
ecou Alergare...
dormi 10
ecou Terminat.

Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

Explicaţie:

  1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
  2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
  3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
  4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

446

19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortați $fișier_input | uniq> $fișier_ieșire
echo Liniile duplicate au fost eliminate cu succes.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
  3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
  4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
  5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
  6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
eliminarea liniilor duplicate

eliminarea liniei duplicate

Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

20) Scrieți un script care generează o parolă aleatorie sigură.

Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

#!/bin/bash
# Funcție pentru a genera o parolă aleatorie
genera_parola() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Apelați funcția și stocați parola generată
parola=$(generate_password)
echo Parolă generată: $parolă

Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
    • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
  3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
  4. În cele din urmă, parola generată este afișată folosind echo.

448

21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

#!/bin/bash
directory=/calea/la/directorul/dvs
total_size=$(du -csh $directory | grep total | awk „{print $1}”)
echo Dimensiunea totală a fișierelor din $directory: $total_size

Explicaţie:

  1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
  3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
    • -c: Produceți un total mare.
    • -s: Afișează numai dimensiunea totală a directorului specificat.
    • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
  4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
  5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
  6. Dimensiunea totală calculată este stocată în variabila total_size.
  7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
Dimensiunea totală a fișierelor

Dimensiunea totală a fișierelor

Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

Caracteristică `dacă`Staiftement Declarația „elif”.
Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

Să înțelegem printr-un exemplu.

#!/bin/bash
număr=5
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
altfel
echo $numar nu este mai mare de 10
fi
ecou ——–
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
elif [ $număr -eq 10 ]; apoi
echo $numar este egal cu 10
altfel
echo $numar este mai mic decat 10
fi

Explicaţie:

În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

if_elif diferenta

if_elif diferenta

23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

Iată sintaxa de bază a unei bucle while:

în timp ce [condiție]; do
# Comenzi de executat
Terminat

Explicaţie:

  1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
  2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
  3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

Exemplu: Dacă vrem să tipărim numere de la 1 la 5

#!/bin/bash
contor=1
while [ $counter -le 5 ]; do
echo Număr: $contor
contor=$((contor + 1))
Terminat

Explicaţie:

  • Variabila contor este setată la 1.
  • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
  • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
  • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
buclă while

buclă while

24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi
echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi
echo Fișiere goale în $directory:
găsiți $directory -type f -empty

Explicaţie:

  1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
  2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
  3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
  4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
  5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
  6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
  7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
  8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
  9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
  10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
  11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
  12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
Găsirea fișierelor goale

Găsirea fișierelor goale

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

25) Care este scopul comenzii de citire în scripting shell?

Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

Sintaxa comenzii de citire:

read variable_name>

Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

#!/bin/bash
echo Vă rugăm să introduceți numele dvs.:
citeste numele
echo Bună ziua, $name!

453

citește numele

În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi

echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi

cd $director || iesirea 1

pentru fișier în *; do
if [ -f $fișier ]; apoi
nume nou=$(echo $fișier | tr „A-Z” „a-z”)
[ $file != $newname ] && mv $file $newname
fi
Terminat

Explicaţie:

  1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
  3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
  4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
  5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
  6. f i: Aceasta marchează sfârșitul primei declarații if.
  7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
  8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
  9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
  10. fi : marchează sfârșitul celei de-a doua declarații if.
  11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
  12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
  13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
  14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
  15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
  16. fi : marchează sfârșitul declarației interne if.
  17. Terminat : marchează sfârșitul buclei.

454

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

27) Cum puteți utiliza operații aritmetice într-un script shell?

Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

  1. Expansiune aritmetică ($((…)))
  2. Folosind comanda expr
  3. Folosind comanda let

Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

#!/bin/bash
num1=10
num2=5

#Extindere aritmetică ($((…)))

rezultat=$((num1 + num2))
echo Suma: $rezultat

#Utilizarea comenzii expr

suma=$(expr $num1 + $num2)
echo Sumă: $sumă

#Folosind comanda let

fie suma = num1 + num2
echo Sumă: $sumă

Explicaţie:

  1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
  3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
  4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
  5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
  6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
  7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
  8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
  9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
  10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
  11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
aritmetic

aritmetic

28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

#!/bin/bash
gazdă=$1″
if [ -z $gazdă ]; apoi
echo Utilizare: $0
iesirea 1
fi
ping -c 4 $gazdă

dacă [ $? -eq 0]; apoi
echo $host este accesibil.
altfel
echo $host nu este accesibil.
fi

Explicaţie:

  1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
  2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
  3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
  4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

456

Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

#!/bin/bash
# Declarați o matrice
matrice=(3 56 24 89 67)

# Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

max=${array[0]}

# Iterați prin matrice

pentru num în ${array[@]}; do

# Comparați fiecare element cu maximul actual

dacă ((num> max)); apoi
max=$num
fi
Terminat

# Tipăriți valoarea maximă

echo Elementul maxim din tablou este: $max

Explicaţie:

  1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
  3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
  4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
  5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
  6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
  7. ` Terminat `: Bucla `for` este închisă.
  8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
461

cel mai mare număr

30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

#!/bin/bash

# Declarați o matrice

matrice=(1 65 22 19 94)

# Inițializați o variabilă pentru a stoca suma

suma=0

# Iterați prin matrice și adăugați fiecare element la sumă

pentru num în ${array[@]}; do
am=$((am + am))
Terminat

# Imprimați suma

echo Suma elementelor din tablou este: $sum

Explicaţie:

` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

` Terminat `: ` pentru ` bucla este închisă.

`echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

462

Suma elementelor

Aflați mai multe despre scripturile Shell

Concluzie

Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.




echo Primul argument:
echo Al doilea argument:

Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

cli argumente

cli argumente

11) Cum folosești bucla for pentru a itera o listă de valori?

Creați un nume de script `example.sh`.

#!/bin/bash

fructe=(curmal cu mere banane cireșe)
pentru fructe în ${fruits[@]}; do
echo Fructul curent: $fruct
Terminat

Explicaţie:

Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

  • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
  • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
  • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
  • do: Acest cuvânt cheie marchează începutul corpului buclei.
  • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
  • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
pentru buclă

pentru buclă

12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

Creați un nume de script `example.sh`.

#!/bin/bash

echo Introduceți un număr (N):
citeste N
suma=0
pentru (( i=1; i<=$N; i++ )); do
suma=$((suma + i))
Terminat
echo Suma numerelor întregi de la 1 la $N este: $sum

Explicaţie:
Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

  1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
  2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
  3. În interiorul buclei, se întâmplă următoarele lucruri:
    • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
    • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
    • Dacă condiția este adevărată, corpul buclei se execută.
    • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
  4. După fiecare iterație, i++ crește valoarea lui i cu 1.
  5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
  6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

439

13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

Creați un nume de script `word_count.sh`

#!/bin/bash

echo Introduceți cuvântul de căutat:
citește cuvânt_țintă
echo Introduceți numele fișierului:
citește numele fișierului
count=$(grep -o -w $target_word $filename | wc -l)
echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

Explicaţie:

  • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
  • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
  • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
  • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
  • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
    • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
    • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
    • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
    • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

441

14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

  • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
  • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

dacă [ condiție ]; apoi
# Comenzi de executat dacă condiția este adevărată
elif [ altă_condiție ]; apoi
# Comenzi de executat dacă another_condition este adevărată (opțional)
altfel
# Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
fi

Explicaţie:

  • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
  • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
  • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
  • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
  • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

16) Cum citești linii dintr-un fișier într-un script shell?

La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

#!/bin/bash
fișier=/home/jayeshkumar/jayesh.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
în timp ce IFS= citește linia -r; do
echo Line read: $line
# Adăugați aici logica dvs. de procesare
terminat <$fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
  4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
    • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
    • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
  5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
  6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
  7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
  8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
  9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
  10. fi: Această linie marchează sfârșitul instrucțiunii if.
fișier de citire

fișier de citire

Aici am folosit ` pwd ` pentru a obține calea directorului curent.

17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

Iată scenariul carecalcula factorialula unui număr dat.

#!/bin/bash
# Definiți o funcție pentru a calcula factorial
calculate_factorial() {
num=
fapt=1
pentru ((i=1; i<=num; i++)); do
fapt=$((fapt * i))
Terminat
echo $fapt
}
# Solicitați utilizatorului să introducă un număr
echo Introduceți un număr:
citește input_num
# Apelați funcția calculate_factorial cu numărul de intrare
factorial_result=$(calculate_factorial $numă_input)
# Afișează rezultatul factorial
echo Factorial al $numar_intrare este: $rezultat_factorial

Explicaţie:

  1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
  2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
  3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
  4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
  5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
  6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
  7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
  8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
Factorială

Factorială

18) Cum gestionați semnale precum Ctrl+C într-un script shell?

Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

#!/bin/bash
curăță() {
echo Scriptul întrerupt. Se efectuează curățarea...
# Adăugați aici acțiunile de curățare
iesirea 1
}
# Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
curatare capcane SIGINT
# Restul scenariului dvs
ecou Alergare...
dormi 10
ecou Terminat.

Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

gol 0

Explicaţie:

  1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
  2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
  3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
  4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

446

19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortați $fișier_input | uniq> $fișier_ieșire
echo Liniile duplicate au fost eliminate cu succes.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
  3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
  4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
  5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
  6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
eliminarea liniilor duplicate

eliminarea liniei duplicate

Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

20) Scrieți un script care generează o parolă aleatorie sigură.

Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

#!/bin/bash
# Funcție pentru a genera o parolă aleatorie
genera_parola() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Apelați funcția și stocați parola generată
parola=$(generate_password)
echo Parolă generată: $parolă

Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
    • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
  3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
  4. În cele din urmă, parola generată este afișată folosind echo.

448

21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

#!/bin/bash
directory=/calea/la/directorul/dvs
total_size=$(du -csh $directory | grep total | awk „{print }”)
echo Dimensiunea totală a fișierelor din $directory: $total_size

Explicaţie:

  1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
  3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
    • -c: Produceți un total mare.
    • -s: Afișează numai dimensiunea totală a directorului specificat.
    • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
  4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
  5. awk „{print }” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
  6. Dimensiunea totală calculată este stocată în variabila total_size.
  7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
Dimensiunea totală a fișierelor

Dimensiunea totală a fișierelor

Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

Caracteristică `dacă`Staiftement Declarația „elif”.
Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

Să înțelegem printr-un exemplu.

#!/bin/bash
număr=5
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
altfel
echo $numar nu este mai mare de 10
fi
ecou ——–
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
elif [ $număr -eq 10 ]; apoi
echo $numar este egal cu 10
altfel
echo $numar este mai mic decat 10
fi

Explicaţie:

În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

if_elif diferenta

if_elif diferenta

23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

Iată sintaxa de bază a unei bucle while:

în timp ce [condiție]; do
# Comenzi de executat
Terminat

Explicaţie:

  1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
  2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
  3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

Exemplu: Dacă vrem să tipărim numere de la 1 la 5

#!/bin/bash
contor=1
while [ $counter -le 5 ]; do
echo Număr: $contor
contor=$((contor + 1))
Terminat

Explicaţie:

  • Variabila contor este setată la 1.
  • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
  • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
  • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
buclă while

buclă while

24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

#!/bin/bash
director=″
if [ -z $director ]; apoi
echo Utilizare:

Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

Ce este Shell Script?

Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

Utilizări ale scripturilor Shell

Mai jos sunt câteva utilizări comune ale Shell Script:

  • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
  • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
  • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

Exemple de script Shell în Linux

1) Ce indică shebang (#!) de la începutul unui script shell?

The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

shebang

shebang

În acest exemplu:

  • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

2) Cum rulați un script shell din linia de comandă?

Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

  • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
chmod +x myscript.sh>
  • Executați scriptul folosind numele său de fișier:
./myscript.sh>

Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

vim myscript.sh>

#!/bin/bash
# Acest script imprimă techcodeview.com pe terminal
echo techcodeview.com

printeaza numele

printeaza numele

Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

4) Explicați scopul comenzii echo în scripting shell.

The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

434

comanda ecou

În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

5) Cum puteți atribui o valoare unei variabile într-un script shell?

Variabilelor li se atribuie valori folosind operatorul de atribuire =.

De exemplu:

#!/bin/bash
# Atribuirea unei valori unei variabile
nume=Jayesh
varsta=21
echo $nume $varsta

Explicaţie:

  • Variabilei nume i se atribuie valoarea Jayesh.
  • Variabilei de vârstă i se atribuie valoarea 21.
  • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

435

6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

Creați un nume de script `example.sh`.

#!/bin/bash
# Solicitați utilizatorului numele
echo Cum te cheamă?
citeste numele
# Salutați utilizatorul
echo Bună ziua, $name! Încântat de cunoştinţă.

Explicaţie:

  • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
  • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
  • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
  • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
  • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

436

7) Cum adăugați comentarii la un script shell?

Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

#!/bin/bash
# Acesta este un comentariu care explică scopul scriptului
ecou gfg

8) Creați un script shell care verifică dacă un fișier există în directorul curent.

Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

#!/bin/bash
fișier=example.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
echo Fișierul există: $fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
  4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
  5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
  6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
  7. fi: Această linie marchează sfârșitul instrucțiunii if.
Găsirea fișierului

Găsirea fișierului

9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

  • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
  • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

#!/bin/bash

abcd=Bună ziua
echo ‘$abcd’ # Ieșire: $abcd
echo $abcd # Ieșire: Bună

10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

De exemplu: Dacă numele nostru script în `example.sh`

#!/bin/bash

echo Nume script: $0
echo Primul argument: $1
echo Al doilea argument: $2

Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

cli argumente

cli argumente

11) Cum folosești bucla for pentru a itera o listă de valori?

Creați un nume de script `example.sh`.

#!/bin/bash

fructe=(curmal cu mere banane cireșe)
pentru fructe în ${fruits[@]}; do
echo Fructul curent: $fruct
Terminat

Explicaţie:

Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

  • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
  • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
  • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
  • do: Acest cuvânt cheie marchează începutul corpului buclei.
  • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
  • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
pentru buclă

pentru buclă

12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

Creați un nume de script `example.sh`.

#!/bin/bash

echo Introduceți un număr (N):
citeste N
suma=0
pentru (( i=1; i<=$N; i++ )); do
suma=$((suma + i))
Terminat
echo Suma numerelor întregi de la 1 la $N este: $sum

Explicaţie:
Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

  1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
  2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
  3. În interiorul buclei, se întâmplă următoarele lucruri:
    • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
    • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
    • Dacă condiția este adevărată, corpul buclei se execută.
    • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
  4. După fiecare iterație, i++ crește valoarea lui i cu 1.
  5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
  6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

439

13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

Creați un nume de script `word_count.sh`

#!/bin/bash

echo Introduceți cuvântul de căutat:
citește cuvânt_țintă
echo Introduceți numele fișierului:
citește numele fișierului
count=$(grep -o -w $target_word $filename | wc -l)
echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

Explicaţie:

  • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
  • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
  • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
  • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
  • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
    • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
    • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
    • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
    • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

441

14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

  • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
  • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

dacă [ condiție ]; apoi
# Comenzi de executat dacă condiția este adevărată
elif [ altă_condiție ]; apoi
# Comenzi de executat dacă another_condition este adevărată (opțional)
altfel
# Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
fi

Explicaţie:

  • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
  • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
  • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
  • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
  • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

16) Cum citești linii dintr-un fișier într-un script shell?

La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

#!/bin/bash
fișier=/home/jayeshkumar/jayesh.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
în timp ce IFS= citește linia -r; do
echo Line read: $line
# Adăugați aici logica dvs. de procesare
terminat <$fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
  4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
    • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
    • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
  5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
  6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
  7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
  8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
  9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
  10. fi: Această linie marchează sfârșitul instrucțiunii if.
fișier de citire

fișier de citire

Aici am folosit ` pwd ` pentru a obține calea directorului curent.

17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

Iată scenariul carecalcula factorialula unui număr dat.

#!/bin/bash
# Definiți o funcție pentru a calcula factorial
calculate_factorial() {
num=$1
fapt=1
pentru ((i=1; i<=num; i++)); do
fapt=$((fapt * i))
Terminat
echo $fapt
}
# Solicitați utilizatorului să introducă un număr
echo Introduceți un număr:
citește input_num
# Apelați funcția calculate_factorial cu numărul de intrare
factorial_result=$(calculate_factorial $numă_input)
# Afișează rezultatul factorial
echo Factorial al $numar_intrare este: $rezultat_factorial

Explicaţie:

  1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
  2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
  3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
  4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
  5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
  6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
  7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
  8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
Factorială

Factorială

18) Cum gestionați semnale precum Ctrl+C într-un script shell?

Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

#!/bin/bash
curăță() {
echo Scriptul întrerupt. Se efectuează curățarea...
# Adăugați aici acțiunile de curățare
iesirea 1
}
# Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
curatare capcane SIGINT
# Restul scenariului dvs
ecou Alergare...
dormi 10
ecou Terminat.

Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

Explicaţie:

  1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
  2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
  3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
  4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

446

19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortați $fișier_input | uniq> $fișier_ieșire
echo Liniile duplicate au fost eliminate cu succes.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
  3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
  4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
  5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
  6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
eliminarea liniilor duplicate

eliminarea liniei duplicate

Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

20) Scrieți un script care generează o parolă aleatorie sigură.

Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

#!/bin/bash
# Funcție pentru a genera o parolă aleatorie
genera_parola() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Apelați funcția și stocați parola generată
parola=$(generate_password)
echo Parolă generată: $parolă

Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
    • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
  3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
  4. În cele din urmă, parola generată este afișată folosind echo.

448

21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

#!/bin/bash
directory=/calea/la/directorul/dvs
total_size=$(du -csh $directory | grep total | awk „{print $1}”)
echo Dimensiunea totală a fișierelor din $directory: $total_size

Explicaţie:

  1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
  3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
    • -c: Produceți un total mare.
    • -s: Afișează numai dimensiunea totală a directorului specificat.
    • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
  4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
  5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
  6. Dimensiunea totală calculată este stocată în variabila total_size.
  7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
Dimensiunea totală a fișierelor

Dimensiunea totală a fișierelor

Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

Caracteristică `dacă`Staiftement Declarația „elif”.
Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

Să înțelegem printr-un exemplu.

#!/bin/bash
număr=5
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
altfel
echo $numar nu este mai mare de 10
fi
ecou ——–
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
elif [ $număr -eq 10 ]; apoi
echo $numar este egal cu 10
altfel
echo $numar este mai mic decat 10
fi

Explicaţie:

În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

if_elif diferenta

if_elif diferenta

23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

Iată sintaxa de bază a unei bucle while:

în timp ce [condiție]; do
# Comenzi de executat
Terminat

Explicaţie:

  1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
  2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
  3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

Exemplu: Dacă vrem să tipărim numere de la 1 la 5

#!/bin/bash
contor=1
while [ $counter -le 5 ]; do
echo Număr: $contor
contor=$((contor + 1))
Terminat

Explicaţie:

  • Variabila contor este setată la 1.
  • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
  • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
  • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
buclă while

buclă while

24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi
echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi
echo Fișiere goale în $directory:
găsiți $directory -type f -empty

Explicaţie:

  1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
  2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
  3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
  4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
  5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
  6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
  7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
  8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
  9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
  10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
  11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
  12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
Găsirea fișierelor goale

Găsirea fișierelor goale

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

25) Care este scopul comenzii de citire în scripting shell?

Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

Sintaxa comenzii de citire:

read variable_name>

Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

#!/bin/bash
echo Vă rugăm să introduceți numele dvs.:
citeste numele
echo Bună ziua, $name!

453

citește numele

În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi

echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi

cd $director || iesirea 1

pentru fișier în *; do
if [ -f $fișier ]; apoi
nume nou=$(echo $fișier | tr „A-Z” „a-z”)
[ $file != $newname ] && mv $file $newname
fi
Terminat

Explicaţie:

  1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
  3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
  4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
  5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
  6. f i: Aceasta marchează sfârșitul primei declarații if.
  7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
  8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
  9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
  10. fi : marchează sfârșitul celei de-a doua declarații if.
  11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
  12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
  13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
  14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
  15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
  16. fi : marchează sfârșitul declarației interne if.
  17. Terminat : marchează sfârșitul buclei.

454

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

27) Cum puteți utiliza operații aritmetice într-un script shell?

Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

  1. Expansiune aritmetică ($((…)))
  2. Folosind comanda expr
  3. Folosind comanda let

Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

#!/bin/bash
num1=10
num2=5

#Extindere aritmetică ($((…)))

rezultat=$((num1 + num2))
echo Suma: $rezultat

#Utilizarea comenzii expr

suma=$(expr $num1 + $num2)
echo Sumă: $sumă

#Folosind comanda let

fie suma = num1 + num2
echo Sumă: $sumă

Explicaţie:

  1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
  3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
  4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
  5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
  6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
  7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
  8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
  9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
  10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
  11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
aritmetic

aritmetic

28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

#!/bin/bash
gazdă=$1″
if [ -z $gazdă ]; apoi
echo Utilizare: $0
iesirea 1
fi
ping -c 4 $gazdă

dacă [ $? -eq 0]; apoi
echo $host este accesibil.
altfel
echo $host nu este accesibil.
fi

Explicaţie:

  1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
  2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
  3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
  4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

456

Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

#!/bin/bash
# Declarați o matrice
matrice=(3 56 24 89 67)

# Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

max=${array[0]}

# Iterați prin matrice

pentru num în ${array[@]}; do

# Comparați fiecare element cu maximul actual

dacă ((num> max)); apoi
max=$num
fi
Terminat

# Tipăriți valoarea maximă

echo Elementul maxim din tablou este: $max

Explicaţie:

  1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
  3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
  4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
  5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
  6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
  7. ` Terminat `: Bucla `for` este închisă.
  8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
461

cel mai mare număr

30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

#!/bin/bash

# Declarați o matrice

matrice=(1 65 22 19 94)

# Inițializați o variabilă pentru a stoca suma

suma=0

# Iterați prin matrice și adăugați fiecare element la sumă

pentru num în ${array[@]}; do
am=$((am + am))
Terminat

# Imprimați suma

echo Suma elementelor din tablou este: $sum

Explicaţie:

` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

` Terminat `: ` pentru ` bucla este închisă.

`echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

462

Suma elementelor

Aflați mai multe despre scripturile Shell

Concluzie

Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.




iesirea 1
fi

dacă [ ! -d $director ]; apoi
echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi
echo Fișiere goale în $directory:
găsiți $directory -type f -empty

Explicaţie:

  1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
  2. ` director=″ `: Această linie atribuie primul argument de linie de comandă (notat cu ) variabilei ` director `.
  3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
  4. ` echo Utilizare:

    Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

    Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

    Ce este Shell Script?

    Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

    Utilizări ale scripturilor Shell

    Mai jos sunt câteva utilizări comune ale Shell Script:

    • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
    • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
    • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

    Exemple de script Shell în Linux

    1) Ce indică shebang (#!) de la începutul unui script shell?

    The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

    De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

    shebang

    shebang

    În acest exemplu:

    • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

    2) Cum rulați un script shell din linia de comandă?

    Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

    • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
    chmod +x myscript.sh>
    • Executați scriptul folosind numele său de fișier:
    ./myscript.sh>

    Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

    3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

    Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

    vim myscript.sh>

    #!/bin/bash
    # Acest script imprimă techcodeview.com pe terminal
    echo techcodeview.com

    printeaza numele

    printeaza numele

    Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

    4) Explicați scopul comenzii echo în scripting shell.

    The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

    434

    comanda ecou

    În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

    5) Cum puteți atribui o valoare unei variabile într-un script shell?

    Variabilelor li se atribuie valori folosind operatorul de atribuire =.

    De exemplu:

    #!/bin/bash
    # Atribuirea unei valori unei variabile
    nume=Jayesh
    varsta=21
    echo $nume $varsta

    Explicaţie:

    • Variabilei nume i se atribuie valoarea Jayesh.
    • Variabilei de vârstă i se atribuie valoarea 21.
    • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

    435

    6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

    Creați un nume de script `example.sh`.

    #!/bin/bash
    # Solicitați utilizatorului numele
    echo Cum te cheamă?
    citeste numele
    # Salutați utilizatorul
    echo Bună ziua, $name! Încântat de cunoştinţă.

    Explicaţie:

    • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
    • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
    • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
    • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
    • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

    436

    7) Cum adăugați comentarii la un script shell?

    Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

    #!/bin/bash
    # Acesta este un comentariu care explică scopul scriptului
    ecou gfg

    8) Creați un script shell care verifică dacă un fișier există în directorul curent.

    Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

    #!/bin/bash
    fișier=example.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    echo Fișierul există: $fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
    4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
    5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
    6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
    7. fi: Această linie marchează sfârșitul instrucțiunii if.
    Găsirea fișierului

    Găsirea fișierului

    9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

    Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

    • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
    • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

    #!/bin/bash

    abcd=Bună ziua
    echo ‘$abcd’ # Ieșire: $abcd
    echo $abcd # Ieșire: Bună

    10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

    Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

    De exemplu: Dacă numele nostru script în `example.sh`

    #!/bin/bash

    echo Nume script: $0
    echo Primul argument: $1
    echo Al doilea argument: $2

    Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

    cli argumente

    cli argumente

    11) Cum folosești bucla for pentru a itera o listă de valori?

    Creați un nume de script `example.sh`.

    #!/bin/bash

    fructe=(curmal cu mere banane cireșe)
    pentru fructe în ${fruits[@]}; do
    echo Fructul curent: $fruct
    Terminat

    Explicaţie:

    Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

    • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
    • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
    • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
    • do: Acest cuvânt cheie marchează începutul corpului buclei.
    • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
    • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
    pentru buclă

    pentru buclă

    12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

    Creați un nume de script `example.sh`.

    #!/bin/bash

    echo Introduceți un număr (N):
    citeste N
    suma=0
    pentru (( i=1; i<=$N; i++ )); do
    suma=$((suma + i))
    Terminat
    echo Suma numerelor întregi de la 1 la $N este: $sum

    Explicaţie:
    Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

    1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
    2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
    3. În interiorul buclei, se întâmplă următoarele lucruri:
      • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
      • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
      • Dacă condiția este adevărată, corpul buclei se execută.
      • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
    4. După fiecare iterație, i++ crește valoarea lui i cu 1.
    5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
    6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

    439

    13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

    Creați un nume de script `word_count.sh`

    #!/bin/bash

    echo Introduceți cuvântul de căutat:
    citește cuvânt_țintă
    echo Introduceți numele fișierului:
    citește numele fișierului
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

    Explicaţie:

    • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
    • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
    • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
    • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
    • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
      • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
      • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
      • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
      • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

    441

    14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

    Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

    • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
    • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

    15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

    Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

    Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

    dacă [ condiție ]; apoi
    # Comenzi de executat dacă condiția este adevărată
    elif [ altă_condiție ]; apoi
    # Comenzi de executat dacă another_condition este adevărată (opțional)
    altfel
    # Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
    fi

    Explicaţie:

    • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
    • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
    • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
    • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
    • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

    16) Cum citești linii dintr-un fișier într-un script shell?

    La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

    #!/bin/bash
    fișier=/home/jayeshkumar/jayesh.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    în timp ce IFS= citește linia -r; do
    echo Line read: $line
    # Adăugați aici logica dvs. de procesare
    terminat <$fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
    4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
      • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
      • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
    5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
    6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
    7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
    8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
    9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
    10. fi: Această linie marchează sfârșitul instrucțiunii if.
    fișier de citire

    fișier de citire

    Aici am folosit ` pwd ` pentru a obține calea directorului curent.

    17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

    Iată scenariul carecalcula factorialula unui număr dat.

    #!/bin/bash
    # Definiți o funcție pentru a calcula factorial
    calculate_factorial() {
    num=$1
    fapt=1
    pentru ((i=1; i<=num; i++)); do
    fapt=$((fapt * i))
    Terminat
    echo $fapt
    }
    # Solicitați utilizatorului să introducă un număr
    echo Introduceți un număr:
    citește input_num
    # Apelați funcția calculate_factorial cu numărul de intrare
    factorial_result=$(calculate_factorial $numă_input)
    # Afișează rezultatul factorial
    echo Factorial al $numar_intrare este: $rezultat_factorial

    Explicaţie:

    1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
    2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
    3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
    4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
    5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
    6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
    7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
    8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
    Factorială

    Factorială

    18) Cum gestionați semnale precum Ctrl+C într-un script shell?

    Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

    #!/bin/bash
    curăță() {
    echo Scriptul întrerupt. Se efectuează curățarea...
    # Adăugați aici acțiunile de curățare
    iesirea 1
    }
    # Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
    curatare capcane SIGINT
    # Restul scenariului dvs
    ecou Alergare...
    dormi 10
    ecou Terminat.

    Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

    Explicaţie:

    1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
    2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
    3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
    4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

    446

    19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

    Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortați $fișier_input | uniq> $fișier_ieșire
    echo Liniile duplicate au fost eliminate cu succes.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
    3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
    4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
    5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
    6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
    eliminarea liniilor duplicate

    eliminarea liniei duplicate

    Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

    20) Scrieți un script care generează o parolă aleatorie sigură.

    Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

    #!/bin/bash
    # Funcție pentru a genera o parolă aleatorie
    genera_parola() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Apelați funcția și stocați parola generată
    parola=$(generate_password)
    echo Parolă generată: $parolă

    Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
      • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
    3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
    4. În cele din urmă, parola generată este afișată folosind echo.

    448

    21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

    Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

    #!/bin/bash
    directory=/calea/la/directorul/dvs
    total_size=$(du -csh $directory | grep total | awk „{print $1}”)
    echo Dimensiunea totală a fișierelor din $directory: $total_size

    Explicaţie:

    1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
    3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
      • -c: Produceți un total mare.
      • -s: Afișează numai dimensiunea totală a directorului specificat.
      • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
    4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
    5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
    6. Dimensiunea totală calculată este stocată în variabila total_size.
    7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
    Dimensiunea totală a fișierelor

    Dimensiunea totală a fișierelor

    Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

    22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

    Caracteristică `dacă`Staiftement Declarația „elif”.
    Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
    utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
    numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
    Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
    Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

    Să înțelegem printr-un exemplu.

    #!/bin/bash
    număr=5
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    altfel
    echo $numar nu este mai mare de 10
    fi
    ecou ——–
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    elif [ $număr -eq 10 ]; apoi
    echo $numar este egal cu 10
    altfel
    echo $numar este mai mic decat 10
    fi

    Explicaţie:

    În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

    if_elif diferenta

    if_elif diferenta

    23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

    O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

    Iată sintaxa de bază a unei bucle while:

    în timp ce [condiție]; do
    # Comenzi de executat
    Terminat

    Explicaţie:

    1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
    2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
    3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

    Exemplu: Dacă vrem să tipărim numere de la 1 la 5

    #!/bin/bash
    contor=1
    while [ $counter -le 5 ]; do
    echo Număr: $contor
    contor=$((contor + 1))
    Terminat

    Explicaţie:

    • Variabila contor este setată la 1.
    • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
    • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
    • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
    buclă while

    buclă while

    24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

    Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi
    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi
    echo Fișiere goale în $directory:
    găsiți $directory -type f -empty

    Explicaţie:

    1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
    2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
    3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
    4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
    5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
    6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
    7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
    8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
    9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
    10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
    11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
    12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
    Găsirea fișierelor goale

    Găsirea fișierelor goale

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

    25) Care este scopul comenzii de citire în scripting shell?

    Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

    Sintaxa comenzii de citire:

    read variable_name>

    Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

    #!/bin/bash
    echo Vă rugăm să introduceți numele dvs.:
    citeste numele
    echo Bună ziua, $name!

    453

    citește numele

    În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

    26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi

    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi

    cd $director || iesirea 1

    pentru fișier în *; do
    if [ -f $fișier ]; apoi
    nume nou=$(echo $fișier | tr „A-Z” „a-z”)
    [ $file != $newname ] && mv $file $newname
    fi
    Terminat

    Explicaţie:

    1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
    3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
    4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
    5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
    6. f i: Aceasta marchează sfârșitul primei declarații if.
    7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
    8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
    9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
    10. fi : marchează sfârșitul celei de-a doua declarații if.
    11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
    12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
    13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
    14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
    15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
    16. fi : marchează sfârșitul declarației interne if.
    17. Terminat : marchează sfârșitul buclei.

    454

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

    27) Cum puteți utiliza operații aritmetice într-un script shell?

    Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

    1. Expansiune aritmetică ($((…)))
    2. Folosind comanda expr
    3. Folosind comanda let

    Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

    #!/bin/bash
    num1=10
    num2=5

    #Extindere aritmetică ($((…)))

    rezultat=$((num1 + num2))
    echo Suma: $rezultat

    #Utilizarea comenzii expr

    suma=$(expr $num1 + $num2)
    echo Sumă: $sumă

    #Folosind comanda let

    fie suma = num1 + num2
    echo Sumă: $sumă

    Explicaţie:

    1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
    3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
    4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
    5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
    6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
    7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
    8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
    10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
    11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    aritmetic

    aritmetic

    28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

    Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

    #!/bin/bash
    gazdă=$1″
    if [ -z $gazdă ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi
    ping -c 4 $gazdă

    dacă [ $? -eq 0]; apoi
    echo $host este accesibil.
    altfel
    echo $host nu este accesibil.
    fi

    Explicaţie:

    1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
    2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
    3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
    4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

    456

    Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

    29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

    Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

    #!/bin/bash
    # Declarați o matrice
    matrice=(3 56 24 89 67)

    # Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

    max=${array[0]}

    # Iterați prin matrice

    pentru num în ${array[@]}; do

    # Comparați fiecare element cu maximul actual

    dacă ((num> max)); apoi
    max=$num
    fi
    Terminat

    # Tipăriți valoarea maximă

    echo Elementul maxim din tablou este: $max

    Explicaţie:

    1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
    3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
    4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
    5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
    6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
    7. ` Terminat `: Bucla `for` este închisă.
    8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
    461

    cel mai mare număr

    30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

    #!/bin/bash

    # Declarați o matrice

    matrice=(1 65 22 19 94)

    # Inițializați o variabilă pentru a stoca suma

    suma=0

    # Iterați prin matrice și adăugați fiecare element la sumă

    pentru num în ${array[@]}; do
    am=$((am + am))
    Terminat

    # Imprimați suma

    echo Suma elementelor din tablou este: $sum

    Explicaţie:

    ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

    ` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

    ` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

    ` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

    ` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

    ` Terminat `: ` pentru ` bucla este închisă.

    `echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

    462

    Suma elementelor

    Aflați mai multe despre scripturile Shell

    Concluzie

    Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.



    `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
  5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
  6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
  7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
  8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
  9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
  10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
  11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
  12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
Găsirea fișierelor goale

Găsirea fișierelor goale

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

25) Care este scopul comenzii de citire în scripting shell?

Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

Sintaxa comenzii de citire:

read variable_name>

Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

#!/bin/bash
echo Vă rugăm să introduceți numele dvs.:
citeste numele
echo Bună ziua, $name!

453

citește numele

În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

elimina ultimul caracter din șir

26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

#!/bin/bash
director=″
if [ -z $director ]; apoi
echo Utilizare:

Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

Ce este Shell Script?

Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

Utilizări ale scripturilor Shell

Mai jos sunt câteva utilizări comune ale Shell Script:

  • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
  • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
  • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

Exemple de script Shell în Linux

1) Ce indică shebang (#!) de la începutul unui script shell?

The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

shebang

shebang

În acest exemplu:

  • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

2) Cum rulați un script shell din linia de comandă?

Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

  • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
chmod +x myscript.sh>
  • Executați scriptul folosind numele său de fișier:
./myscript.sh>

Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

vim myscript.sh>

#!/bin/bash
# Acest script imprimă techcodeview.com pe terminal
echo techcodeview.com

printeaza numele

printeaza numele

Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

4) Explicați scopul comenzii echo în scripting shell.

The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

434

comanda ecou

În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

5) Cum puteți atribui o valoare unei variabile într-un script shell?

Variabilelor li se atribuie valori folosind operatorul de atribuire =.

De exemplu:

#!/bin/bash
# Atribuirea unei valori unei variabile
nume=Jayesh
varsta=21
echo $nume $varsta

Explicaţie:

  • Variabilei nume i se atribuie valoarea Jayesh.
  • Variabilei de vârstă i se atribuie valoarea 21.
  • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

435

6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

Creați un nume de script `example.sh`.

#!/bin/bash
# Solicitați utilizatorului numele
echo Cum te cheamă?
citeste numele
# Salutați utilizatorul
echo Bună ziua, $name! Încântat de cunoştinţă.

Explicaţie:

  • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
  • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
  • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
  • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
  • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

436

7) Cum adăugați comentarii la un script shell?

Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

#!/bin/bash
# Acesta este un comentariu care explică scopul scriptului
ecou gfg

8) Creați un script shell care verifică dacă un fișier există în directorul curent.

Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

#!/bin/bash
fișier=example.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
echo Fișierul există: $fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
  4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
  5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
  6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
  7. fi: Această linie marchează sfârșitul instrucțiunii if.
Găsirea fișierului

Găsirea fișierului

9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

  • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
  • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

#!/bin/bash

abcd=Bună ziua
echo ‘$abcd’ # Ieșire: $abcd
echo $abcd # Ieșire: Bună

10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

De exemplu: Dacă numele nostru script în `example.sh`

#!/bin/bash

echo Nume script: $0
echo Primul argument: $1
echo Al doilea argument: $2

Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

cli argumente

cli argumente

11) Cum folosești bucla for pentru a itera o listă de valori?

Creați un nume de script `example.sh`.

#!/bin/bash

fructe=(curmal cu mere banane cireșe)
pentru fructe în ${fruits[@]}; do
echo Fructul curent: $fruct
Terminat

Explicaţie:

Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

  • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
  • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
  • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
  • do: Acest cuvânt cheie marchează începutul corpului buclei.
  • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
  • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
pentru buclă

pentru buclă

12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

Creați un nume de script `example.sh`.

#!/bin/bash

echo Introduceți un număr (N):
citeste N
suma=0
pentru (( i=1; i<=$N; i++ )); do
suma=$((suma + i))
Terminat
echo Suma numerelor întregi de la 1 la $N este: $sum

Explicaţie:
Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

  1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
  2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
  3. În interiorul buclei, se întâmplă următoarele lucruri:
    • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
    • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
    • Dacă condiția este adevărată, corpul buclei se execută.
    • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
  4. După fiecare iterație, i++ crește valoarea lui i cu 1.
  5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
  6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

439

13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

Creați un nume de script `word_count.sh`

#!/bin/bash

echo Introduceți cuvântul de căutat:
citește cuvânt_țintă
echo Introduceți numele fișierului:
citește numele fișierului
count=$(grep -o -w $target_word $filename | wc -l)
echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

Explicaţie:

  • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
  • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
  • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
  • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
  • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
    • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
    • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
    • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
    • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

441

14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

  • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
  • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

dacă [ condiție ]; apoi
# Comenzi de executat dacă condiția este adevărată
elif [ altă_condiție ]; apoi
# Comenzi de executat dacă another_condition este adevărată (opțional)
altfel
# Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
fi

Explicaţie:

  • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
  • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
  • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
  • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
  • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

16) Cum citești linii dintr-un fișier într-un script shell?

La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

#!/bin/bash
fișier=/home/jayeshkumar/jayesh.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
în timp ce IFS= citește linia -r; do
echo Line read: $line
# Adăugați aici logica dvs. de procesare
terminat <$fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
  4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
    • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
    • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
  5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
  6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
  7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
  8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
  9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
  10. fi: Această linie marchează sfârșitul instrucțiunii if.
fișier de citire

fișier de citire

Aici am folosit ` pwd ` pentru a obține calea directorului curent.

17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

Iată scenariul carecalcula factorialula unui număr dat.

#!/bin/bash
# Definiți o funcție pentru a calcula factorial
calculate_factorial() {
num=$1
fapt=1
pentru ((i=1; i<=num; i++)); do
fapt=$((fapt * i))
Terminat
echo $fapt
}
# Solicitați utilizatorului să introducă un număr
echo Introduceți un număr:
citește input_num
# Apelați funcția calculate_factorial cu numărul de intrare
factorial_result=$(calculate_factorial $numă_input)
# Afișează rezultatul factorial
echo Factorial al $numar_intrare este: $rezultat_factorial

Explicaţie:

  1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
  2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
  3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
  4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
  5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
  6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
  7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
  8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
Factorială

Factorială

18) Cum gestionați semnale precum Ctrl+C într-un script shell?

Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

#!/bin/bash
curăță() {
echo Scriptul întrerupt. Se efectuează curățarea...
# Adăugați aici acțiunile de curățare
iesirea 1
}
# Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
curatare capcane SIGINT
# Restul scenariului dvs
ecou Alergare...
dormi 10
ecou Terminat.

Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

Explicaţie:

  1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
  2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
  3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
  4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

446

19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortați $fișier_input | uniq> $fișier_ieșire
echo Liniile duplicate au fost eliminate cu succes.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
  3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
  4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
  5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
  6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
eliminarea liniilor duplicate

eliminarea liniei duplicate

Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

20) Scrieți un script care generează o parolă aleatorie sigură.

Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

#!/bin/bash
# Funcție pentru a genera o parolă aleatorie
genera_parola() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Apelați funcția și stocați parola generată
parola=$(generate_password)
echo Parolă generată: $parolă

Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
    • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
  3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
  4. În cele din urmă, parola generată este afișată folosind echo.

448

21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

#!/bin/bash
directory=/calea/la/directorul/dvs
total_size=$(du -csh $directory | grep total | awk „{print $1}”)
echo Dimensiunea totală a fișierelor din $directory: $total_size

Explicaţie:

  1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
  3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
    • -c: Produceți un total mare.
    • -s: Afișează numai dimensiunea totală a directorului specificat.
    • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
  4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
  5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
  6. Dimensiunea totală calculată este stocată în variabila total_size.
  7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
Dimensiunea totală a fișierelor

Dimensiunea totală a fișierelor

Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

Caracteristică `dacă`Staiftement Declarația „elif”.
Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

Să înțelegem printr-un exemplu.

#!/bin/bash
număr=5
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
altfel
echo $numar nu este mai mare de 10
fi
ecou ——–
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
elif [ $număr -eq 10 ]; apoi
echo $numar este egal cu 10
altfel
echo $numar este mai mic decat 10
fi

Explicaţie:

În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

if_elif diferenta

if_elif diferenta

23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

Iată sintaxa de bază a unei bucle while:

în timp ce [condiție]; do
# Comenzi de executat
Terminat

Explicaţie:

  1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
  2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
  3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

Exemplu: Dacă vrem să tipărim numere de la 1 la 5

#!/bin/bash
contor=1
while [ $counter -le 5 ]; do
echo Număr: $contor
contor=$((contor + 1))
Terminat

Explicaţie:

  • Variabila contor este setată la 1.
  • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
  • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
  • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
buclă while

buclă while

24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi
echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi
echo Fișiere goale în $directory:
găsiți $directory -type f -empty

Explicaţie:

  1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
  2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
  3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
  4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
  5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
  6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
  7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
  8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
  9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
  10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
  11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
  12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
Găsirea fișierelor goale

Găsirea fișierelor goale

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

25) Care este scopul comenzii de citire în scripting shell?

Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

Sintaxa comenzii de citire:

read variable_name>

Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

#!/bin/bash
echo Vă rugăm să introduceți numele dvs.:
citeste numele
echo Bună ziua, $name!

453

citește numele

În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi

echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi

cd $director || iesirea 1

pentru fișier în *; do
if [ -f $fișier ]; apoi
nume nou=$(echo $fișier | tr „A-Z” „a-z”)
[ $file != $newname ] && mv $file $newname
fi
Terminat

Explicaţie:

  1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
  3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
  4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
  5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
  6. f i: Aceasta marchează sfârșitul primei declarații if.
  7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
  8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
  9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
  10. fi : marchează sfârșitul celei de-a doua declarații if.
  11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
  12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
  13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
  14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
  15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
  16. fi : marchează sfârșitul declarației interne if.
  17. Terminat : marchează sfârșitul buclei.

454

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

27) Cum puteți utiliza operații aritmetice într-un script shell?

Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

  1. Expansiune aritmetică ($((…)))
  2. Folosind comanda expr
  3. Folosind comanda let

Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

#!/bin/bash
num1=10
num2=5

#Extindere aritmetică ($((…)))

rezultat=$((num1 + num2))
echo Suma: $rezultat

#Utilizarea comenzii expr

suma=$(expr $num1 + $num2)
echo Sumă: $sumă

#Folosind comanda let

fie suma = num1 + num2
echo Sumă: $sumă

Explicaţie:

  1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
  3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
  4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
  5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
  6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
  7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
  8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
  9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
  10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
  11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
aritmetic

aritmetic

28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

#!/bin/bash
gazdă=$1″
if [ -z $gazdă ]; apoi
echo Utilizare: $0
iesirea 1
fi
ping -c 4 $gazdă

dacă [ $? -eq 0]; apoi
echo $host este accesibil.
altfel
echo $host nu este accesibil.
fi

Explicaţie:

  1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
  2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
  3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
  4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

456

Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

#!/bin/bash
# Declarați o matrice
matrice=(3 56 24 89 67)

# Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

max=${array[0]}

# Iterați prin matrice

pentru num în ${array[@]}; do

# Comparați fiecare element cu maximul actual

dacă ((num> max)); apoi
max=$num
fi
Terminat

# Tipăriți valoarea maximă

echo Elementul maxim din tablou este: $max

Explicaţie:

  1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
  3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
  4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
  5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
  6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
  7. ` Terminat `: Bucla `for` este închisă.
  8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
461

cel mai mare număr

30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

#!/bin/bash

# Declarați o matrice

matrice=(1 65 22 19 94)

# Inițializați o variabilă pentru a stoca suma

suma=0

# Iterați prin matrice și adăugați fiecare element la sumă

pentru num în ${array[@]}; do
am=$((am + am))
Terminat

# Imprimați suma

echo Suma elementelor din tablou este: $sum

Explicaţie:

` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

` Terminat `: ` pentru ` bucla este închisă.

`echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

462

Suma elementelor

Aflați mai multe despre scripturile Shell

Concluzie

Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.




iesirea 1
fi

dacă [ ! -d $director ]; apoi

echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi

cd $director || iesirea 1

pentru fișier în *; do
if [ -f $fișier ]; apoi
nume nou=$(echo $fișier | tr „A-Z” „a-z”)
[ $file != $newname ] && mv $file $newname
fi
Terminat

Explicaţie:

  1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. director=″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
  3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
  4. echo Utilizare:

    Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

    Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

    Ce este Shell Script?

    Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

    Utilizări ale scripturilor Shell

    Mai jos sunt câteva utilizări comune ale Shell Script:

    • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
    • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
    • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

    Exemple de script Shell în Linux

    1) Ce indică shebang (#!) de la începutul unui script shell?

    The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

    De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

    shebang

    shebang

    În acest exemplu:

    • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

    2) Cum rulați un script shell din linia de comandă?

    Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

    • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
    chmod +x myscript.sh>
    • Executați scriptul folosind numele său de fișier:
    ./myscript.sh>

    Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

    3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

    Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

    vim myscript.sh>

    #!/bin/bash
    # Acest script imprimă techcodeview.com pe terminal
    echo techcodeview.com

    printeaza numele

    printeaza numele

    Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

    4) Explicați scopul comenzii echo în scripting shell.

    The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

    434

    comanda ecou

    În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

    5) Cum puteți atribui o valoare unei variabile într-un script shell?

    Variabilelor li se atribuie valori folosind operatorul de atribuire =.

    De exemplu:

    #!/bin/bash
    # Atribuirea unei valori unei variabile
    nume=Jayesh
    varsta=21
    echo $nume $varsta

    Explicaţie:

    • Variabilei nume i se atribuie valoarea Jayesh.
    • Variabilei de vârstă i se atribuie valoarea 21.
    • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

    435

    6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

    Creați un nume de script `example.sh`.

    #!/bin/bash
    # Solicitați utilizatorului numele
    echo Cum te cheamă?
    citeste numele
    # Salutați utilizatorul
    echo Bună ziua, $name! Încântat de cunoştinţă.

    Explicaţie:

    • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
    • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
    • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
    • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
    • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

    436

    7) Cum adăugați comentarii la un script shell?

    Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

    #!/bin/bash
    # Acesta este un comentariu care explică scopul scriptului
    ecou gfg

    8) Creați un script shell care verifică dacă un fișier există în directorul curent.

    Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

    #!/bin/bash
    fișier=example.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    echo Fișierul există: $fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
    4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
    5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
    6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
    7. fi: Această linie marchează sfârșitul instrucțiunii if.
    Găsirea fișierului

    Găsirea fișierului

    9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

    Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

    • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
    • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

    #!/bin/bash

    abcd=Bună ziua
    echo ‘$abcd’ # Ieșire: $abcd
    echo $abcd # Ieșire: Bună

    10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

    Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

    De exemplu: Dacă numele nostru script în `example.sh`

    #!/bin/bash

    echo Nume script: $0
    echo Primul argument: $1
    echo Al doilea argument: $2

    Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

    cli argumente

    cli argumente

    11) Cum folosești bucla for pentru a itera o listă de valori?

    Creați un nume de script `example.sh`.

    #!/bin/bash

    fructe=(curmal cu mere banane cireșe)
    pentru fructe în ${fruits[@]}; do
    echo Fructul curent: $fruct
    Terminat

    Explicaţie:

    Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

    • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
    • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
    • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
    • do: Acest cuvânt cheie marchează începutul corpului buclei.
    • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
    • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
    pentru buclă

    pentru buclă

    12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

    Creați un nume de script `example.sh`.

    #!/bin/bash

    echo Introduceți un număr (N):
    citeste N
    suma=0
    pentru (( i=1; i<=$N; i++ )); do
    suma=$((suma + i))
    Terminat
    echo Suma numerelor întregi de la 1 la $N este: $sum

    Explicaţie:
    Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

    1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
    2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
    3. În interiorul buclei, se întâmplă următoarele lucruri:
      • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
      • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
      • Dacă condiția este adevărată, corpul buclei se execută.
      • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
    4. După fiecare iterație, i++ crește valoarea lui i cu 1.
    5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
    6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

    439

    13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

    Creați un nume de script `word_count.sh`

    #!/bin/bash

    echo Introduceți cuvântul de căutat:
    citește cuvânt_țintă
    echo Introduceți numele fișierului:
    citește numele fișierului
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

    Explicaţie:

    • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
    • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
    • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
    • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
    • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
      • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
      • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
      • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
      • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

    441

    14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

    Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

    • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
    • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

    15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

    Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

    Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

    dacă [ condiție ]; apoi
    # Comenzi de executat dacă condiția este adevărată
    elif [ altă_condiție ]; apoi
    # Comenzi de executat dacă another_condition este adevărată (opțional)
    altfel
    # Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
    fi

    Explicaţie:

    • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
    • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
    • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
    • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
    • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

    16) Cum citești linii dintr-un fișier într-un script shell?

    La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

    #!/bin/bash
    fișier=/home/jayeshkumar/jayesh.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    în timp ce IFS= citește linia -r; do
    echo Line read: $line
    # Adăugați aici logica dvs. de procesare
    terminat <$fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
    4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
      • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
      • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
    5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
    6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
    7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
    8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
    9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
    10. fi: Această linie marchează sfârșitul instrucțiunii if.
    fișier de citire

    fișier de citire

    Aici am folosit ` pwd ` pentru a obține calea directorului curent.

    17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

    Iată scenariul carecalcula factorialula unui număr dat.

    #!/bin/bash
    # Definiți o funcție pentru a calcula factorial
    calculate_factorial() {
    num=$1
    fapt=1
    pentru ((i=1; i<=num; i++)); do
    fapt=$((fapt * i))
    Terminat
    echo $fapt
    }
    # Solicitați utilizatorului să introducă un număr
    echo Introduceți un număr:
    citește input_num
    # Apelați funcția calculate_factorial cu numărul de intrare
    factorial_result=$(calculate_factorial $numă_input)
    # Afișează rezultatul factorial
    echo Factorial al $numar_intrare este: $rezultat_factorial

    Explicaţie:

    1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
    2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
    3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
    4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
    5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
    6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
    7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
    8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
    Factorială

    Factorială

    18) Cum gestionați semnale precum Ctrl+C într-un script shell?

    Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

    #!/bin/bash
    curăță() {
    echo Scriptul întrerupt. Se efectuează curățarea...
    # Adăugați aici acțiunile de curățare
    iesirea 1
    }
    # Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
    curatare capcane SIGINT
    # Restul scenariului dvs
    ecou Alergare...
    dormi 10
    ecou Terminat.

    Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

    Explicaţie:

    1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
    2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
    3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
    4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

    446

    19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

    Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortați $fișier_input | uniq> $fișier_ieșire
    echo Liniile duplicate au fost eliminate cu succes.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
    3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
    4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
    5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
    6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
    eliminarea liniilor duplicate

    eliminarea liniei duplicate

    Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

    20) Scrieți un script care generează o parolă aleatorie sigură.

    Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

    #!/bin/bash
    # Funcție pentru a genera o parolă aleatorie
    genera_parola() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Apelați funcția și stocați parola generată
    parola=$(generate_password)
    echo Parolă generată: $parolă

    Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
      • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
    3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
    4. În cele din urmă, parola generată este afișată folosind echo.

    448

    21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

    Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

    #!/bin/bash
    directory=/calea/la/directorul/dvs
    total_size=$(du -csh $directory | grep total | awk „{print $1}”)
    echo Dimensiunea totală a fișierelor din $directory: $total_size

    Explicaţie:

    1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
    3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
      • -c: Produceți un total mare.
      • -s: Afișează numai dimensiunea totală a directorului specificat.
      • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
    4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
    5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
    6. Dimensiunea totală calculată este stocată în variabila total_size.
    7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
    Dimensiunea totală a fișierelor

    Dimensiunea totală a fișierelor

    Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

    22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

    Caracteristică `dacă`Staiftement Declarația „elif”.
    Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
    utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
    numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
    Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
    Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

    Să înțelegem printr-un exemplu.

    #!/bin/bash
    număr=5
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    altfel
    echo $numar nu este mai mare de 10
    fi
    ecou ——–
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    elif [ $număr -eq 10 ]; apoi
    echo $numar este egal cu 10
    altfel
    echo $numar este mai mic decat 10
    fi

    Explicaţie:

    În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

    if_elif diferenta

    if_elif diferenta

    23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

    O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

    Iată sintaxa de bază a unei bucle while:

    în timp ce [condiție]; do
    # Comenzi de executat
    Terminat

    Explicaţie:

    1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
    2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
    3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

    Exemplu: Dacă vrem să tipărim numere de la 1 la 5

    #!/bin/bash
    contor=1
    while [ $counter -le 5 ]; do
    echo Număr: $contor
    contor=$((contor + 1))
    Terminat

    Explicaţie:

    • Variabila contor este setată la 1.
    • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
    • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
    • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
    buclă while

    buclă while

    24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

    Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi
    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi
    echo Fișiere goale în $directory:
    găsiți $directory -type f -empty

    Explicaţie:

    1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
    2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
    3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
    4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
    5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
    6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
    7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
    8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
    9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
    10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
    11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
    12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
    Găsirea fișierelor goale

    Găsirea fișierelor goale

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

    25) Care este scopul comenzii de citire în scripting shell?

    Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

    Sintaxa comenzii de citire:

    read variable_name>

    Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

    #!/bin/bash
    echo Vă rugăm să introduceți numele dvs.:
    citeste numele
    echo Bună ziua, $name!

    453

    citește numele

    În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

    26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi

    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi

    cd $director || iesirea 1

    pentru fișier în *; do
    if [ -f $fișier ]; apoi
    nume nou=$(echo $fișier | tr „A-Z” „a-z”)
    [ $file != $newname ] && mv $file $newname
    fi
    Terminat

    Explicaţie:

    1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
    3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
    4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
    5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
    6. f i: Aceasta marchează sfârșitul primei declarații if.
    7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
    8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
    9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
    10. fi : marchează sfârșitul celei de-a doua declarații if.
    11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
    12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
    13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
    14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
    15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
    16. fi : marchează sfârșitul declarației interne if.
    17. Terminat : marchează sfârșitul buclei.

    454

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

    27) Cum puteți utiliza operații aritmetice într-un script shell?

    Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

    1. Expansiune aritmetică ($((…)))
    2. Folosind comanda expr
    3. Folosind comanda let

    Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

    #!/bin/bash
    num1=10
    num2=5

    #Extindere aritmetică ($((…)))

    rezultat=$((num1 + num2))
    echo Suma: $rezultat

    #Utilizarea comenzii expr

    suma=$(expr $num1 + $num2)
    echo Sumă: $sumă

    #Folosind comanda let

    fie suma = num1 + num2
    echo Sumă: $sumă

    Explicaţie:

    1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
    3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
    4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
    5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
    6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
    7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
    8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
    10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
    11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    aritmetic

    aritmetic

    28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

    Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

    #!/bin/bash
    gazdă=$1″
    if [ -z $gazdă ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi
    ping -c 4 $gazdă

    dacă [ $? -eq 0]; apoi
    echo $host este accesibil.
    altfel
    echo $host nu este accesibil.
    fi

    Explicaţie:

    1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
    2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
    3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
    4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

    456

    Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

    29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

    Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

    #!/bin/bash
    # Declarați o matrice
    matrice=(3 56 24 89 67)

    # Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

    max=${array[0]}

    # Iterați prin matrice

    pentru num în ${array[@]}; do

    # Comparați fiecare element cu maximul actual

    dacă ((num> max)); apoi
    max=$num
    fi
    Terminat

    # Tipăriți valoarea maximă

    echo Elementul maxim din tablou este: $max

    Explicaţie:

    1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
    3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
    4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
    5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
    6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
    7. ` Terminat `: Bucla `for` este închisă.
    8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
    461

    cel mai mare număr

    30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

    #!/bin/bash

    # Declarați o matrice

    matrice=(1 65 22 19 94)

    # Inițializați o variabilă pentru a stoca suma

    suma=0

    # Iterați prin matrice și adăugați fiecare element la sumă

    pentru num în ${array[@]}; do
    am=$((am + am))
    Terminat

    # Imprimați suma

    echo Suma elementelor din tablou este: $sum

    Explicaţie:

    ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

    ` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

    ` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

    ` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

    ` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

    ` Terminat `: ` pentru ` bucla este închisă.

    `echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

    462

    Suma elementelor

    Aflați mai multe despre scripturile Shell

    Concluzie

    Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.



    : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului (

    Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

    Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

    Ce este Shell Script?

    Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

    Utilizări ale scripturilor Shell

    Mai jos sunt câteva utilizări comune ale Shell Script:

    • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
    • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
    • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

    Exemple de script Shell în Linux

    1) Ce indică shebang (#!) de la începutul unui script shell?

    The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

    De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

    shebang

    shebang

    În acest exemplu:

    • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

    2) Cum rulați un script shell din linia de comandă?

    Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

    • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
    chmod +x myscript.sh>
    • Executați scriptul folosind numele său de fișier:
    ./myscript.sh>

    Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

    3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

    Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

    vim myscript.sh>

    #!/bin/bash
    # Acest script imprimă techcodeview.com pe terminal
    echo techcodeview.com

    printeaza numele

    printeaza numele

    Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

    4) Explicați scopul comenzii echo în scripting shell.

    The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

    434

    comanda ecou

    În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

    5) Cum puteți atribui o valoare unei variabile într-un script shell?

    Variabilelor li se atribuie valori folosind operatorul de atribuire =.

    De exemplu:

    #!/bin/bash
    # Atribuirea unei valori unei variabile
    nume=Jayesh
    varsta=21
    echo $nume $varsta

    Explicaţie:

    • Variabilei nume i se atribuie valoarea Jayesh.
    • Variabilei de vârstă i se atribuie valoarea 21.
    • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

    435

    6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

    Creați un nume de script `example.sh`.

    #!/bin/bash
    # Solicitați utilizatorului numele
    echo Cum te cheamă?
    citeste numele
    # Salutați utilizatorul
    echo Bună ziua, $name! Încântat de cunoştinţă.

    Explicaţie:

    • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
    • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
    • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
    • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
    • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

    436

    7) Cum adăugați comentarii la un script shell?

    Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

    #!/bin/bash
    # Acesta este un comentariu care explică scopul scriptului
    ecou gfg

    8) Creați un script shell care verifică dacă un fișier există în directorul curent.

    Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

    #!/bin/bash
    fișier=example.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    echo Fișierul există: $fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
    4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
    5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
    6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
    7. fi: Această linie marchează sfârșitul instrucțiunii if.
    Găsirea fișierului

    Găsirea fișierului

    9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

    Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

    • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
    • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

    #!/bin/bash

    abcd=Bună ziua
    echo ‘$abcd’ # Ieșire: $abcd
    echo $abcd # Ieșire: Bună

    10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

    Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

    De exemplu: Dacă numele nostru script în `example.sh`

    #!/bin/bash

    echo Nume script: $0
    echo Primul argument: $1
    echo Al doilea argument: $2

    Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

    cli argumente

    cli argumente

    11) Cum folosești bucla for pentru a itera o listă de valori?

    Creați un nume de script `example.sh`.

    #!/bin/bash

    fructe=(curmal cu mere banane cireșe)
    pentru fructe în ${fruits[@]}; do
    echo Fructul curent: $fruct
    Terminat

    Explicaţie:

    Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

    • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
    • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
    • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
    • do: Acest cuvânt cheie marchează începutul corpului buclei.
    • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
    • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
    pentru buclă

    pentru buclă

    12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

    Creați un nume de script `example.sh`.

    #!/bin/bash

    echo Introduceți un număr (N):
    citeste N
    suma=0
    pentru (( i=1; i<=$N; i++ )); do
    suma=$((suma + i))
    Terminat
    echo Suma numerelor întregi de la 1 la $N este: $sum

    Explicaţie:
    Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

    1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
    2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
    3. În interiorul buclei, se întâmplă următoarele lucruri:
      • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
      • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
      • Dacă condiția este adevărată, corpul buclei se execută.
      • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
    4. După fiecare iterație, i++ crește valoarea lui i cu 1.
    5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
    6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

    439

    13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

    Creați un nume de script `word_count.sh`

    #!/bin/bash

    echo Introduceți cuvântul de căutat:
    citește cuvânt_țintă
    echo Introduceți numele fișierului:
    citește numele fișierului
    count=$(grep -o -w $target_word $filename | wc -l)
    echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

    Explicaţie:

    • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
    • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
    • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
    • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
    • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
      • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
      • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
      • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
      • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

    441

    14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

    Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

    • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
    • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

    15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

    Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

    Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

    dacă [ condiție ]; apoi
    # Comenzi de executat dacă condiția este adevărată
    elif [ altă_condiție ]; apoi
    # Comenzi de executat dacă another_condition este adevărată (opțional)
    altfel
    # Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
    fi

    Explicaţie:

    • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
    • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
    • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
    • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
    • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

    16) Cum citești linii dintr-un fișier într-un script shell?

    La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

    #!/bin/bash
    fișier=/home/jayeshkumar/jayesh.txt
    # Verificați dacă fișierul există
    if [ -e $fișier ]; apoi
    în timp ce IFS= citește linia -r; do
    echo Line read: $line
    # Adăugați aici logica dvs. de procesare
    terminat <$fișier
    altfel
    echo Fișierul nu a fost găsit: $fișier
    fi

    Explicaţie:

    1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
    2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
    3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
    4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
      • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
      • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
    5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
    6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
    7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
    8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
    9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
    10. fi: Această linie marchează sfârșitul instrucțiunii if.
    fișier de citire

    fișier de citire

    Aici am folosit ` pwd ` pentru a obține calea directorului curent.

    17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

    Iată scenariul carecalcula factorialula unui număr dat.

    #!/bin/bash
    # Definiți o funcție pentru a calcula factorial
    calculate_factorial() {
    num=$1
    fapt=1
    pentru ((i=1; i<=num; i++)); do
    fapt=$((fapt * i))
    Terminat
    echo $fapt
    }
    # Solicitați utilizatorului să introducă un număr
    echo Introduceți un număr:
    citește input_num
    # Apelați funcția calculate_factorial cu numărul de intrare
    factorial_result=$(calculate_factorial $numă_input)
    # Afișează rezultatul factorial
    echo Factorial al $numar_intrare este: $rezultat_factorial

    Explicaţie:

    1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
    2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
    3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
    4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
    5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
    6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
    7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
    8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
    Factorială

    Factorială

    18) Cum gestionați semnale precum Ctrl+C într-un script shell?

    Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

    #!/bin/bash
    curăță() {
    echo Scriptul întrerupt. Se efectuează curățarea...
    # Adăugați aici acțiunile de curățare
    iesirea 1
    }
    # Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
    curatare capcane SIGINT
    # Restul scenariului dvs
    ecou Alergare...
    dormi 10
    ecou Terminat.

    Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

    Explicaţie:

    1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
    2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
    3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
    4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

    446

    19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

    Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

    #!/bin/bash
    input_file=input.txt
    output_file=output.txt
    sortați $fișier_input | uniq> $fișier_ieșire
    echo Liniile duplicate au fost eliminate cu succes.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
    3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
    4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
    5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
    6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
    eliminarea liniilor duplicate

    eliminarea liniei duplicate

    Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

    20) Scrieți un script care generează o parolă aleatorie sigură.

    Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

    #!/bin/bash
    # Funcție pentru a genera o parolă aleatorie
    genera_parola() {
    tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    }
    # Apelați funcția și stocați parola generată
    parola=$(generate_password)
    echo Parolă generată: $parolă

    Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

    Explicaţie:

    1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
      • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
      • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
      • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
    3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
    4. În cele din urmă, parola generată este afișată folosind echo.

    448

    21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

    Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

    #!/bin/bash
    directory=/calea/la/directorul/dvs
    total_size=$(du -csh $directory | grep total | awk „{print $1}”)
    echo Dimensiunea totală a fișierelor din $directory: $total_size

    Explicaţie:

    1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
    2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
    3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
      • -c: Produceți un total mare.
      • -s: Afișează numai dimensiunea totală a directorului specificat.
      • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
    4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
    5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
    6. Dimensiunea totală calculată este stocată în variabila total_size.
    7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
    Dimensiunea totală a fișierelor

    Dimensiunea totală a fișierelor

    Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

    22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

    Caracteristică `dacă`Staiftement Declarația „elif”.
    Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
    utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
    numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
    Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
    Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

    Să înțelegem printr-un exemplu.

    #!/bin/bash
    număr=5
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    altfel
    echo $numar nu este mai mare de 10
    fi
    ecou ——–
    dacă [ $număr -gt 10 ]; apoi
    echo $numar este mai mare decat 10
    elif [ $număr -eq 10 ]; apoi
    echo $numar este egal cu 10
    altfel
    echo $numar este mai mic decat 10
    fi

    Explicaţie:

    În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

    if_elif diferenta

    if_elif diferenta

    23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

    O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

    Iată sintaxa de bază a unei bucle while:

    în timp ce [condiție]; do
    # Comenzi de executat
    Terminat

    Explicaţie:

    1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
    2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
    3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

    Exemplu: Dacă vrem să tipărim numere de la 1 la 5

    #!/bin/bash
    contor=1
    while [ $counter -le 5 ]; do
    echo Număr: $contor
    contor=$((contor + 1))
    Terminat

    Explicaţie:

    • Variabila contor este setată la 1.
    • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
    • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
    • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
    buclă while

    buclă while

    24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

    Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi
    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi
    echo Fișiere goale în $directory:
    găsiți $directory -type f -empty

    Explicaţie:

    1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
    2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
    3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
    4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
    5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
    6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
    7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
    8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
    9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
    10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
    11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
    12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
    Găsirea fișierelor goale

    Găsirea fișierelor goale

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

    25) Care este scopul comenzii de citire în scripting shell?

    Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

    Sintaxa comenzii de citire:

    read variable_name>

    Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

    #!/bin/bash
    echo Vă rugăm să introduceți numele dvs.:
    citeste numele
    echo Bună ziua, $name!

    453

    citește numele

    În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

    26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

    #!/bin/bash
    director=$1″
    if [ -z $director ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi

    dacă [ ! -d $director ]; apoi

    echo Eroare: „$directory” nu este un director valid.
    iesirea 1
    fi

    cd $director || iesirea 1

    pentru fișier în *; do
    if [ -f $fișier ]; apoi
    nume nou=$(echo $fișier | tr „A-Z” „a-z”)
    [ $file != $newname ] && mv $file $newname
    fi
    Terminat

    Explicaţie:

    1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
    3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
    4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
    5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
    6. f i: Aceasta marchează sfârșitul primei declarații if.
    7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
    8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
    9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
    10. fi : marchează sfârșitul celei de-a doua declarații if.
    11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
    12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
    13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
    14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
    15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
    16. fi : marchează sfârșitul declarației interne if.
    17. Terminat : marchează sfârșitul buclei.

    454

    Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

    27) Cum puteți utiliza operații aritmetice într-un script shell?

    Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

    1. Expansiune aritmetică ($((…)))
    2. Folosind comanda expr
    3. Folosind comanda let

    Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

    #!/bin/bash
    num1=10
    num2=5

    #Extindere aritmetică ($((…)))

    rezultat=$((num1 + num2))
    echo Suma: $rezultat

    #Utilizarea comenzii expr

    suma=$(expr $num1 + $num2)
    echo Sumă: $sumă

    #Folosind comanda let

    fie suma = num1 + num2
    echo Sumă: $sumă

    Explicaţie:

    1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
    2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
    3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
    4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
    5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
    6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
    7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
    8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
    10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
    11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
    aritmetic

    aritmetic

    28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

    Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

    #!/bin/bash
    gazdă=$1″
    if [ -z $gazdă ]; apoi
    echo Utilizare: $0
    iesirea 1
    fi
    ping -c 4 $gazdă

    dacă [ $? -eq 0]; apoi
    echo $host este accesibil.
    altfel
    echo $host nu este accesibil.
    fi

    Explicaţie:

    1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
    2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
    3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
    4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

    456

    Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

    29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

    Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

    #!/bin/bash
    # Declarați o matrice
    matrice=(3 56 24 89 67)

    # Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

    max=${array[0]}

    # Iterați prin matrice

    pentru num în ${array[@]}; do

    # Comparați fiecare element cu maximul actual

    dacă ((num> max)); apoi
    max=$num
    fi
    Terminat

    # Tipăriți valoarea maximă

    echo Elementul maxim din tablou este: $max

    Explicaţie:

    1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
    2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
    3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
    4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
    5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
    6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
    7. ` Terminat `: Bucla `for` este închisă.
    8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
    461

    cel mai mare număr

    30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

    #!/bin/bash

    # Declarați o matrice

    matrice=(1 65 22 19 94)

    # Inițializați o variabilă pentru a stoca suma

    suma=0

    # Iterați prin matrice și adăugați fiecare element la sumă

    pentru num în ${array[@]}; do
    am=$((am + am))
    Terminat

    # Imprimați suma

    echo Suma elementelor din tablou este: $sum

    Explicaţie:

    ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

    ` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

    ` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

    ` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

    ` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

    ` Terminat `: ` pentru ` bucla este închisă.

    `echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

    462

    Suma elementelor

    Aflați mai multe despre scripturile Shell

    Concluzie

    Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.



    ).
  5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
  6. f i: Aceasta marchează sfârșitul primei declarații if.
  7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
  8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
  9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
  10. fi : marchează sfârșitul celei de-a doua declarații if.
  11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
  12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
  13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
  14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
  15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
  16. fi : marchează sfârșitul declarației interne if.
  17. Terminat : marchează sfârșitul buclei.

454

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

27) Cum puteți utiliza operații aritmetice într-un script shell?

Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

  1. Expansiune aritmetică ($((…)))
  2. Folosind comanda expr
  3. Folosind comanda let

Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

#!/bin/bash
num1=10
num2=5

#Extindere aritmetică ($((…)))

rezultat=$((num1 + num2))
echo Suma: $rezultat

#Utilizarea comenzii expr

suma=$(expr $num1 + $num2)
echo Sumă: $sumă

#Folosind comanda let

subșir în java

fie suma = num1 + num2
echo Sumă: $sumă

Explicaţie:

  1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
  3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
  4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
  5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
  6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
  7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
  8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
  9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
  10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
  11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
aritmetic

aritmetic

28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

#!/bin/bash
gazdă=″
if [ -z $gazdă ]; apoi
echo Utilizare:

Pentru toate distribuțiile Linux, scriptul shell este ca o baghetă magică care automatizează procesul, economisește timp utilizatorilor și crește productivitatea. Acest tutorial de scripting vă va prezenta cele 25 de exemple de scripting în plus.

Dar înainte de a trece la subiectul scripting shell exemple, să înțelegem scriptul shell și cazurile reale de utilizare ale scripturilor shell.

Ce este Shell Script?

Ei bine, coaja este a CLI ( interpret de linie de comandă ), care rulează într-o fereastră text în care utilizatorii pot gestiona și executa comenzi shell. Pe de altă parte, procesul de scriere a unui set de comenzi pentru a fi executat pe un sistem Linux Un fișier care include astfel de instrucțiuni se numește script bash.

Utilizări ale scripturilor Shell

Mai jos sunt câteva utilizări comune ale Shell Script:

  • Automatizarea sarcinilor – Poate fi folosit pentru a automatiza sarcini repetitive, cum ar fi backup-uri obișnuite și sarcini de instalare a software-ului.
  • Personalizare - Se poate folosi scripturi shell pentru a-și proiecta mediul de linie de comandă și pentru a-și îndeplini cu ușurință sarcina conform nevoilor.
  • Gestionarea fișierelor - Scripturile shell pot fi, de asemenea, folosite pentru a gestiona și manipula fișiere și directoare, cum ar fi mutarea, copierea, redenumirea sau ștergerea fișierelor.

Exemple de script Shell în Linux

1) Ce indică shebang (#!) de la începutul unui script shell?

The shebang (#!) la începutul unui script indică interpretul care ar trebui folosit pentru a executa scriptul. Acesta spune sistemului care shell sau interpret ar trebui să interpreteze comenzile scriptului.

De exemplu: Să presupunem că avem un script numit myscript.sh scris în shell-ul Bash:

shebang

shebang

În acest exemplu:

  • #!/bin/bash de la începutul scriptului indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  • Comenzile echo sunt folosite pentru a imprima mesaje către terminal.

2) Cum rulați un script shell din linia de comandă?

Pentru a rula un script shell din linia de comandă, trebuie să urmam acești pași:

  • Asigurați-vă că fișierul script are permisiuni executabile folosind comanda chmod :
chmod +x myscript.sh>
  • Executați scriptul folosind numele său de fișier:
./myscript.sh>

Aici trebuie să înlocuiți myscript.sh cu numele scriptului de atunci.

3) Scrieți un script shell care imprimă techcodeview.com pe terminal.

Creați un nume de script `myscript.sh` (folosim ` deoarece ` editor, puteți alege orice editor)

vim myscript.sh>

#!/bin/bash
# Acest script imprimă techcodeview.com pe terminal
echo techcodeview.com

printeaza numele

printeaza numele

Facem scriptul nostru executabil folosind `chmod +x`, apoi executăm cu `./myscipt.sh` și obținem rezultatul dorit techcodeview.com.

4) Explicați scopul comenzii echo în scripting shell.

The comanda ecou este folosit pentru a afișa text sau variabile pe terminal. Este folosit în mod obișnuit pentru tipărirea mesajelor, a valorilor variabile și pentru generarea rezultatelor programului.

434

comanda ecou

În acest exemplu, executăm `echo` direct pe terminal, deoarece funcționează la fel în interiorul scriptului shell.

5) Cum puteți atribui o valoare unei variabile într-un script shell?

Variabilelor li se atribuie valori folosind operatorul de atribuire =.

De exemplu:

#!/bin/bash
# Atribuirea unei valori unei variabile
nume=Jayesh
varsta=21
echo $nume $varsta

Explicaţie:

  • Variabilei nume i se atribuie valoarea Jayesh.
  • Variabilei de vârstă i se atribuie valoarea 21.
  • echo este folosit pentru a imprima și `$name` `$age` este folosit pentru a apela valoarea stocată în variabile.

435

6) Scrieți un script shell care preia numele unui utilizator ca intrare și îl salută.

Creați un nume de script `example.sh`.

#!/bin/bash
# Solicitați utilizatorului numele
echo Cum te cheamă?
citeste numele
# Salutați utilizatorul
echo Bună ziua, $name! Încântat de cunoştinţă.

Explicaţie:

  • #!/bin/bash: Aceasta este linia shebang. Spune sistemului să folosească interpretul Bash pentru a executa scriptul.
  • # Întrebați utilizatorul numele său: Acesta este un comentariu. Oferă context despre codul viitor. Comentariile sunt ignorate de interpret.
  • echo Care este numele tău?: Comanda echo este folosită pentru a afișa textul între ghilimele duble pe terminal.
  • citire nume: comanda citire așteaptă ca utilizatorul să introducă text și îl stochează în numele variabilei.
  • echo Bună ziua, $name! Încântat de cunoștință.: Această linie folosește comanda echo pentru a imprima un mesaj de salut care include valoarea variabilei de nume, care a fost colectată din intrarea utilizatorului.

436

7) Cum adăugați comentarii la un script shell?

Comentarii în scripting shell sunt folosite pentru a oferi explicații sau context codului. Ele sunt ignorate de interpret și sunt destinate doar oamenilor care citesc scenariul. Puteți adăuga comentarii folosind simbolul #.

#!/bin/bash
# Acesta este un comentariu care explică scopul scriptului
ecou gfg

8) Creați un script shell care verifică dacă un fișier există în directorul curent.

Iată un script care verifică dacă un fișier numit example.txt există în directorul curent:

#!/bin/bash
fișier=example.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
echo Fișierul există: $fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=example.txt: Această linie definește fișierul variabil și îi atribuie valoarea example.txt. Puteți înlocui acest lucru cu numele fișierului pe care doriți să îl verificați.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Condiția [ -e $fișier ] verifică dacă fișierul specificat de valoarea variabilei fișier există. Indicatorul -e este folosit pentru a verifica existența fișierului.
  4. echo Fișier există: $fișier: Dacă condiția este adevărată (adică fișierul există), această linie afișează un mesaj care indică faptul că fișierul există, împreună cu numele fișierului.
  5. else: Dacă condiția este falsă (adică fișierul nu există), scriptul execută codul sub ramura else.
  6. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit, împreună cu numele fișierului.
  7. fi: Această linie marchează sfârșitul instrucțiunii if.
Găsirea fișierului

Găsirea fișierului

9) Care este diferența dintre ghilimele simple (‘) și ghilimele duble () în scriptul shell?

Ghilimele simple (‘) și ghilimele duble () sunt folosite pentru a include șiruri de caractere în scripturile shell, dar au comportamente diferite:

  • Ghilimele simple: tot ce se află între ghilimele simple este tratat ca un șir literal. Numele variabilelor și majoritatea caracterelor speciale nu sunt extinse.
  • Ghilimele duble: Variabilele și anumite caractere speciale din ghilimele duble sunt extinse. Conținuturile sunt supuse înlocuirii variabilelor și înlocuirii comenzilor.

#!/bin/bash

abcd=Bună ziua
echo ‘$abcd’ # Ieșire: $abcd
echo $abcd # Ieșire: Bună

10) Cum puteți folosi argumentele liniei de comandă într-un script shell?

Argumente din linia de comandă sunt valori furnizate unui script atunci când este executat. Ele pot fi accesate în cadrul scriptului folosind variabile speciale precum $1, $2 etc., unde $1 reprezintă primul argument, $2 reprezintă al doilea argument și așa mai departe.

De exemplu: Dacă numele nostru script în `example.sh`

#!/bin/bash

echo Nume script: $0
echo Primul argument: $1
echo Al doilea argument: $2

Dacă rulăm scriptul cu `.example.sh hello_1 hello_2`, va afișa:

cli argumente

cli argumente

11) Cum folosești bucla for pentru a itera o listă de valori?

Creați un nume de script `example.sh`.

#!/bin/bash

fructe=(curmal cu mere banane cireșe)
pentru fructe în ${fruits[@]}; do
echo Fructul curent: $fruct
Terminat

Explicaţie:

Linia `fruits=` creează o matrice numită fructe cu patru elemente: măr, banană, cireș și curmal.

  • pentru fructe în ${fruits[@]}; do: Această linie începe o buclă for. Iată ce înseamnă fiecare parte:
  • pentru fructe: Aceasta declară o variabilă buclă numită fruct. În fiecare iterație a buclei, fructul va păstra valoarea elementului curent din matricea de fructe.
  • ${fruits[@]}: Aceasta este o extindere a matricei care preia toate elementele din matricea de fructe. Sintaxa ${…} asigură că fiecare element este tratat ca un articol separat.
  • do: Acest cuvânt cheie marchează începutul corpului buclei.
  • echo Fructul curent: $fruct: În interiorul buclei, această linie folosește comanda echo pentru a afișa valoarea curentă a variabilei buclei fruct. Tipărește un mesaj precum Fructul curent: măr pentru fiecare fruct din matrice.
  • terminat: acest cuvânt cheie marchează sfârșitul corpului buclei. Îi spune scriptului că bucla s-a terminat.
pentru buclă

pentru buclă

12) Scrieți un script shell care calculează suma numerelor întregi de la 1 la N folosind o buclă.

Creați un nume de script `example.sh`.

#!/bin/bash

echo Introduceți un număr (N):
citeste N
suma=0
pentru (( i=1; i<=$N; i++ )); do
suma=$((suma + i))
Terminat
echo Suma numerelor întregi de la 1 la $N este: $sum

Explicaţie:
Scriptul începe prin a vă cere să introduceți un număr (N) folosind citire. Acest număr va determina de câte ori rulează bucla.

  1. Variabila suma este inițializată la 0. Această variabilă va ține evidența sumei numerelor întregi.
  2. Bucla for începe cu for (( i=1; i<=$N; i++ )). Această structură de buclă este folosită pentru a repeta un set de acțiuni de un anumit număr de ori, în acest caz, de la 1 la valoarea lui N.
  3. În interiorul buclei, se întâmplă următoarele lucruri:
    • i=1 setează variabila buclă i la 1 la începutul fiecărei iterații.
    • Condiția buclei i<=$N verifică dacă i este încă mai mic sau egal cu numărul dat N.
    • Dacă condiția este adevărată, corpul buclei se execută.
    • sum=$((sum + i)) calculează noua valoare a sum prin adăugarea valorii curente a lui i. Aceasta adună numerele întregi de la 1 la valoarea curentă i.
  4. După fiecare iterație, i++ crește valoarea lui i cu 1.
  5. Bucla continuă să ruleze până când condiția i<=$N devine falsă (când i devine mai mare decât N).
  6. Odată ce bucla se termină, scriptul afișează suma numerelor întregi de la 1 la numărul introdus N.

439

13) Creați un script care caută un anumit cuvânt într-un fișier și numără aparițiile acestuia.

Creați un nume de script `word_count.sh`

#!/bin/bash

echo Introduceți cuvântul de căutat:
citește cuvânt_țintă
echo Introduceți numele fișierului:
citește numele fișierului
count=$(grep -o -w $target_word $filename | wc -l)
echo Cuvântul „$target_word” apare de $număr de ori în „$filename”.

Explicaţie:

  • echo Introduceți cuvântul de căutat:: Această linie afișează un mesaj care cere utilizatorului să introducă un cuvânt pe care dorește să îl caute într-un fișier.
  • read target_word: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită target_word.
  • echo Introduceți numele fișierului:: Această linie afișează un mesaj care cere utilizatorului să introducă numele fișierului în care dorește să caute.
  • citește nume fișier: Această linie citește intrarea furnizată de utilizator și o stochează într-o variabilă numită nume fișier.
  • count=$(grep -o -w $target_word $filename | wc -l): Această linie face munca principală a scriptului. Să o descompunem mai departe:
    • grep -o -w $target_word $filename: Această parte a comenzii caută aparițiile cuvântului_țintă în numele fișierului specificat. Opțiunile -o și -w asigură că sunt numărate numai potrivirile întregii cuvinte.
    • |: Aceasta este o conductă, care preia ieșirea comenzii anterioare și o trimite ca intrare la următoarea comandă.
    • wc -l: Această parte a comenzii folosește comanda wc pentru a număra numărul de linii din intrare. Opțiunea -l numără în mod specific liniile.
    • Întreaga comandă calculează numărul de apariții ale cuvântului_țintă din fișier și alocă acest număr variabilei count

441

14) Explicați diferențele dintre ieșirea standard (stdout) și eroarea standard (stderr).

Principala diferență între ieșirea standard (stdout) și eroarea standard (stderr) este următoarea:

  • Ieșire standard (stdout): Acesta este fluxul de ieșire implicit în care merge ieșirea obișnuită a unei comenzi. Este afișat implicit pe terminal. Îl puteți redirecționa către un fișier folosind>.
  • Eroare standard (stderr): Acesta este fluxul de ieșire pentru mesajele de eroare și avertismente. Este afișat implicit și pe terminal. Îl puteți redirecționa către un fișier folosind 2>.

15) Explicați conceptul de instrucțiuni condiționale în scripting shell.

Declarații condiționate în scripting shell ne permit să luăm decizii și să controlăm fluxul scenariului nostru pe baza anumitor condiții. Acestea permit scriptului nostru să execute diferite seturi de comenzi, în funcție de faptul că o anumită condiție este adevărată sau falsă. Declarațiile condiționale primare din scriptul shell sunt instrucțiunea if, instrucțiunea elif (opțională) și instrucțiunea else (opțional).

Iată structura de bază a unei instrucțiuni condiționate în scripting shell:

dacă [ condiție ]; apoi
# Comenzi de executat dacă condiția este adevărată
elif [ altă_condiție ]; apoi
# Comenzi de executat dacă another_condition este adevărată (opțional)
altfel
# Comenzi de executat dacă niciuna dintre condiții nu este adevărată (opțional)
fi

Explicaţie:

  • [ condiție ] = Comandă care evaluează condiția și returnează o stare de ieșire adevărată (0) sau falsă (diferită de zero).
  • then = Este un cuvânt cheie care indică faptul că comenzile care îl urmează vor fi executate dacă condiția este evaluată la adevărată.
  • elif = (prescurtare pentru else if) Este o secțiune care ne permite să specificăm condiții suplimentare de verificat.
  • else = este o secțiune care conține comenzi care vor fi executate dacă niciuna dintre condiții nu este adevărată.
  • fi = Este un cuvânt cheie care marchează sfârșitul blocului condiționat.

16) Cum citești linii dintr-un fișier într-un script shell?

La citiți rândurile dintr-un fișier dintr-un script shell, putem folosi diverse metode, dar o abordare comună este utilizarea unei bucle while în combinație cu comanda de citire. Iată cum o putem face:

#!/bin/bash
fișier=/home/jayeshkumar/jayesh.txt
# Verificați dacă fișierul există
if [ -e $fișier ]; apoi
în timp ce IFS= citește linia -r; do
echo Line read: $line
# Adăugați aici logica dvs. de procesare
terminat <$fișier
altfel
echo Fișierul nu a fost găsit: $fișier
fi

Explicaţie:

  1. #!/bin/bash: Aceasta este linia shebang care specifică interpretul (/bin/bash) care va fi folosit pentru rularea scriptului.
  2. file=/home/jayeshkumar/jayesh.txt: Această linie definește fișierul variabil și atribuie calea completă fișierului jayesh.txt din directorul /home/jayeshkumar. Schimbați această cale pentru a se potrivi cu calea reală a fișierului pe care doriți să-l citiți.
  3. if [ -e $fișier ]; apoi: Această linie începe o instrucțiune if. Verifică dacă fișierul specificat de variabila $file există. Indicatorul -e verifică existența fișierului.
  4. în timp ce IFS= citește linia -r; do: Această linie inițiază o buclă while care citește linii din fișier.
    • IFS=: IFS (Internal Field Separator) este setat la o valoare goală pentru a păstra spațiile de început și de final.
    • read -r line: Aceasta citește linia curentă din fișier și o stochează în linia variabilă.
  5. echo Line read: $line: Această linie afișează conținutul liniei care a fost citită din fișier. Variabila $line conține conținutul liniei curente.
  6. # Adăugați aici logica dvs. de procesare: Acesta este un comentariu de substituent unde puteți adăuga propria logică pentru a procesa fiecare linie. De exemplu, puteți să analizați linia, să extrageți informații sau să efectuați acțiuni specifice bazate pe conținut.
  7. done <$fișier: Acesta marchează sfârșitul buclei while. < $fișier redirecționează conținutul fișierului pentru a fi citit de buclă.
  8. else: Dacă fișierul nu există (condiția din instrucțiunea if este falsă), scriptul execută codul sub ramura else.
  9. echo Fișierul nu a fost găsit: $fișier: Această linie afișează un mesaj de eroare care indică faptul că fișierul specificat nu a fost găsit.
  10. fi: Această linie marchează sfârșitul instrucțiunii if.
fișier de citire

fișier de citire

Aici am folosit ` pwd ` pentru a obține calea directorului curent.

17) Scrieți o funcție într-un script shell care calculează factorialul unui număr dat.

Iată scenariul carecalcula factorialula unui număr dat.

#!/bin/bash
# Definiți o funcție pentru a calcula factorial
calculate_factorial() {
num=$1
fapt=1
pentru ((i=1; i<=num; i++)); do
fapt=$((fapt * i))
Terminat
echo $fapt
}
# Solicitați utilizatorului să introducă un număr
echo Introduceți un număr:
citește input_num
# Apelați funcția calculate_factorial cu numărul de intrare
factorial_result=$(calculate_factorial $numă_input)
# Afișează rezultatul factorial
echo Factorial al $numar_intrare este: $rezultat_factorial

Explicaţie:

  1. Scriptul începe cu linia shebang #!/bin/bash pentru a specifica interpretul.
  2. calculate_factorial() este definită ca o funcție. Este nevoie de un argument, num, care este numărul pentru care trebuie calculat factorul.
  3. În interiorul funcției, fact este inițializat la 1. Această variabilă va stoca rezultatul factorial.
  4. Bucla for iterează de la 1 la numărul dat (num). În fiecare iterație, se înmulțește valoarea actuală a faptului cu indicele buclei i.
  5. După finalizarea buclei, variabila de fapt conține factorialul calculat.
  6. Scriptul solicită utilizatorului să introducă un număr folosind citire.
  7. Funcția calculate_factorial este apelată cu numărul furnizat de utilizator, iar rezultatul este stocat în variabila factorial_result.
  8. În cele din urmă, scriptul afișează rezultatul factorial calculat.
Factorială

Factorială

18) Cum gestionați semnale precum Ctrl+C într-un script shell?

Într-un script shell, puteți gestiona semnale precum Ctrl+C (cunoscut și ca SIGINT) folosind comanda trap. Ctrl+C generează un semnal SIGINT atunci când utilizatorul îl apasă pentru a întrerupe scriptul sau programul care rulează. Folosind comanda trap, puteți specifica acțiunile care trebuie întreprinse atunci când este primit un anumit semnal. Iată cum gestionați semnale precum Ctrl+C într-un script shell:

#!/bin/bash
curăță() {
echo Scriptul întrerupt. Se efectuează curățarea...
# Adăugați aici acțiunile de curățare
iesirea 1
}
# Configurați o capcană pentru a apela funcția de curățare când se primește Ctrl+C (SIGINT).
curatare capcane SIGINT
# Restul scenariului dvs
ecou Alergare...
dormi 10
ecou Terminat.

Manipularea semnalelor este importantă pentru a face scripturile robuste și pentru a vă asigura că acestea gestionează cu grație întreruperile neașteptate. Puteți personaliza funcția de curățare pentru a se potrivi nevoilor dvs. specifice, cum ar fi închiderea fișierelor, oprirea proceselor sau înregistrarea informațiilor înainte de ieșirea scriptului.

Explicaţie:

  1. #!/bin/bash: Această linie shebang specifică interpretul care va fi folosit pentru rularea scriptului.
  2. cleanup() { … }: Aceasta definește o funcție numită cleanup. În această funcție, puteți include orice acțiuni care trebuie efectuate atunci când scriptul este întrerupt, cum ar fi închiderea fișierelor, eliberarea resurselor sau efectuarea altor sarcini de curățare.
  3. curățare capcană SIGINT: Comanda trap este utilizată pentru a configura un handler de semnal. În acest caz, se specifică că atunci când semnalul SIGINT (Ctrl+C) este primit, trebuie executată funcția de curățare.
  4. echo Running…, sleep 10, echo Finished.: Acestea sunt doar exemple de comenzi pentru a simula execuția unui script.

446

19) Creați un script care verifică și elimină linii duplicate dintr-un fișier text.

Iată scriptul nostru Linux în care vom elimina liniile duplicate dintr-un fișier text.

#!/bin/bash
input_file=input.txt
output_file=output.txt
sortați $fișier_input | uniq> $fișier_ieșire
echo Liniile duplicate au fost eliminate cu succes.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), care indică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. Variabila input_file este setată la numele fișierului de intrare care conține linii duplicate (schimbați-l în numele fișierului de intrare actual).
  3. Variabila output_file este setată la numele fișierului de ieșire de unde vor fi eliminate duplicatele (schimbați-l cu numele fișierului de ieșire dorit).
  4. Scriptul folosește comanda sortare pentru a sorta liniile din fișierul de intrare. Sortarea liniilor asigură gruparea liniilor duplicate.
  5. Liniile sortate sunt apoi trecute prin comanda uniq, care elimină liniile duplicate consecutive. Ieșirea acestui proces este redirecționată către fișierul de ieșire.
  6. După ce duplicatele sunt eliminate, scriptul imprimă un mesaj de succes.
eliminarea liniilor duplicate

eliminarea liniei duplicate

Aici, folosim ` pisică ` pentru a afișa textul din fișierul text.

20) Scrieți un script care generează o parolă aleatorie sigură.

Iată scriptul nostru pentru a genera o parolă aleatorie sigură.

#!/bin/bash
# Funcție pentru a genera o parolă aleatorie
genera_parola() {
tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
}
# Apelați funcția și stocați parola generată
parola=$(generate_password)
echo Parolă generată: $parolă

Notă: Utilizatorul poate modifica în consecință lungimea parolei, prin înlocuirea numărului „12”.

Explicaţie:

  1. Scriptul începe cu un shebang (#!/bin/bash), indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Funcția generate_password este definită pentru a genera o parolă aleatorie. Iată cum funcționează:
    • tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]'
    • fold -w 12 împarte datele aleatoare filtrate în linii cu lățimea de 12 caractere fiecare.
    • head -n 1 selectează prima linie, oferindu-ne efectiv o secvență aleatorie de caractere de lungime 12.
  3. Variabilei parolă i se atribuie rezultatul apelării funcției generate_password.
  4. În cele din urmă, parola generată este afișată folosind echo.

448

21) Scrieți un script shell care calculează dimensiunea totală a tuturor fișierelor dintr-un director.

Iată un script shell pentru a calcula dimensiunea totală a tuturor fișierelor dintr-un director.

#!/bin/bash
directory=/calea/la/directorul/dvs
total_size=$(du -csh $directory | grep total | awk „{print $1}”)
echo Dimensiunea totală a fișierelor din $directory: $total_size

Explicaţie:

  1. Scriptul începe cu #!/bin/bash shebang, indicând faptul că ar trebui interpretat folosind shell-ul Bash.
  2. Variabila director este setată la calea directorului pentru care doriți să calculați dimensiunea totală a fișierului. Înlocuiți /path/to/your/directory cu calea reală.
  3. Comanda du este utilizată pentru a estima utilizarea spațiului de fișiere. Opțiunile folosite sunt:
    • -c: Produceți un total mare.
    • -s: Afișează numai dimensiunea totală a directorului specificat.
    • -h: Dimensiuni de imprimare într-un format care poate fi citit de om (de exemplu, KB, MB, GB).
  4. Ieșirea lui du este transmisă la grep total pentru a filtra linia care conține dimensiunea totală.
  5. awk „{print $1}” este folosit pentru a extrage primul câmp (dimensiunea totală) din linie.
  6. Dimensiunea totală calculată este stocată în variabila total_size.
  7. În cele din urmă, scriptul afișează dimensiunea totală folosind echo.
Dimensiunea totală a fișierelor

Dimensiunea totală a fișierelor

Aici am folosit ` pwd ` pentru a vedea calea directorului curent.

22) Explicați diferența dintre instrucțiunile if și elif în scriptul shell.

Caracteristică `dacă`Staiftement Declarația „elif”.
Scop Explicați diferența dintre instrucțiunile if și elif în scriptul shell. Oferă condiții alternative pentru a verifica când condiția inițială dacă este falsă.
utilizare Folosit pentru starea inițială. Folosit după condiția inițială if pentru a verifica condiții suplimentare.
numărul de blocuri Poate avea doar unul dacă bloc. Poate avea mai multe blocuri elif, dar numai un alt bloc (opțional).
Execuţie Execută blocul de cod asociat cu instrucțiunea if dacă condiția este adevărată. Dacă condiția este falsă, blocul else (dacă este prezent) este executat (opțional). Verifică fiecare condiție elif în ordine. Dacă o condiție elif este adevărată, blocul de cod corespunzător este executat și scriptul iese din întregul bloc condiționat. Dacă niciuna dintre condițiile elif nu este adevărată, blocul else (dacă este prezent) este executat.
Structuri imbricate Poate fi imbricat în alte blocuri if, elif sau else. Nu poate fi imbricat într-un alt bloc elif, dar poate fi folosit în interiorul unui bloc if sau else.

Să înțelegem printr-un exemplu.

#!/bin/bash
număr=5
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
altfel
echo $numar nu este mai mare de 10
fi
ecou ——–
dacă [ $număr -gt 10 ]; apoi
echo $numar este mai mare decat 10
elif [ $număr -eq 10 ]; apoi
echo $numar este egal cu 10
altfel
echo $numar este mai mic decat 10
fi

Explicaţie:

În acest exemplu, primul bloc if verifică dacă numărul este mai mare decât 10. Dacă nu, se tipărește un mesaj care indică faptul că numărul nu este mai mare de 10. Al doilea bloc cu instrucțiuni elif verifică mai multe condiții secvenţial până când una dintre ele este adevărată. În acest caz, deoarece valoarea numărului este 5, rezultatul va fi:

if_elif diferenta

if_elif diferenta

23) Cum folosești o buclă while pentru a executa în mod repetat comenzi?

O buclă while este utilizată în scripturile shell pentru a executa în mod repetat un set de comenzi atâta timp cât o condiție specificată este adevărată. Bucla continuă să execute comenzile până când condiția devine falsă.

Iată sintaxa de bază a unei bucle while:

în timp ce [condiție]; do
# Comenzi de executat
Terminat

Explicaţie:

  1. Bucla `while` începe cu cuvântul cheie `while` urmat de o condiție cuprinsă între paranteze drepte `[ ]`.
  2. Corpul buclei, care conține comenzile de executat, este inclus în cuvintele cheie `do` și `done`.
  3. Bucla verifică mai întâi starea. Dacă condiția este adevărată, comenzile din corpul buclei sunt executate. După ce corpul buclei se execută, condiția este verificată din nou și procesul se repetă până când condiția devine falsă.

Exemplu: Dacă vrem să tipărim numere de la 1 la 5

#!/bin/bash
contor=1
while [ $counter -le 5 ]; do
echo Număr: $contor
contor=$((contor + 1))
Terminat

Explicaţie:

  • Variabila contor este setată la 1.
  • Bucla while verifică dacă valoarea contorului este mai mică sau egală cu 5. Atâta timp cât această condiție este adevărată, bucla continuă să se execute.
  • În interiorul buclei, valoarea curentă a contorului este imprimată folosind echo.
  • Contorul este incrementat cu 1 folosind expresia $((contor + 1)).
buclă while

buclă while

24) Creați un script shell care găsește și listează toate fișierele goale dintr-un director.

Script Shell pe care îl puteți utiliza pentru a găsi și lista toate fișierele goale dintr-un director folosind comenzile `find` și `stat`:

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi
echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi
echo Fișiere goale în $directory:
găsiți $directory -type f -empty

Explicaţie:

  1. ` #!/bin/bash `: Aceasta se numește shebang și îi spune sistemului de operare să folosească shell-ul Bash pentru a interpreta și executa scriptul.
  2. ` director=$1″ `: Această linie atribuie primul argument de linie de comandă (notat cu $1) variabilei ` director `.
  3. ` if [ -z $director ]; apoi `: Această linie începe o instrucțiune if care verifică dacă ` director ` variabila este goală (-z testează un șir gol).
  4. ` echo Utilizare: $0 `: Dacă directorul este gol, această linie afișează un mesaj de utilizare, unde ` 0 USD ` reprezintă numele scenariului.
  5. ` iesirea 1 `: Această linie iese din script cu un cod de ieșire de ` 1 `, indicând o eroare.
  6. ` fi `: Această linie marchează sfârșitul ` dacă ` declarație.
  7. ` dacă [ ! -d $director ]; apoi `: Aceasta pornește o altă instrucțiune if pentru a verifica dacă directorul furnizat există (` -d ` teste pentru un director).
  8. ` echo Eroare: „$directory” nu este un director valid. `: Dacă directorul furnizat nu există, această linie afișează un mesaj de eroare.
  9. ` iesirea 1 `: Iese din script cu un cod de ieșire de ` 1 `.
  10. ` fi `: marchează sfârșitul celui de-al doilea ` dacă` afirmație.
  11. ` echo Fișiere goale în $directory: `: Dacă totul este valid până acum, această linie afișează un mesaj care indică faptul că scriptul va lista fișierele goale în directorul specificat.
  12. ` găsiți $directory -type f -empty `: Această linie folosește ` găsi ` comandă pentru a căuta fișiere goale (` -gol `) de tip fișiere obișnuite (` -tip f `) în directorul specificat. Apoi listează aceste fișiere goale.
Găsirea fișierelor goale

Găsirea fișierelor goale

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/

25) Care este scopul comenzii de citire în scripting shell?

Comanda de citire din scriptul shell permite scriptului să vă solicite informații. Este ca atunci când un computer îți pune o întrebare și așteaptă răspunsul tău. Acest lucru este util pentru scripturile care necesită să tastați ceva sau pentru când scriptul trebuie să funcționeze cu informații din fișiere. Comanda de citire ajută scriptul să se oprească și să aștepte ceea ce tastați, iar apoi poate folosi acele informații pentru a face mai multe lucruri în script.

Sintaxa comenzii de citire:

read variable_name>

Exemplu : Dacă vrem să luăm numele ca intrare de la utilizator pentru a-l imprima.

#!/bin/bash
echo Vă rugăm să introduceți numele dvs.:
citeste numele
echo Bună ziua, $name!

453

citește numele

În rezumat, comanda de citire este utilizată pentru a capta intrarea utilizatorului sau date din fișierele din scripturile shell, făcând scripturile mai interactive și versatile.

26) Scrieți un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

Iată un script shell care convertește toate numele fișierelor dintr-un director în litere mici.

#!/bin/bash
director=$1″
if [ -z $director ]; apoi
echo Utilizare: $0
iesirea 1
fi

dacă [ ! -d $director ]; apoi

echo Eroare: „$directory” nu este un director valid.
iesirea 1
fi

cd $director || iesirea 1

pentru fișier în *; do
if [ -f $fișier ]; apoi
nume nou=$(echo $fișier | tr „A-Z” „a-z”)
[ $file != $newname ] && mv $file $newname
fi
Terminat

Explicaţie:

  1. #!/bin/bash : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. director=$1″ : Această linie atribuie primul argument de linie de comandă directorului de variabile.
  3. if [ -z $director ]; apoi : Această linie verifică dacă variabila director este goală (nu este furnizat niciun argument la rularea scriptului).
  4. echo Utilizare: $0 : Dacă directorul este gol, această linie afișează un mesaj de utilizare cu numele scriptului ($0).
  5. iesirea 1 : Această linie iese din script cu un cod de ieșire de 1, indicând o eroare.
  6. f i: Aceasta marchează sfârșitul primei declarații if.
  7. dacă [ ! -d $director ]; apoi : Această linie verifică dacă directorul specificat nu există (-d testează pentru un director).
  8. echo Eroare: „$directory” nu este un director valid. : Dacă directorul specificat nu există, această linie afișează un mesaj de eroare.
  9. iesirea 1 : Iese din script cu un cod de ieșire de 1.
  10. fi : marchează sfârșitul celei de-a doua declarații if.
  11. cd $director || iesirea 1 : Schimbă directorul de lucru curent în directorul specificat. Dacă schimbarea directorului eșuează (de exemplu, director inexistent), scriptul se iese cu un cod de eroare.
  12. pentru fișier în *; do: eu pentru fișier în *; do: inițiază o buclă care iterează peste toate elementele din directorul curent (* se potrivește cu toate numele fișierelor).
  13. if [ -f $fișier ]; apoi : Verifică dacă elementul de iterație al buclei curent este un fișier obișnuit (-f testează pentru un fișier obișnuit).
  14. nume nou=$(echo $fișier | tr „A-Z” „a-z”) : Convertește numele de fișier curent ($fișier) în minuscule folosind comanda tr și stochează rezultatul în variabila newname.
  15. [ $file != $newname ] && mv $file $newname : compară numele fișierului original cu noul nume de fișier cu minuscule. Dacă sunt diferite, redenumește fișierul folosind comanda mv.
  16. fi : marchează sfârșitul declarației interne if.
  17. Terminat : marchează sfârșitul buclei.

454

Notă : Trebuie să furnizăm un director ca argument când rulăm scriptul. Aici am folosit calea directorului curent home/jayeshkumar/test

27) Cum puteți utiliza operații aritmetice într-un script shell?

Operațiile aritmetice pot fi efectuate într-un script shell folosind diferite metode încorporate. Shell oferă mecanisme pentru calcule aritmetice simple folosind expansiunea aritmetică, cum ar fi:

  1. Expansiune aritmetică ($((…)))
  2. Folosind comanda expr
  3. Folosind comanda let

Iată scriptul nostru Shell care explică toate cele trei metode pentru operații aritmetice.

#!/bin/bash
num1=10
num2=5

#Extindere aritmetică ($((…)))

rezultat=$((num1 + num2))
echo Suma: $rezultat

#Utilizarea comenzii expr

suma=$(expr $num1 + $num2)
echo Sumă: $sumă

#Folosind comanda let

fie suma = num1 + num2
echo Sumă: $sumă

Explicaţie:

  1. `#!/bin/bash` : Acesta este shebang, specificând că scriptul trebuie interpretat folosind shell-ul Bash.
  2. `num1=10` și ` num2=5` : Aceste linii atribuie valorile 10 și 5 variabilelor ` num1 ` și ` num2 `, respectiv.
  3. `#Extindere aritmetică ($((…)))` : Acesta este un comentariu care indică începutul secțiunii care demonstrează extinderea aritmetică.
  4. `rezultat=$((num1 + num2))` : Această linie folosește expansiunea aritmetică pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` rezultat ` variabilă.
  5. `echo Sum: $rezultat` : Această linie imprimă suma calculată folosind valoarea stocată în ` rezultat ` variabilă.
  6. `#Utilizarea comenzii expr` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` expr ` comanda pentru operatii aritmetice.
  7. `sum=$(expr $num1 + $num2)` : Această linie folosește ` expr comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și stochează rezultatul în ` sumă ` variabilă. Rețineți că ` expr Comanda ` necesită spații în jurul operatorilor.
  8. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
  9. `#Folosirea let Command` : Acesta este un comentariu care indică începutul secțiunii care demonstrează utilizarea ` lăsa ` comanda pentru operatii aritmetice.
  10. `suma = num1 + num2″` : Această linie folosește ` lăsa comanda ` pentru a calcula suma lui ` num1 ` și ` num2 ` și atribuie rezultatul lui ` sumă ` variabilă. ` lăsa Comanda ` nu necesită spații în jurul operatorilor.
  11. `echo Sum: $sum` : Această linie imprimă suma calculată folosind valoarea stocată în ` sumă ` variabilă.
aritmetic

aritmetic

28) Creați un script care verifică dacă o gazdă de rețea este accesibilă.

Iată un script shell simplu care utilizează comanda ping pentru a verifica dacă o gazdă de rețea este accesibilă:

#!/bin/bash
gazdă=$1″
if [ -z $gazdă ]; apoi
echo Utilizare: $0
iesirea 1
fi
ping -c 4 $gazdă

dacă [ $? -eq 0]; apoi
echo $host este accesibil.
altfel
echo $host nu este accesibil.
fi

Explicaţie:

  1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
  2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
  3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
  4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

456

Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

#!/bin/bash
# Declarați o matrice
matrice=(3 56 24 89 67)

# Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

max=${array[0]}

# Iterați prin matrice

pentru num în ${array[@]}; do

# Comparați fiecare element cu maximul actual

dacă ((num> max)); apoi
max=$num
fi
Terminat

# Tipăriți valoarea maximă

echo Elementul maxim din tablou este: $max

Explicaţie:

  1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
  3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
  4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
  5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
  6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
  7. ` Terminat `: Bucla `for` este închisă.
  8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
461

cel mai mare număr

30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

#!/bin/bash

# Declarați o matrice

matrice=(1 65 22 19 94)

# Inițializați o variabilă pentru a stoca suma

suma=0

# Iterați prin matrice și adăugați fiecare element la sumă

pentru num în ${array[@]}; do
am=$((am + am))
Terminat

# Imprimați suma

echo Suma elementelor din tablou este: $sum

Explicaţie:

` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

` Terminat `: ` pentru ` bucla este închisă.

`echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

462

Suma elementelor

Aflați mai multe despre scripturile Shell

Concluzie

Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.




iesirea 1
fi
ping -c 4 $gazdă

dacă [ $? -eq 0]; apoi
echo $host este accesibil.
altfel
echo $host nu este accesibil.
fi

Explicaţie:

  1. Acesta ia un nume de gazdă sau o adresă IP ca argument și verifică dacă argumentul este furnizat.
  2. Dacă nu este furnizat niciun argument, acesta afișează un mesaj de utilizare și iese.
  3. Utilizează comanda ping cu opțiunea -c 4 pentru a trimite patru cereri de eco ICMP către gazda specificată.
  4. După rularea comenzii ping, aceasta verifică starea de ieșire ($?). Dacă starea de ieșire este 0, înseamnă că gazda este accesibilă și scriptul imprimă un mesaj de succes. În caz contrar, imprimă un mesaj de eroare.

456

Notă : Trebuie să furnizăm un nume de gazdă ca argument când rulăm scriptul. Aici am folosit google.com

29) Scrieți un script Shell pentru a găsi cel mai mare element dintr-o matrice:

Iată un script shell pentru a găsi cel mai bun element dintr-o matrice.

#!/bin/bash
# Declarați o matrice
matrice=(3 56 24 89 67)

# Inițializați o variabilă pentru a stoca valoarea maximă, începând cu primul element

max=${array[0]}

# Iterați prin matrice

pentru num în ${array[@]}; do

# Comparați fiecare element cu maximul actual

dacă ((num> max)); apoi
max=$num
fi
Terminat

# Tipăriți valoarea maximă

echo Elementul maxim din tablou este: $max

Explicaţie:

  1. ` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.
  2. ` matrice=(3 56 24 89 67) `: Matricea este declarată și inițializată cu valori.
  3. ` max=${array[0]} `: `max` este inițializat cu primul element al matricei.
  4. ` pentru num în ${array[@]}; do `: O buclă `for` este folosită pentru a itera prin elementele matricei.
  5. ` dacă ((num> max)); apoi `: O instrucțiune `if` verifică dacă elementul curent `num` este mai mare decât maximul curent `max`.
  6. ` max=$num`: Dacă`num ` este mai mare decât `max`, `max` este actualizat cu valoarea num.
  7. ` Terminat `: Bucla `for` este închisă.
  8. ` echo Elementul maxim din tablou este: $max `: În cele din urmă, scriptul imprimă valoarea maximă găsită în matrice.
461

cel mai mare număr

30) Scrieți un script pentru a calcula suma elementelor dintr-un tablou.

#!/bin/bash

# Declarați o matrice

matrice=(1 65 22 19 94)

# Inițializați o variabilă pentru a stoca suma

suma=0

# Iterați prin matrice și adăugați fiecare element la sumă

pentru num în ${array[@]}; do
am=$((am + am))
Terminat

# Imprimați suma

echo Suma elementelor din tablou este: $sum

Explicaţie:

` #!/bin/bash `: Linia shebang specifică faptul că scriptul trebuie interpretat folosind shell-ul Bash.

` matrice=(1 65 22 19 94) `: Matricea este declarată și inițializată cu valori.

` suma=0 `:` sumă ` este inițializat la zero pentru a păstra suma elementelor.

` pentru num în ${array[@]}; do `: A` pentru ` bucla este folosită pentru a itera elementele matricei.

` am=$((am + am)) `: În interiorul buclei, fiecare element ` pe unu ` se adaugă la ` sumă ` variabilă.

` Terminat `: ` pentru ` bucla este închisă.

`echo Suma elementelor din tablou este: $sum`: În cele din urmă, scriptul imprimă suma tuturor elementelor din matrice.

462

Suma elementelor

Aflați mai multe despre scripturile Shell

Concluzie

Cu toții tociștii știm că scriptul shell este foarte util pentru a crește productivitatea muncii, precum și pentru a economisi timp. Deci, în acest articol am abordat 30 de exemple de scripturi shell foarte utile și cele mai multe conman . Sperăm că acest ghid complet despre exemplul de scripting shell vă ajută să înțelegeți totul despre scripturile shell.