Istorija, aliasi i konfiguracija terminala
Tab autocomplete, strelica gore i Ctrl+R pokriveni su u lekciji 2.4. Ova lekcija nadogradjuje sa fokusom na komandu history, aliase i konfiguraciju (~/.bashrc).
Komanda history
Bash cuva sve unesene komande u fajlu ~/.bash_history. Komanda history daje pristup toj listi:
# Prikaži celu istoriju
history
# Prikaži poslednjih 20 komandi
history 20
# Pretraži istoriju
history | grep tar
# Obrisi celu istoriju
history -c
# Obrisi odredjenu liniju (npr. liniju 42)
history -d 42
Ekspanzija istorije
# Ponovi poslednju komandu
!!
# Izvrsi komandu broj 42 iz istorije
!42
# Ponovi poslednju komandu koja pocinje sa "tar"
!tar
# Poslednji argument prethodne komande
!$
~/.bash_history
Istorija se trajno cuva u ovom fajlu. Mozes da podesis njeno ponasanje u ~/.bashrc:
# Povecaj velicinu istorije
export HISTSIZE=10000
export HISTFILESIZE=20000
# Ne cuvaj duplikate
export HISTCONTROL=ignoredups:erasedups
# Prikaži datum i vreme uz komande
export HISTTIMEFORMAT="%d/%m/%Y %T "
# Odmah sacuvaj komandu u istoriju (ne samo pri zatvaranju terminala)
PROMPT_COMMAND="history -a"
Aliasi
Alias je skracenica za duzu komandu. Umesto da svaki put kucas ls -la --color=auto, definises alias ll='ls -la --color=auto' i koristis ll.
Kreiranje aliasa
# Privremeni alias (samo u ovom terminalu, nestaje po zatvaranju)
alias ll='ls -la'
alias ..='cd ..'
alias gs='git status'
Listanje i uklanjanje
# Prikaži sve definisane aliase
alias
# Prikaži odredjeni alias
alias ll
# Ukloni alias
unalias ll
# Privremeno ignorisi alias (koristi originalnu komandu)
\ls
Korisni aliasi — primeri
alias ll='ls -la --color=auto'
alias la='ls -A'
alias ..='cd ..'
alias ...='cd ../..'
alias grep='grep --color=auto'
alias df='df -h'
alias du='du -h'
alias free='free -h'
alias cls='clear'
alias gs='git status'
alias gd='git diff'
alias update='sudo apt update && sudo apt upgrade'
~/.bashrc — trajna konfiguracija
Aliasi definisani u terminalu nestaju cim zatvoris prozor. Da budu trajni, dodaj ih u ~/.bashrc.
Fajl ~/.bashrc se automatski izvrsava pri svakom otvaranju novog (interaktivnog, ne-login) terminala.
# Uredi konfiguraciju
nano ~/.bashrc
# Dodaj na kraj fajla, na primer:
alias ll='ls -la --color=auto'
alias gs='git status'
export HISTSIZE=10000
Primena izmena bez restartovanja terminala
Nakon sto sacuvas izmene u ~/.bashrc, moras ih ucitati u aktivnu sesiju:
# Primeni izmene
source ~/.bashrc
# Ili krace (tacka je sinonim za source):
. ~/.bashrc
Bez ovog koraka, izmene vaze tek od sledeceg otvaranja terminala.
Drugi dotfajlovi — .bash_profile i .profile
Pored ~/.bashrc, postoje i drugi konfiguracioni fajlovi:
| Fajl | Kada se ucitava |
|---|---|
~/.bashrc |
Svaki novi interaktivni ne-login terminal (novi tab, nova sesija) |
~/.bash_profile |
Samo pri login sesiji (npr. SSH prijava, tekstualni login) |
~/.profile |
Login sesija ako ~/.bash_profile ne postoji; koriste ga i drugi shell-ovi (sh, dash) |
Prakticno
Vecina korisnika stavlja sve u ~/.bashrc. Medjutim, ~/.bash_profile cesto ima ovaj redak koji ucitava ~/.bashrc i za login sesije:
# Tipican sadrzaj ~/.bash_profile:
if [ -f ~/.bashrc ]; then
source ~/.bashrc
fi
Na taj nacin konfiguracija je konzistentna bez obzira kako si se prijavio.
Savet: Ako nesto definises u
~/.bashrcali ne radi u SSH sesiji — proveri da li~/.bash_profileucitava~/.bashrc.
Rezime
| Tema | Sta upamtiti |
|---|---|
history N |
Poslednjih N komandi |
!N, !!, !string |
Ekspanzija istorije |
~/.bash_history |
Fajl gde se cuva istorija |
alias ime='komanda' |
Definisi alias za sesiju |
alias / unalias |
Listaj / ukloni aliase |
~/.bashrc |
Trajne postavke (aliasi, PATH, HIST...) |
source ~/.bashrc |
Primeni izmene bez restartovanja |
~/.bash_profile |
Ucitava se samo pri login sesiji |