sie 25

.bashrc – główny plik konfiguracyjny jednej z najpopularniejszych powłok systemowych dla Linuksa. Umożliwia nam personalizację Bash’a, aby jak najlepiej dostosować go do swoich potrzeb. Zazwyczaj wraz z upływem czasu wydłuża się jego zawartość, użytkownicy dodają wpisy ułatwiając sobie późniejszą pracę. W tym poście mam zamiar podzielić się moim .bashrc. Ameryki na pewno nie odkryję, bo wszystkie przedstawione przeze mnie rzeczy znalazłem wcześniej w Sieci, ale liczę, że ktoś jeszcze ich nie spotkał i okażą się przydatne ;)

Na początek podaję całą zawartość mojego pliku. Za moment zajmę się omówieniem poszczególnych jego fragmentów.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Check for an interactive session
[ -z "$PS1" ] && return
 
export EDITOR=nano
 
# wyświetlanie daty przy każdym poleceniu w historii
export HISTTIMEFORMAT="| %d/%m/%y %T | "
 
# kolorowanie plików man
export LESS_TERMCAP_mb=$'\E[01;31m'
export LESS_TERMCAP_md=$'\E[01;31m'
export LESS_TERMCAP_me=$'\E[0m'
export LESS_TERMCAP_se=$'\E[0m'                           
export LESS_TERMCAP_so=$'\E[01;44;33m'                                 
export LESS_TERMCAP_ue=$'\E[0m'
export LESS_TERMCAP_us=$'\E[01;32m'
 
#aliasy
alias ls='ls -ahl --color=auto'
alias pacman="sudo pacman-color"
alias grep='grep --color'
alias r='sudo su'
alias ..='cd ..'
alias x='startx'
alias c='clear'
alias mount='sudo mount'
alias umount='sudo umount'
alias play="sudo wvdial play"
alias sh='sudo shutdown -h now'
 
 
#konfiguracja wiersza poleceń
if [[ $( whoami ) == root ]]; then
  PS1="\[\033[0;34m\][\u@\h] \[\033[0;33m\][ \t ] \[\033[0;31m\][ \w ] \[\033[0m\] \n >> "
else
  PS1="\[\033[0;32m\][\u@\h] \[\033[0;33m\][ \t ] \[\033[0;31m\][ \w ] \[\033[0m\] \n >> "
fi
#domyslna
#PS1='[\u@\h \W]\$ '
 
# autouzupełnianie poleceń poprzedzonych przez 'sudo'
if [ "$PS1" ]; then
  complete -cf sudo
fi
 
# 10 najczęściej używanych poleceń
topten () {
    history | awk '{a[$6]++ } END{for(i in a){print a[i] " " i}}' | sort -rn | head
}
 
# blokowanie > jeżeli plik istnieje
set -o noclobber

Na początek linia 2. – standardowa opcja sprawdzająca, czy Bash jest uruchomiony w trybie interaktywnym.

Linia 4. to ustawienie domyślnego edytora – Vim, Kate, Nano… co kto lubi :-)

7. linia związana jest z poleceniem history. Określa format daty, która będzie dodatkowo wyświetlana przy każdym wpisie na liście ostatnio używanych komend.

W liniach od 10. do 16. zawarte są opcje kolorowania składni plików manuala. Bardzo pomocne, bo nagłówki, wszystkie opcje i opisywane parametry są wyróżnione, przez co tekst nie zlewa się w niewyraźną całość. O samym kolorowaniu nie będę się rozpisywał, krótko i treściwie zostało to już przedstawione pod tym adresem.

Kolejne kilkanaście linijek to aliasy – głównie dodanie parametrów, które i tak za każdym razem byłyby przeze mnie dopisywane, ewentualnie skrócenie niektórych nazw poleceń. Niektórzy dodają nawet aliasy będące najczęściej popełnianymi przez nich literówkami (np.: alias gerp=’grep –color’). Można i tak, grunt żeby ułatwić sobie życie :P

Linie od 32. do 36. to krótki warunek definiujący wygląd wiersza poleceń. Oprócz zazwyczaj spotykanych nazw użytkownika i hosta dodane są także aktualna godzina oraz bieżący katalog. Całość została przejrzyście pokolorowana. Dodatkowo po zalogowaniu się na konto root jego nazwa jest zapisana innym kolorem.

Następny warunek włącza uzupełnianie poleceń poprzedzonych sudo – czyli nadal działa nam nieoceniony klawisz TAB ;-)

Funkcja topten() zgrabnie wyciąga z historii najczęściej używane polecenia. Pomijając zawiłości awk można powiedzieć, że zapakowaliśmy w nią cztery polecenia, jedno po drugim opracowujące dla nas żądaną listę.

Ostatnia opcja uchroniła mnie już kilka razy przed utratą mniej lub bardziej ważnych danych. Blokuje bowiem nadpisanie istniejącego pliku przekierowanym na niego strumieniem. Przy próbie ww. działania zostaniemy poinformowani, że nie jest to możliwe.

Jeśli macie jakieś ciekawe tricki dodane do .bashrc i chcecie się nimi podzielić – zapraszam do komentowania :-)

Odpowiedz