Ce face history
Bash ține minte comenzile scrise în sesiunea curentă și, la ieșire, le salvează în ~/.bash_history. history le afișează numerotate; cu un număr, de exemplu history 20, afișează doar ultimele 20.
Comenzile se pot repeta fără să fie rescrise: !! este ultima comandă (des folosit ca sudo !!), !42 este comanda cu numărul 42, iar !ssh este ultima comandă care începe cu „ssh”. Cel mai practic este Ctrl+R: scrii o parte din comandă și Bash îți arată ultima potrivire; mai apeși Ctrl+R pentru potrivirile mai vechi.
Variabilele HISTSIZE (câte comenzi în memorie) și HISTFILESIZE (câte în fișier) controlează lungimea istoricului. HISTCONTROL=ignoreboth nu salvează dublurile și comenzile care încep cu spațiu, iar HISTTIMEFORMAT adaugă data și ora. Se pun în ~/.bashrc.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
history N |
Ultimele N comenzi. |
!!, !N, !text |
Repetă ultima comandă, comanda numărul N sau ultima care începe cu text. |
!$ |
Ultimul argument al comenzii anterioare. |
Ctrl+R |
Căutare inversă interactivă în istoric. |
history -c |
Golește istoricul din memorie. |
history -d N |
Șterge intrarea cu numărul N. |
HISTSIZE, HISTFILESIZE, HISTCONTROL, HISTTIMEFORMAT |
Variabile pentru mărime, filtrare și afișarea datei. |
Exemple
Exemplul 1: Citirea și afișarea unui istoric
Într-un terminal, istoricul se completează singur. Aici, într-un script, activăm istoricul cu set -o history, încărcăm comenzile dintr-un fișier cu history -r, apoi le filtrăm cu grep. Comenzile scrise după încărcare (inclusiv history) primesc și ele numere.
cat > istoric.txt <<'EOF'
cd /var/www/dexblog
git pull
sudo systemctl restart nginx
tail -n 50 /var/log/nginx/error.log
EOF
set -o history
history -c
history -r istoric.txt
history | grep nginx
Rezultat
4 sudo systemctl restart nginx
5 tail -n 50 /var/log/nginx/error.log
6 history | grep nginx
Exemplul 2: Repetarea ultimei comenzi cu sudo
Ai uitat sudo. !! se înlocuiește cu ultima comandă, iar Bash afișează comanda completă înainte s-o ruleze.
apt update
sudo !!
Ieșire în terminal
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
sudo apt update
Hit:1 http://ro.archive.ubuntu.com/ubuntu noble InRelease
Exemplul 3: Istoric mai lung, fără dubluri, cu data și ora
Liniile se adaugă în ~/.bashrc. După source ~/.bashrc, history arată și momentul fiecărei comenzi.
HISTSIZE=10000
HISTFILESIZE=20000
HISTCONTROL=ignoreboth
HISTTIMEFORMAT="%F %T "
history 2
Ieșire în terminal
501 2026-10-25 09:14:02 git pull
502 2026-10-25 09:14:30 history 2
Greșeli frecvente
- Scrierea parolelor sau a cheilor API direct în comenzi: ajung în
~/.bash_history. CuHISTCONTROL=ignorespace(sauignoreboth), o comandă care începe cu spațiu nu se salvează. - Folosirea lui
!textfără verificare: poate rula o comandă veche periculoasă. Cu!text:pdoar o afișezi, fără s-o rulezi. - Mai multe terminale deschise își suprascriu istoricul la ieșire;
shopt -s histappendface ca fiecare să adauge la fișier.
Comenzi înrudite
alias: Creează scurtături personalizate și memorabile pentru comenzi lungi sau frecvente.source: Execută comenzile dintr-un fișier direct în contextul shell-ului curent, păstrând variabilele și funcțiile.export: Transformă o variabilă de shell într-o variabilă de mediu (environment variable) accesibilă proceselor copil.man: Deschide manualul oficial al unei comenzi, al unui fișier de configurare sau al unei funcții, direct în terminal.