Bash Pagina 119: Diferență între versiuni

De la Wiki Linux Advanced
Sari la navigare Sari la căutare
Fără descriere a modificării
 
(Nu s-au afișat 8 versiuni intermediare efectuate de același utilizator)
Linia 1: Linia 1:
== Exercitii Recapitulare Bash ==
== Exerciții recapitulative elementare Bash ==


Această pagină wiki conține o serie de exerciții pentru a recapitula sintaxa și conceptele esențiale în Bash. Fiecare exercițiu se concentrează pe utilizarea diferitelor structuri de control, cum ar fi ''if'', ''while'', ''for'', și altele. Exercițiile variază de la afișarea numerelor până la identificarea numerelor prime.
Această pagină wiki conține o serie de exerciții pentru a recapitula sintaxa și conceptele esențiale în Bash. Fiecare exercițiu se concentrează pe utilizarea diferitelor structuri de control, cum ar fi ''if'', ''while'', ''for'', și altele. Exercițiile variază de la afișarea numerelor până la identificarea numerelor prime.
Linia 161: Linia 161:
  #!/bin/bash
  #!/bin/bash
  read -p "Introduceți calea către fișier: " file
  read -p "Introduceți calea către fișier: " file
  if [[ -f $file ]]; then
  if <nowiki>[[ -f $file ]]</nowiki>; then
     lines=$(wc -l < "$file")
     lines=$(wc -l < "$file")
     echo "Numărul de linii din fișier este: $lines"
     echo "Numărul de linii din fișier este: $lines"
Linia 174: Linia 174:
     ((i++))
     ((i++))
  done
  done
Aceste exerciții acoperă diferite structuri de control și concepte în Bash, oferind o bază solidă pentru aprofundarea cunoștințelor în scriptingul Bash.
Aceste exerciții elementare acoperă diferite structuri de control și concepte în Bash, oferind o bază solidă pentru aprofundarea cunoștințelor în scriptingul Bash.
 
== Exercitii recapitulative avansate Bash ==
Această pagină wiki conține exerciții avansate pentru a recapitula utilizarea unor instrumente și concepte avansate în Bash, inclusiv sed, awk, trap, procesarea JSON, și utilizarea curl pentru interacțiunea cu API-uri. Exercițiile sunt proiectate să te ajute să îți îmbunătățești abilitățile de scripting și manipulare a datelor.
 
21. Procesarea unui fișier text cu sed
 
Afișează toate liniile dintr-un fișier care conțin un anumit cuvânt, utilizând sed.
#!/bin/bash
read -p "Introduceți numele fișierului: " file
read -p "Introduceți cuvântul căutat: " word
sed -n "/$word/p" "$file"
22. Extrage informații folosind awk
 
Afișează al doilea câmp dintr-un fișier CSV.
#!/bin/bash
read -p "Introduceți numele fișierului CSV: " file
awk -F',' '{print $2}' "$file"
23. Utilizarea trap pentru gestionarea semnalelor
 
Afișează un mesaj atunci când scriptul este întrerupt (CTRL+C).
#!/bin/bash
trap 'echo "Scriptul a fost întrerupt."; exit' SIGINT
while true; do
    echo "Scriptul rulează..."
    sleep 1
done
24. Procesarea fișierelor JSON cu jq
 
Extrage un anumit câmp dintr-un fișier JSON folosind jq.
#!/bin/bash
read -p "Introduceți numele fișierului JSON: " file
read -p "Introduceți calea către câmpul dorit (ex: .nume): " field
jq "$field" "$file"
25. Utilizarea curl pentru a verifica statusul unui API
 
Verifică dacă un API returnează un cod de status 200.
#!/bin/bash
read -p "Introduceți URL-ul API-ului: " url
response=$(curl -o /dev/null -s -w "%{http_code}" "$url")
if <nowiki>[[ $response -eq 200 ]]</nowiki>; then
    echo "API-ul este disponibil."
else
    echo "API-ul a returnat un cod de status: $response"
fi
26. Afișarea utilizatorilor care au acces la sistem folosind awk
 
