Bash Pagina 119: Diferență între versiuni
Admin (discuție | contribuții) |
Admin (discuție | contribuții) Fără descriere a modificării |
||
(Nu s-a afișat o versiune intermediară efectuată de același utilizator) | |||
Linia 267: | Linia 267: | ||
35. Afișarea memoriei disponibile | 35. Afișarea memoriei disponibile | ||
#!/bin/bash | #!/bin/bash | ||
free -h | free -h | awk 'NR==2{print "Memorie disponibila: "$7}' | ||
36. Rularea unui script în fundal | 36. Rularea unui script în fundal | ||
#!/bin/bash | #!/bin/bash | ||
Linia 278: | Linia 278: | ||
#!/bin/bash | #!/bin/bash | ||
top -bn1 | grep "Cpu(s)" | top -bn1 | grep "Cpu(s)" | ||
39. Verificarea proceselor curente | 39. Verificarea proceselor curente, sortat dupa utilizare CPU | ||
#!/bin/bash | #!/bin/bash | ||
ps aux | ps aux | sort -k3r | ||
40. Generarea unui fișier de ieșire | 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 | #!/bin/bash | ||
echo "Aceasta este o ieșire de test." > output.txt | echo "Aceasta este o ieșire de test." > output.txt | ||
== Fișier json de test, util pentru exercițiu == | == Fișier data.json de test, util pentru exercițiu == | ||
{ | { | ||
"users": [ | "users": [ | ||
Linia 324: | Linia 327: | ||
} | } | ||
Utilizare: | '''Utilizare:''' | ||
jq '.users[].address' data.json | jq '.users[].address' data.json | ||
sau | sau |
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.