Un script Bash este un fișier text care conține comenzi Linux rulate în ordine. În loc să scrii aceleași comenzi manual de fiecare dată, le pui într-un fișier, îl faci executabil și îl rulezi când ai nevoie. Bash este descris în manualul GNU ca un interpretor de comenzi compatibil cu sh, folosit atât interactiv, cât și pentru scripturi.
Pentru primul script, nu începe cu ceva riscant. Nu face scripturi care șterg fișiere, modifică permisiuni sau rulează comenzi cu sudo. Cel mai bun exercițiu este un script care creează un backup local pentru un folder de test și salvează un mic log.
Ce vrem să facă scriptul
Scriptul nostru va face patru lucruri clare:
- verifică dacă există folderul pe care vrei să îl salvezi;
- creează un folder de backup dacă nu există;
- arhivează folderul sursă într-un fișier
.tar.gz; - scrie un mesaj într-un fișier de log.
Vom folosi un folder de test, nu directoare importante din sistem.
Creează întâi mediul de lucru:
mkdir -p ~/practica-bash/documente
echo "test backup" > ~/practica-bash/documente/nota.txt
mkdir -p ~/practica-bash/scripturi
cd ~/practica-bash/scripturi
Creează fișierul scriptului
Deschide un fișier nou:
nano backup-simplu.sh
Pune în el acest script:
#!/usr/bin/env bash
SOURCE_DIR="$HOME/practica-bash/documente"
BACKUP_DIR="$HOME/practica-bash/backups"
LOG_FILE="$HOME/practica-bash/backup.log"
DATE_NOW="$(date +%Y-%m-%d_%H-%M-%S)"
BACKUP_FILE="$BACKUP_DIR/documente-$DATE_NOW.tar.gz"
if [ ! -d "$SOURCE_DIR" ]; then
echo "Eroare: folderul sursa nu exista: $SOURCE_DIR"
echo "$DATE_NOW - EROARE - Folderul sursa nu exista" >> "$LOG_FILE"
exit 1
fi
mkdir -p "$BACKUP_DIR"
tar -czf "$BACKUP_FILE" -C "$SOURCE_DIR" .
if [ $? -eq 0 ]; then
echo "Backup creat cu succes: $BACKUP_FILE"
echo "$DATE_NOW - OK - Backup creat: $BACKUP_FILE" >> "$LOG_FILE"
else
echo "Eroare: backup-ul nu a putut fi creat"
echo "$DATE_NOW - EROARE - Backup esuat" >> "$LOG_FILE"
exit 1
fi
Salvează în Nano cu Ctrl + O, apoi Enter, apoi ieși cu Ctrl + X.
Ce înseamnă fiecare parte
Prima linie este:
#!/usr/bin/env bash
Aceasta se numește shebang și îi spune sistemului să ruleze fișierul cu Bash. Manualul Bash explică faptul că Bash poate rula comenzi dintr-un fișier, adică exact ce facem aici cu scriptul nostru.
Apoi avem variabile:
SOURCE_DIR="$HOME/practica-bash/documente"
BACKUP_DIR="$HOME/practica-bash/backups"
LOG_FILE="$HOME/practica-bash/backup.log"
Variabilele fac scriptul mai ușor de citit. Dacă vrei să schimbi folderul sursă, modifici o singură linie.
Verificarea aceasta este foarte importantă:
if [ ! -d "$SOURCE_DIR" ]; then
Ea verifică dacă folderul sursă nu există. Dacă lipsește, scriptul afișează eroare, scrie în log și se oprește cu:
exit 1
În Bash, comenzile returnează un status de ieșire; manualul GNU precizează că exit status-ul unei comenzi este o valoare între 0 și 255, iar 0 indică, în mod obișnuit, succesul.
Fă scriptul executabil și rulează-l
Acum verifică fișierul:
ls -l backup-simplu.sh
Fă-l executabil:
chmod u+x backup-simplu.sh
Rulează-l:
./backup-simplu.sh
Dacă totul a mers bine, vei vedea un mesaj cu locația arhivei create. Verifică rezultatul:
ls -lh ~/practica-bash/backups
cat ~/practica-bash/backup.log
Ai acum un script Bash real, sigur și util.
Testează scriptul înainte să îl folosești pe date importante
Un pas foarte bun este să folosești ShellCheck. ShellCheck este descris ca unealtă de analiză statică pentru scripturi shell, care oferă avertismente și sugestii pentru Bash și sh.
Pe Ubuntu/Debian îl poți instala așa:
sudo apt update
sudo apt install shellcheck
Apoi verifici scriptul:
shellcheck backup-simplu.sh
Dacă primești avertismente, citește-le. Nu le ignora doar pentru că scriptul „pare că merge”.
Ce să nu faci în primul script
Nu folosi rm -rf.
Nu rula scripturi cu sudo dacă nu este absolut necesar.
Nu lucra direct pe /etc, /var, /usr sau foldere de sistem.
Nu copia scripturi de pe internet fără să înțelegi fiecare linie.
Nu face backup doar în același loc dacă datele sunt importante.
Primul tău script Bash trebuie să fie simplu, verificabil și reversibil. Dacă înțelegi variabilele, if, exit, permisiunea de executare, logul și testarea cu ShellCheck, ai deja o bază solidă pentru scripturi mai utile: verificări de server, backup-uri automate, rapoarte de sistem și mentenanță Linux.
Surse folosite
GNU Bash Reference Manual.
Linux manual page — bash.
GNU Bash Manual — Exit Status.
ShellCheck — static analysis tool for shell scripts.

















