Afișează toți utilizatorii din /etc/passwd care au un shell specificat.
#!/bin/bash
read -p "Introduceți shell-ul căutat (ex: /bin/bash): " shell
awk -F':' -v shell="$shell" '$7 == shell {print $1}' /etc/passwd
27. Afișarea numărului de fișiere dintr-un director
 
Utilizează find și wc pentru a număra fișierele dintr-un director specificat.
#!/bin/bash
read -p "Introduceți calea directorului: " dir
num_files=$(find "$dir" -type f | wc -l)
echo "Numărul de fișiere din directorul $dir este: $num_files"
28. Utilizarea sed pentru a înlocui text într-un fișier
 
Înlocuiește un cuvânt cu altul într-un fișier specificat.
#!/bin/bash
read -p "Introduceți numele fișierului: " file
read -p "Introduceți cuvântul de înlocuit: " old_word
read -p "Introduceți cuvântul nou: " new_word
sed -i "s/$old_word/$new_word/g" "$file"
29. Afișarea primelor 10 linii dintr-un fișier folosind head
#!/bin/bash
read -p "Introduceți numele fișierului: " file
head -n 10 "$file"
30. Afișarea ultimele 10 linii dintr-un fișier folosind tail
#!/bin/bash
read -p "Introduceți numele fișierului: " file
tail -n 10 "$file"
31. Verificarea existenței unui fișier folosind test
#!/bin/bash
read -p "Introduceți numele fișierului: " file
if test -e "$file"; then
    echo "Fișierul există."
else
    echo "Fișierul nu există."
fi
32. Afișarea utilizatorului curent
#!/bin/bash
echo "Utilizatorul curent este: $USER"
33. Afișarea directorului curent
#!/bin/bash
echo "Directorul curent este: $(pwd)"
34. Afișarea datei curente
#!/bin/bash
echo "Data curentă este: $(date)"
35. Afișarea memoriei disponibile
#!/bin/bash
free -h | awk 'NR==2{print "Memorie disponibila: "$7}'
36. Rularea unui script în fundal
#!/bin/bash
sleep 60 &
echo "Scriptul rulează în fundal."
37. Afișarea PID-ului procesului curent
#!/bin/bash
echo "PID-ul procesului curent este: $$"
38. Afișarea statisticilor CPU
#!/bin/bash
top -bn1 | grep "Cpu(s)"
39. Verificarea proceselor curente, sortat dupa utilizare CPU
#!/bin/bash
ps aux | sort -k3r
40. Afisarea numărului de procesoare
#!/bin/bash
echo "Număr de procesoare: $(( $(cut -d'-' -f2 /sys/devices/system/cpu/present) + 1 ))"
41. Generarea unui fișier de ieșire
#!/bin/bash
echo "Aceasta este o ieșire de test." > output.txt
 
== Fișier data.json de test, util pentru exercițiu ==
{
  "users": [
    {
      "name": "Ion Popescu",
      "age": 30,
      "email": "ion.popescu@example.com",
      "hobbies": ["fotbal", "citit", "programare"],
      "address": {
        "street": "Strada Principală 12",
        "city": "București",
        "postal_code": "010101"
      }
    },
    {
      "name": "Maria Ionescu",
      "age": 25,
      "email": "maria.ionescu@example.com",
      "hobbies": ["gătit", "călătorii", "muzică"],
      "address": {
        "street": "Strada Florilor 45",
        "city": "Cluj-Napoca",
        "postal_code": "400000"
      }
    },
    {
      "name": "George Vasilescu",
      "age": 35,
      "email": "george.vasilescu@example.com",
      "hobbies": ["pictură", "jogging", "tehnologie"],
      "address": {
        "street": "Bulevardul Revoluției 10",
        "city": "Timișoara",
        "postal_code": "300000"
      }
    }
  ]
}
 
'''Utilizare:'''
jq '.users[].address' data.json
sau
jq '.users[] | select(.name == "Ion Popescu") | .address' data.json
sau
jq '.users[].name' data.json
 
 
Aceste exerciții avansate acoperă o gamă largă de concepte și instrumente din Bash, inclusiv manipularea textului, procesarea fișierelor JSON, gestionarea semnalelor, și interacțiunea cu API-uri. Acestea te ajută să îți dezvolți abilitățile și să te familiarizezi cu utilizarea diverselor comenzi și structuri în scriptingul Bash.
 
 




