ITBlog

IT Blog w tematach różnych...

  • O blogu…
  • Edukacja
    • Moodle – stare
    • Moodle2
    • Testy
    • Wykłady IT
  • Firma

Linux i kolorowy znak zachęty wiersza poleceń

Napisane przez Igor Brzeżek on 21 grudnia 2022
Napisane w: Linux Debian, Systemy operacyjne.

Znak zachęty wiersza poleceń (ang. prompt) to dość istotny element pracy z systemem Linux. W zależności od wydania i wersji jego domyślny wygląd może być różny. Ja chciałem ustawić go tak, aby wyglądał jak niżej:

Mój 'prompt’ składa się z nazwy użytkownika, nazwy hosta oraz aktualnego katalogu, a wszystko to w trzech kolorach:
– dla użytkownika 'root’ kolor czerwony dla innych zielony
– nazwa hosta na żółto (tu wygląda jak brązowy)
– katalog roboczy na jasno niebiesko

Dzięki kolorom szybko orientuję się na jakim koncie pracuję (czasem zapomnę i nawet zapominam przeczytać 🙂

W dystrybucji Ubuntu
W dystrybucji Ubuntu wystarczy edytować plik ukryty plik o nazwie ’.bashrc’, wyszukać w nim sekcję jak niżej:

Zmienna PS1 określa właśnie jak wygląda znak zachęty i jakie ma kolory.
Pierwszy wpis PS1 można zakomentować, dodać pod nim kolejny o treści:

PS1=’\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[0;31m\]\u\[\033[1;30m\]@\[\033[00;33m\]\h\[\033[00m\] \[\033[01;34m\]\w\[\033[00m\] # ’

Sekcja 'else’ określa jak ma wyglądać znak zachęty w przypadku gdy nie mamy kolorowego terminala (chyba już dość rzadki przypadek) ale i tu można wstawić ten sam PS1.

W innych dystrybucjach
Jeśli mamy inną zawartość powyższego pliku (np bak sekcji „if [ „$color….” to można sprawę załatwić inaczej:

– w katalogu /etc tworzymy plik o nazwie np. 'promptcolors’
– do tego pliku wklejamy poniższy fragment

# =================================================
# Zmiana kolorow znaku zachety
# w zaleznosci od uzytkownika
# root - czerwony, inni - zielony

KR="\[\033[0;31m\]" #czerwony
KW="\[\033[0;37m\]" #bialy
KB="\[\033[0;34m\]" #niebieski
KY="\[\033[0;33m\]" #zolty
KG="\[\033[0;32m\]" #zielony
KLB="\[\033[1;34m\]" #jasnoniebieski

if [ $UID -eq 0 ]
then
 Znak='#'
 KolorNazwy=$KR
else
 Znak='$'
 KolorNazwy=$KG
fi

# If this is an xterm set the title to user@host:dir
case "$TERM" in
xterm*|rxvt*|linux)
 PS1="$KolorNazwy\u$KW@$KY\h$KW:$KLB\w$KW$Znak "
 ;;
*)
 ;;
esac

unset Znak KolorNazwy KR KW KB KY KG KLB

# Koniec skryptu
# ===================================================

Powyższy skrypt (zakładając, że jest zapisany w pliku o nazwie 'nazwa_skryptu’) można uruchomić z konsoli poleceniem:

>source nazwa_skryptu

Skrypt sprawdzi jaka jest twoja nazwa użytkownika (a raczej ID). Jeśli jesteś na koncie 'root’ to otrzymasz znak zachęty jak niżej:

Kolorowy znak zachęty Linux

Jeśli jesteś zwykłym użytkownikiem to twój znak zachęty będzie wyglądał jak niżej:

Znak zachęty zwykłego użytkownika

Aby powyższe zadziałało automatycznie można:
– wywołać skrypt w ogólnym skrypcie startowym powłoki (np /etc/bash.bashrc)
– wywołać skrypt we własnym pliku (w katalogu domowym) o nazwie ’.bashrc’

Aby wywołać nasz skrypt z ogólnego skryptu powłoki basha:
– edytujemy plik (z konta root) /etc/bash/bashrc
– na jego końcu dodajemy wywołanie naszego skryptu np:

#======================
# Kolory znaku zachety
if [ -f "/etc/promptcolors" ];
then
 . /etc/promptcolors
fi

Ta zmiana będzie miała wpływ na wszystkich użytkowników (o ile samodzielnie nie zdefiniowali sobie, w swoich plikach konfiguracyjnych innego wyglądu znaku zachęty)

Aby wywołać nasz skrypt z prywatnego pliku basha (dla aktualnie zalogowanego użytkownika):
– powyższy kod dopisujemy na końcu pliku ~/.bashrc czyli plik w katalogu domowym użytkownika, na którego aktualnie jestem zalogowany
– ta zmiana będzie oczywiście dotyczyć wyglądu znaku zachęty tylko aktualnego użytkownika
– aby zobaczyć zmiany należy się wylogować i ponownie zalogować

Ogólnie to chyba będzie bezpieczniej wykonywać zmiany tylko w swoich domowych plikach. Poza tym zwykły użytkownik i tak nie ma możliwości modyfikacji plików w katalogu /etc.

Automatyczna konfiguracja znaku zachęty dla nowych użytkowników 
Jeśli nie chcemy modyfikować pliku /etc/bash.bashrc a chcemy dla każdego nowego użytkownika ustalać kolorowy znak zachęty można to wykonać modyfikując plik tzw. szkieletu. Plik ten to /etc/skel/.bashrc. Dodamy na jego końcu wpis jaku wyżej (wywołanie skryptu zmian kolorów znaku zachęty) i mamy gotowe. Pliki z tegoż katalogu są automatycznie kopiowane do katalogu domowego każdego nowo utworzonego użytkownika.

Przykładowe znaki zachęty dla Bash i ZSH
Bash:
PS1=”\[\e[32m\][\[\e[m\]\[\e[1;34m\]\u\[\e[m\]\[\e[0;32m\]@\[\e[m\]\[\e[0;33m\]\h\[\e[m\]:\[\e[36m\]\w\[\e[m\]\[\e[32m\]]\[\e[m\]\$”

ZSH:
PROMPT=’%F{green}%n%F{white}@%F{cyan}%m:%F{yellow} %F{white}[%F{yellow}%d%F{white}]%F{green}$ %F{reset}’

Nawigacja

← Zmiana rozmiaru dysku wirtualnego i partycji systemu MS Windows pracującego w VirtualBox
VirtualBox i dodatki gościa dla Windows Server Core →
  • Szukaj

  • Kategorie

    • IT ogólnie (163)
      • AI (3)
      • Bezpieczeństwo (20)
        • Model AAA (7)
        • Szyfrowanie (1)
      • CCTV (3)
      • Hardware (2)
      • Podstawy informatyki (1)
      • Sieci (50)
        • Cisco (4)
          • Obsługa haseł (2)
        • MikroTik (8)
        • Monitorowanie sieci (6)
        • Pomiary w sieciach LAN (6)
          • iptraf-ng (3)
        • Protokół ARP (5)
        • Symulator sieci GNS3 (5)
        • Tunelowanie ruchu (6)
          • Tunele GRE (2)
          • Tunele SSH (4)
        • WLAN / WiFi (7)
      • Software (78)
        • Bazy danych (13)
        • Programowanie (21)
        • Systemy operacyjne (21)
          • Linux Debian (18)
        • Windows (8)
      • Wirtualizacja (26)
  • Ostatnie wpisy

    • Pomiary prędkości
    • SNMP-Exporter, Prometheus, Grafana + MikroTik
    • Monitorowanie sieci LAN za pomocą SNMP
    • Lokalny model Bielik dla Ollama
    • Hermes agent
  • Strona odwiedzona

    od 11.01.2013

  • Doskonała platforma e-learningowa Uzyskaj certyfikat IT

Proudly powered by WordPress Theme: Parament by Automattic.
7ads6x98y

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by