bash prompt i nie tylko

Z przyczyn różnych, ostatnio był mi potrzebny osobny Linux, najchętniej działający równocześnie z moim. Sprawę oczywiście rozwiązała wirtualizacja, a konkretnie VirtualBox. Zainstalowałem OpenSUSE (bardzo przyjemna dystrybucja), uruchomiłem emulator terminala (bo głównie w konsoli miałem pracować) i zabrałem się za robotę. Na początku oczywiście zmieniłem kolory terminala, bo na białym tle paskudnie się pracuje. Po jakimś czasie stwierdziłem, że ciągle coś jest nie tak. Dopiero po chwili zrozumiałem, że przeszkadza mi czytelność terminala, a raczej jej brak. Nie było od razu widać gdzie kończą się efekty działania jednego programu, gdzie jest polecenie wywołujące następny i jego wynik.

Chodzi oczywiście o kolory i wygląd prompt’a czyli tzw. znaku zachęty (to ten tekst który zachęca nas do wprowadzania poleceń w konsoli). Kolorowy od razu odróżnia się od szarego tekstu, a odpowiednia jego konstrukcja ułatwia np. szybkie orientowanie się w jakim katalogu aktualnie jesteśmy. Zamieszczam poniższy plik konfiguracyjny, gdyby ktoś z Was kiedyś chciał/potrzebował też ustawić sobie własnego prompt’a. Poniższe linijki dopisujemy do “~/.bashrc” i już.

BLACK='\[\033[0;30m\]'
WHITE='\[\033[1;37m\]'
GREY='\[\033[0;37m\]'
BGREY='\[\033[1;30m\]'
RED='\[\033[0;31m\]'
BRED='\[\033[1;31m\]'
GREEN='\[\033[0;32m\]'
BGREEN='\[\033[1;32m\]'
YELLOW='\[\033[0;33m\]'
BYELLOW='\[\033[1;33m\]'
PURPLE='\[\033[0;35m\]'
BPURPLE='\[\033[1;35m\]'
WHITE='\[\033[0;37m\]'
BWHITE='\[\033[1;37m\]'
BLUE='\[\033[0;34m\]'
BBLUE='\[\033[1;34m\]'
CYAN='\[\033[0;36m\]'
CCYAN='\[\033[1;36m\]'
CLEAR='\[\033[0m\]'

# \# - wyświetla numer aktualnego polecenia,
# \$ - wyświetla # dla root`a lub $ dla zwykłego użytkownika
# \d - wyświetla datę
# \t - wyświetla czas
# \h - wyświetla nazwę komputera
# \s - wyświetla nazwę powłoki
# \u - wyświetla login użytkownika
# \W - wyświetla tylko bieżący katalogu
# \w - wyświetla pełną scieżkę bieżącego katalogu

PS1="$RED\t $BGREEN\u$BBLUE@$BGREEN\h$BBLUE \w \\$ $CLEAR"

.bashrc pozwala nam robić też różne inne ciekawe rzeczy, jak np. wstawiać tam funkcje w bash’u.

Przykład:

[code lang=”bash”]

highlight (){
if [ -n “$1” ] ; then
sed “s/$1/\x1b[32;1m&\x1b[1;0m/g” /dev/stdin
else
echo “ERROR: What words to highlight?”
fi
}
[/code]

Powyższy kod jest funkcją która podświetla w wyjściu wykonywanego programu, zadane słowo na zielono.

Użycie:

cat jakis-plik.txt | highlight slowo

Wyświetli całą zawartość pliku “jakis-plik.txt”, a w wyświetlonym tekście zaznaczone na zielono zostaną wszystkie słowa “slowo”. Trochę jak grep, ale wyświetla cały tekst. :)

Z innych ciekawostek dotyczących bash’a:

  • Ctrl+w – wycina słowo do najbliższej spacji
  • Ctrl+y – wkleja wyciętą zawartość
  • Ctrl+7 – cofanie ostatniej operacji pisania/kasowania
Comment are closed.