[[Bash_Pagina_118|Pagina anterioară]] | [[Bash_Pagina_120|Pagina următoare]]
[[Bash_Pagina_118|Pagina anterioară]] | [[Bash_Pagina_120|Pagina următoare]]

Versiunea curentă din 31 octombrie 2024 08:48

Exerciții recapitulative elementare Bash

Această pagină wiki conține o serie de exerciții pentru a recapitula sintaxa și conceptele esențiale în Bash. Fiecare exercițiu se concentrează pe utilizarea diferitelor structuri de control, cum ar fi if, while, for, și altele. Exercițiile variază de la afișarea numerelor până la identificarea numerelor prime.

1. Afișarea numerelor pare

#!/bin/bash
for ((i=1; i<=20; i++)); do
   if ((i % 2 == 0)); then
       echo "$i"
   fi
done

2. Afișarea numerelor impare

#!/bin/bash
for ((i=1; i<=20; i++)); do
   if ((i % 2 != 0)); then
       echo "$i"
   fi
done

3. Afișarea numerelor prime

#!/bin/bash
for ((num=2; num<=100; num++)); do
   is_prime=1
   for ((i=2; i*i<=num; i++)); do
       if ((num % i == 0)); then
           is_prime=0
           break
       fi
   done
   if ((is_prime)); then
       echo "$num"
   fi
done

4. Afișarea factorialului unui număr

#!/bin/bash
read -p "Introduceți un număr: " n
factorial=1
for ((i=1; i<=n; i++)); do
   factorial=$((factorial * i))
done
echo "Factorialul lui $n este $factorial"

5. Afișarea tabloului de înmulțire

#!/bin/bash
for ((i=1; i<=10; i++)); do
   for ((j=1; j<=10; j++)); do
       echo -n "$((i * j)) "
   done
   echo
done

6. Afișarea numerelor Fibonacci

#!/bin/bash
a=0
b=1
echo "Numerele Fibonacci:"
for ((i=0; i<10; i++)); do
   echo "$a"
   fn=$((a + b))
   a=$b
   b=$fn
done

7. Verificarea dacă un număr este par sau impar

#!/bin/bash
read -p "Introduceți un număr: " num
if ((num % 2 == 0)); then
   echo "$num este par."
else
   echo "$num este impar."
fi

8. Afișarea numerelor de la 1 la 50 folosind while

#!/bin/bash
i=1
while ((i <= 50)); do
   echo "$i"
   ((i++))
done

9. Numărarea vocale în șir

#!/bin/bash
read -p "Introduceți un șir: " str
count=0
for ((i=0; i<${#str}; i++)); do
   char="${str:i:1}"
   if [[ $char =~ [aeiouAEIOU] ]]; then
       ((count++))
   fi
done
echo "Numărul de vocale în șirul dat este: $count"

10. Afișarea zilelor săptămânii

#!/bin/bash
days=("Luni" "Marți" "Miercuri" "Joi" "Vineri" "Sâmbătă" "Duminică")
for day in "${days[@]}"; do
   echo "$day"
done

11. Afișarea inversă a unui șir

#!/bin/bash
read -p "Introduceți un șir: " str
rev_str=""
for ((i=${#str}-1; i>=0; i--)); do
   rev_str+="${str:i:1}"
done
echo "Șirul inversat este: $rev_str"

12. Verificarea unui număr prim

#!/bin/bash
read -p "Introduceți un număr: " num
is_prime=1
if ((num < 2)); then
   is_prime=0
else
   for ((i=2; i*i<=num; i++)); do
       if ((num % i == 0)); then
           is_prime=0
           break
       fi
   done
fi
if ((is_prime)); then
   echo "$num este prim."
else
   echo "$num nu este prim."
fi

13. Afișarea pătratelor numerelor de la 1 la 10

#!/bin/bash
for ((i=1; i<=10; i++)); do
   echo "$i^2 = $((i * i))"
done

14. Afișarea tabelului de împărțire

#!/bin/bash
for ((i=1; i<=10; i++)); do
   for ((j=1; j<=10; j++)); do
       echo -n "$((j / i)) "
   done
   echo
done

15. Afișarea numerelor de la 1 la 100 care sunt divizibile cu 3

#!/bin/bash
for ((i=1; i<=100; i++)); do
   if ((i % 3 == 0)); then
       echo "$i"
   fi
done

16. Afișarea numerelor de la 1 la 100 care sunt divizibile cu 5

#!/bin/bash
for ((i=1; i<=100; i++)); do
   if ((i % 5 == 0)); then
       echo "$i"
   fi
done

17. Afișarea numerelor de la 1 la 100 care sunt atât pare, cât și divizibile cu 4

#!/bin/bash
for ((i=1; i<=100; i++)); do
   if ((i % 2 == 0 && i % 4 == 0)); then
       echo "$i"
   fi
done

18. Afișarea numerelor de la 1 la 100 care sunt atât impare, cât și divizibile cu 3

#!/bin/bash
for ((i=1; i<=100; i++)); do
   if ((i % 2 != 0 && i % 3 == 0)); then
       echo "$i"
   fi
done

19. Afișarea numărului de linii dintr-un fișier

#!/bin/bash
read -p "Introduceți calea către fișier: " file
if [[ -f $file ]]; then
   lines=$(wc -l < "$file")
   echo "Numărul de linii din fișier este: $lines"
else
   echo "Fișierul nu există."
fi

20. Afișarea numerelor de la 1 la 50 folosind until

#!/bin/bash
i=1
until ((i > 50)); do
   echo "$i"
   ((i++))
done

Aceste exerciții elementare acoperă diferite structuri de control și concepte în Bash, oferind o bază solidă pentru aprofundarea cunoștințelor în scriptingul Bash.

Exercitii recapitulative avansate Bash

Această pagină wiki conține exerciții avansate pentru a recapitula utilizarea unor instrumente și concepte avansate în Bash, inclusiv sed, awk, trap, procesarea JSON, și utilizarea curl pentru interacțiunea cu API-uri. Exercițiile sunt proiectate să te ajute să îți îmbunătățești abilitățile de scripting și manipulare a datelor.

21. Procesarea unui fișier text cu sed

Afișează toate liniile dintr-un fișier care conțin un anumit cuvânt, utilizând sed.

#!/bin/bash
read -p "Introduceți numele fișierului: " file
read -p "Introduceți cuvântul căutat: " word
sed -n "/$word/p" "$file"

22. Extrage informații folosind awk

Afișează al doilea câmp dintr-un fișier CSV.

#!/bin/bash
read -p "Introduceți numele fișierului CSV: " file
awk -F',' '{print $2}' "$file"

23. Utilizarea trap pentru gestionarea semnalelor

Afișează un mesaj atunci când scriptul este întrerupt (CTRL+C).

#!/bin/bash
trap 'echo "Scriptul a fost întrerupt."; exit' SIGINT
while true; do
   echo "Scriptul rulează..."
   sleep 1
done

24. Procesarea fișierelor JSON cu jq

Extrage un anumit câmp dintr-un fișier JSON folosind jq.

#!/bin/bash
read -p "Introduceți numele fișierului JSON: " file
read -p "Introduceți calea către câmpul dorit (ex: .nume): " field
jq "$field" "$file"

25. Utilizarea curl pentru a verifica statusul unui API

Verifică dacă un API returnează un cod de status 200.

#!/bin/bash
read -p "Introduceți URL-ul API-ului: " url
response=$(curl -o /dev/null -s -w "%{http_code}" "$url")
if [[ $response -eq 200 ]]; then
   echo "API-ul este disponibil."
else
   echo "API-ul a returnat un cod de status: $response"
fi

26. Afișarea utilizatorilor care au acces la sistem folosind awk

Afișează toți utilizatorii din /etc/passwd care au un shell specificat.

#!/bin/bash
read -p "Introduceți shell-ul căutat (ex: /bin/bash): " shell
awk -F':' -v shell="$shell" '$7 == shell {print $1}' /etc/passwd

27. Afișarea numărului de fișiere dintr-un director

Utilizează find și wc pentru a număra fișierele dintr-un director specificat.

#!/bin/bash
read -p "Introduceți calea directorului: " dir
num_files=$(find "$dir" -type f | wc -l)
echo "Numărul de fișiere din directorul $dir este: $num_files"

28. Utilizarea sed pentru a înlocui text într-un fișier

Înlocuiește un cuvânt cu altul într-un fișier specificat.

#!/bin/bash
read -p "Introduceți numele fișierului: " file
read -p "Introduceți cuvântul de înlocuit: " old_word
read -p "Introduceți cuvântul nou: " new_word
sed -i "s/$old_word/$new_word/g" "$file"

29. Afișarea primelor 10 linii dintr-un fișier folosind head

#!/bin/bash
read -p "Introduceți numele fișierului: " file
head -n 10 "$file"

30. Afișarea ultimele 10 linii dintr-un fișier folosind tail

#!/bin/bash
read -p "Introduceți numele fișierului: " file
tail -n 10 "$file"

31. Verificarea existenței unui fișier folosind test

#!/bin/bash
read -p "Introduceți numele fișierului: " file
if test -e "$file"; then
   echo "Fișierul există."
else
   echo "Fișierul nu există."
fi

32. Afișarea utilizatorului curent

#!/bin/bash
echo "Utilizatorul curent este: $USER"

33. Afișarea directorului curent

#!/bin/bash
echo "Directorul curent este: $(pwd)"

34. Afișarea datei curente

#!/bin/bash
echo "Data curentă este: $(date)"

35. Afișarea memoriei disponibile

#!/bin/bash
free -h | awk 'NR==2{print "Memorie disponibila: "$7}'

36. Rularea unui script în fundal

#!/bin/bash
sleep 60 &
echo "Scriptul rulează în fundal."

37. Afișarea PID-ului procesului curent

#!/bin/bash
echo "PID-ul procesului curent este: $$"

38. Afișarea statisticilor CPU

#!/bin/bash
top -bn1 | grep "Cpu(s)"

39. Verificarea proceselor curente, sortat dupa utilizare CPU

#!/bin/bash
ps aux | sort -k3r

40. Afisarea numărului de procesoare

#!/bin/bash
echo "Număr de procesoare: $(( $(cut -d'-' -f2 /sys/devices/system/cpu/present) + 1 ))"

41. Generarea unui fișier de ieșire

#!/bin/bash
echo "Aceasta este o ieșire de test." > output.txt

Fișier data.json de test, util pentru exercițiu

{
 "users": [
   {
     "name": "Ion Popescu",
     "age": 30,
     "email": "ion.popescu@example.com",
     "hobbies": ["fotbal", "citit", "programare"],
     "address": {
       "street": "Strada Principală 12",
       "city": "București",
       "postal_code": "010101"
     }
   },
   {
     "name": "Maria Ionescu",
     "age": 25,
     "email": "maria.ionescu@example.com",
     "hobbies": ["gătit", "călătorii", "muzică"],
     "address": {
       "street": "Strada Florilor 45",
       "city": "Cluj-Napoca",
       "postal_code": "400000"
     }
   },
   {
     "name": "George Vasilescu",
     "age": 35,
     "email": "george.vasilescu@example.com",
     "hobbies": ["pictură", "jogging", "tehnologie"],
     "address": {
       "street": "Bulevardul Revoluției 10",
       "city": "Timișoara",
       "postal_code": "300000"
     }
   }
 ]
}

Utilizare:

jq '.users[].address' data.json

sau

jq '.users[] | select(.name == "Ion Popescu") | .address' data.json

sau

jq '.users[].name' data.json


Aceste exerciții avansate acoperă o gamă largă de concepte și instrumente din Bash, inclusiv manipularea textului, procesarea fișierelor JSON, gestionarea semnalelor, și interacțiunea cu API-uri. Acestea te ajută să îți dezvolți abilitățile și să te familiarizezi cu utilizarea diverselor comenzi și structuri în scriptingul Bash.



Pagina anterioară | Pagina următoare