Wpis powstał po tym, jak skonfigurowałem sobie BASH-a, po długim "Googlaniu", próbach i błędach. Postanowiłem ułatwić życie potomności
.
BASH, jak wiadomo, jest tzw. powłoką systemowa. To on wykonuje polecenia, które mu wydajemy… I to jego dzisiaj pomęczymy
.
bashrc
Jak każdy program, tak i BASH posiada pewną konfiguracje, którą przechowuje w dwu plikach (w większości dystrybucji):
- /etc/bashrc – posiadającym ustawienia powłoki dla każdego użytkownika;
- ~/.bashrc (/home/użytkownik/.bashrc) – posiadającym ustawienia powłoki dla danego użytkownika.
W tym pliku możesz wiele zmienić, na przykład wyłączyć pewną funkcję w programie, stworzyć alias (polecenie lub ciąg poleceń wykonywanych gdy wpiszesz nazwę aliasu i ewentualne parametry), jak i skonfigurować powitania czy łańcuch znaków wyświetlany w miejscu, gdzie wpisujesz komendy ("znak zachęty")
Aliasy
Mogą być bardzo użyteczne. Na przykład polecenie ‘wysun’ (bez polskich znaków) może wysunąć tackę w napędzie ustawionym w aliase lub podanym po słowie ‘wysun’ (aliasy zrozumiesz po dłuższym czasie użytkowania terminala, a jakie aliasy będą Ci potrzebne, przekonasz się sam).
Przykład 1.
alias ls='ls -a'
Powyższy przykład spowoduje, że polecenie ls zawsze będzie uruchamiane z parametrem -a, gdyż nazwa aliasu jest taka sama, jak nazwa oryginalnego polecenia, a to zostanie "zastąpione" – oczywiście nie fizycznie, na dysku, a w konfiguracji powłoki.
Powitania
Wpisując w bashrc polecenie, zostanie ono wykonane za każdym razem, gdy uruchomisz terminal, czy będziesz się tekstowo logować.
Przykład 1.
echo 'miłej pracy (;'
Powyższy fragment kodu (polecenie echo, które wyświetla tekst z "argumentów" oraz sam tekst) dodany do konfiguracji, spowoduje, że BASH przywita Cię zdaniem:
miłej pracy (;
Przykład 2.
echo "mamy dzisiaj piękną datę - `date +'%d.%m.%Y'`"
Powyższy fragment (echo wyświetlające tekst i tekst zawierający wynik z polecenia date z "argumentami") spowoduje wyświetlenia:
mamy dzisiaj piękną datę – 14.07.2007
To "argumenty" decydują o formacie daty. Chcesz wiedzieć więcej?
date --help
oraz
man date wszystko Ci wyjaśnią.
"Znak zachęty"
Określa go zmienna PS1 .
Przykład 1.
export PS1='\u \A \w \$ '
A oto używane "kody specjalne":
\! - wyświetla numer polecenia historii, \# - wyświetla numer aktualnego polecenia, \$ - wyświetla # dla root`a i $ dla zwykłego użytkownika \\ - wyświetla znak \ \d - wyświetla datę \t - wyświetla czas \h - wyświetla nazwę komputera \n - przechodzi do nowego wiersza \nnn - wyświetla znak, który odpowiada wartości ósemkowej nnn \s - wyświetla nazwę powłoki \u - wyświetla login użytkownika \W - wyświetla podstawową nazwę bieżącego katalogu \w - wyświetla bieżące położenie
Do znaku zachęty możesz dodać każdy znak, który uznasz za odpowiedni – to Twój terminal, niech on będzie taki, jak Ty chcesz
.
Kolorowanie i ozdabianie tekstu w terminalu
Najlepsze zawsze na koniec
. Terminal BASH jest o tyle nowoczesny, że korzysta z możliwości monitorów kolorowych i potrafi wyświetlać tekst w kolorze. Może Ci się to wydać absurdalne, jeśli nie widziałeś na oczy czarno-białego monitora, ale uwierz, kiedyś takich używano – nie znano koloru na monitorze.
W BASH-u kolory i inne właściwości tekstu określają kody (ciągle kody, same kody – to jak gra
).
Kody i ich działanie
| Kod | Działanie |
|---|---|
| 0 | przywrócenie domyślnych właściwości |
| 1 | pogrubienie |
| 2 | rozjaśnienie koloru |
| 4 | podkreślenie |
| 5 | migotanie |
| 7 | odwrócone kolory |
| 22 | pogrubienie wyłączone |
| 24 | podkreślenie wyłączone |
| 25 | migotanie wyłączone |
| 27 | odwrócone kolory wyłączone |
| 30 | czarny tekst |
| 31 | czerwony tekst |
| 32 | zielony tekst |
| 33 | brązowy tekst |
| 34 | niebieski tekst |
| 35 | fioletowy tekst |
| 36 | turkusowy tekst |
| 37 | biały tekst (w palecie kolorów Tango!, w terminalu GNOME: szary) |
| 38 | podkreślenie, domyślny kolor tła |
| 39 | podkreślenie wyłączone, domyślny kolor tła |
| 40 | czarne tło |
| 41 | czerwone tło |
| 42 | zielone tło |
| 43 | brązowe tło |
| 44 | niebieskie tło |
| 45 | fioletowe tło |
| 46 | turkusowe tło |
| 47 | białe tło (w palecie kolorów Tango!, w terminalu GNOME: szare) |
| 49 | domyślny kolor tła |
Kolory osadza się następująco:
-
Dla polecenia echo
Należy wykonać polecenie z parametrem -e, a kod podawać w osobnych cudzysłowach przed tekstem (format kodu: \E[kodm a dla większej ilości \E[kod1;kod2m).
Przykład 1.
echo -e '\E[33m'"dzisiaj będzie"'\E[34m'"padać"'\E[0m'\E[33m ustawia brązowy kolor tekstu, \E[34m ustawia niebieski kolor tekstu, a \E[0m resetuje te ustawienia, by kolejne linie tekstu w terminalu wyglądały jak każde inne, a nie były niebieskie
. To trochę jak XML - otwierasz, to i zamknij (obszar o danych właściwościach). -
Dla zmiennej PS1
Należy kod (format kodu: \e[kodm a dla większej ilości \e[kod1;kod2m) wkleić w zmiennej, bez dodatkowych cudzysłowów.
Przykład 1.
export PS1='\u, \e[33m[\e[31m⌚ \A\e[33m]\e[0m \e[34m\w\e[0m \$ 'Przykład wygląda na skomplikowany przez dodane kolory, więc nie przejmuj się.
Po kolei: \u to nazwa użytkownika, \e[33m ustawia kolor brązowy dla nawiasu kwadratowego [, \e[31m ustawia kolor czerwony dla daty i znaku Unicode przed nią (symbol zegarka, blok: różne techniczne), \e[33m ustawia kolor brązowy dla nawiasu kwadratowego ], \e[0m resetuje właściwości, \e[34m ustawia kolor niebieski dla aktualnego katalogu, a \e[0m znów resetuje właściwości, ale dla znaku $ / # (o tym wcześniej było) i kolejnych linii tekstu w terminalu.
Moja konfiguracja
Jako, że ten Jogger to mój dziennik, mam prawo pochwalić się osobistymi wycieczkami i danymi export PS1='\u, \e[33m[\e[31m⌚ \A\e[33m]\e[0m \e[34m\w\e[0m \$ '
B="`date +'%B'`"
case "$B" in "styczeń") export mc='stycznia' ; "luty") export mc='lutego' ; "marzec") export mc='marca' ; "kwiecień") export mc='kwietnia' ; "maj") export mc='maja' ; "czerwiec") export mc='czerwca' ; "lipiec") export mc='lipca' ; "sierpień") export mc='sierpnia' ; "wrzesień") export mc='września' ; "październik") export mc='października' ; "listopad") export mc='listopada' ; "grudzień") export mc='grudnia' ; *) mc="`date +'%B'`"esac
echo -e "witaj, "'\E[4;1m'"`whoami`"'\E[0m'". mamy dzisiaj "'\E[32m'"`date +'%A, %d '`"$mc'\E[0m'" i "'\E[34m'"pogodę jak za oknem"'\E[0m'"."echo 'miłego dnia (;'
Pierwsza linia kodu powoduje zmianę formatu znaku zachęty na dokładnie taki, jaki opisałem.
Druga linia ustawia wartość zmiennej B na nazwę aktualnego miesiąca.
Kolejne linie (case ÷ esac) używają wartości zmiennej B i w zależności od jej wartości ustawiają wartość zmiennej mc.
Przedostatnia, niezwykle długa linia, powoduje wyświetlenie następującego tekstu (aktualna data i godzina):
witaj, livio. mamy dzisiaj piątek, 13 lipca i pogodę jak za oknem. miłego dnia (;
Linia zachęty wygląda tak:
livio, [⌚ 20:07] ~/Desktop $
Przydał Ci się ten wpis ? Możesz go wykopać lub dodać do zakładek w Twoim ulubionym serwisie.
Świetne.
Mój jest dużo skromniejszy, na starcie: "Witaj, Marcin!

Dziś jest sobota, 14 lipca.", a znak zachęty to "[$katalog] > ".
Cieszę się, że mój wpis się przydał
.
przed formatem miałem kolorowego basha.. teraz jak znajde czas to także sobie zrobie
Jaka powłoka logowania? Bash jest powłoką systemową, a za logowanie odpowiada /bin/login
Ja na zachętę proponuję:

PS1=’\[\033[00m\][\[\033[01;34m\]\W\[\033[00m\]] ‘
Mniejsza o większość
.
Ale to jest błąd nie do wybaczenia. To tak jak by nazwać psa kotem, albo królika zającem
Masz kilka błędów w "
rzykładzie 2":
— one działają.
1. użyłeś apostrofów miast cudzysłowów, co spowoduje dosłowne odczytanie backticków i wydrukuje <<`date %d.%m.%Y`>>.
2. format daty powinieneś poprzedzić plusem (date tego wymaga). Notabene skoro o nim mowa, bardziej niż "man date" pomocne będzie "man strftime".
3. to zauważam także dalej — używasz backticków do zastępowania poleceniem. Tymczasem w bash-u przyjęło się wykonywanie tego przy pomocy zmiennej z nawiasem — "$(polecenie)". Zapis ten jest przede wszystkim bardziej widoczny, po drugie jest częściej używany — przyznam szczerze, że dopiero u Ciebie spotkałem się z zastosowaniem backticków, i — co dziwniejsze
Idąc dalej, bash owszem, przechowuje konfigurację w dwóch (a nawet trzech) plikach, nie są to jednak /etc/bashrc i ~/.bashrc a bash_profile i bashrc (do tego dochodzi bash_logout do wykonywania poleceń przed zamyknięciem powłoki). Generalnie system powinien używać pliku konfiguracyjnego z katalogu domowego użytkownika, i odwoływac sie do globalnego pliku konfiguracyjnego w /etc/ w przypadku niesitnienia tego piewszego.
Niemniej wpis z pewnością przyda się początkującym. Lista sekwencji sterowania basha-a zapewne nie tylko
— osobiście nie wiem nawet, w jakim manualu należałoby tego szukać.
1. Poprawione.
2. Poprawione połowicznie (w man date i date –help jest opisane znaczenie wszystkich %x, więc nie potrzeba więcej mieszać).
3. Wiem, że działają i są zapisem prostszym, moim zdaniem. Pierwszy raz spotykam się z $()… Chociaż, nie, ale nie podoba mi się ten zapis.
4. Opisuję wyłącznie plik bashrc, więc nie chcę zawracać głowy innymi plikami.
5. Odnośnie źródeł – nie chciałem tego wypisywać, bo głównie manuale byłby nimi
.
Super wpis!
Ten tutorial naprawdę mi się przydał.
Dziękuję za pozytywne słowa
. Cieszę się, że Ci się przydał
. Wpadnij za jakiś czas (nowe wpisy są co dwa dni), może coś jeszcze Ci się przyda
.
Nie omieszkam zaglądać tu co jakiś czas. Dodałem sobie tego bloga do zakładek
Pozdrawiam
Cieszę się
. Życzę miłego dnia
.
*avalan*:
owłoką"?), ustawioną w /etc/passwd.
"powłoka logowania" nie jest programem, który odpowiada za możliwość zalogowania użytkownika a jego domyślną powłoką (czy koniecznie "
*Livio*:
. Za stosowaniem tego zapisu przemawia równiez fakt, że vim (pewnie nie tylko)odpowiednio go zinterpretuje (i zmieni kolor) jako element składni. Backticka nie.
Zobacz sobie dowolny skrypt napisany w bash-u — zobaczysz, że zastępowanie poleceniem jest zapisywane "$()"
Niemniej nie jest moim celem przekownywanie Cię do zejścia na jedyną słuszną drogę — dobrze wiem, jak silne jest przyzwyczajenie.
Minio, właśnie się przyzwyczaiłem do tych pod-tyldowych znaczków – backticków
.
*Livio*: Domyśliłem się
.
Wygodniej mi tak.
A ja jednak kocham zwykłą, czarno-szarą konsole bez żadnych dodatków. (Oczywiście przezroczystość musi być
. )
Ja lubię kolorki, normalny tekst o kolorze czarnym, białe pół-przezroczyste tło i jest fajnie
.
A mój wygląda tak: http://kaska.jogger.pl/2006/10/25/w-domu/
Oczywiście to, co wypluwa ls, grep też się koloruje.
Wszystko dzięki aliasom
.
Oczywiście!
Tymczasem dopieszczam wygenerowany zestaw ikon. Podmieniam odpowiednio ikony, by tam, gdzie trzeba – była ikona Fedory, a tam, gdzie trzeba – GNOME. Podmieniłem już kosz na kosz z logo recyklingu Foxtrot, ikonki katalogu domowego i strony domowej na domek z ikon GNOME, ikonkę archiwum na te z Gion oraz ikonki deb-ów i rpm-ów na ikonkę Synaptica z GNOME. Będzie ślicznie. Może dzisiaj zaktualizuję zestaw ikon Livious
.
Powodzenia. Kiedyś się też tak bawiłam, ale teraz używam terminala i co najwyżej mc, a na pulpicie mam tylko pagery [E16] i iconbox dla okienek zminimalizowanych, posługuję się sktórami klawiszowymi i zbudowanymi przez siebie i dla mnie chyba tylko wygodnymi menu. Za to w ~/ – śmietniiiik!…
Ja mam pedantyczny porządek w ~ tylko w / jest bałagan, bo pakiety dla Ubuntu są budowane… Byle jak. Używam GNOME, bo lubię GTK i aplikacje, które oferują to, czego potrzebuję
.
echo "
`fortune -a`
"
a tak wyglada moj .bashrc
Nie lubię fortunek, bo zawsze musiałem usuwać angielskie fortuny z /usr/games/fortune (chyba ten katalog) i pobierać z repozytorium polskie fortunki.
Wyświetlanie losowego tekstu przy starcie powłoki jest fajne. Ja sobie napisałem malutki skrypt w Perlu i korzystam z własnego, na bieżąco uaktualnianego pliku z fortunami
.
Kiedyś w PHP sobie napisałem skrypcik, który na stronie wyświetlał losowy slogan
.
No niezłe, z tym tekstem na tart to nigdy nie pomyślałem
Troszkę przerobiłem dla swoich potrzeb
Pakos, po to napisałem, byś mógł sobie "
oprzerabiać"
.
orly?
tak myślałem
Mam jeszcze ochotę na pokolorowanie innych rzeczy, prompt i to coś to troche mało ale jakos nie mam czasu narazie
Wiem, jaka jest rożnica, między $() a „ – jeśli mamy to w bashrc, to bash zaraz po swoim uruchomieniu, w przypadku $() uruchomi te komendy, a w przypadku „ – gdy będzie do nich odwołanie (wykonanie komendy z aliasu, funkcji, etc).
hmmm ja jakoś nie mam takiego zapędu, aby mieć kolorowo w konsoli. Dla mnie najważniejsze jest to, bym na każdym komputerze widział to samo. Dlatego wolę sobie np. wpisać te kilka znaków więcej i pamiętać komendę na zawsze, niż porobić sobie aliasy, a potem idę naprawiać jakiś serwerek, wpisuję jakieś polecenie, które u mnie jest aliasem, a tam :
bash: command not found
W Twoim przypadku masz rację, ale nie każdy majstruje przy innych komputerach.
Jakbys mogl to napisz pool621@chrome.pl
Chcialem sie dowiedziec jak pokolorwac konsole, tak aby byla czarna i wszystkie zielone napiszy
Pozdrawiam
Ale tutaj jest wszystko opisane.
Mam takie pytanko. Pokolorowałem sobie prompta i wszystko pięknie wygląda z wyjątkiem jednej rzeczy. Mianowicie gdy loguję się poprzez ssh, kolorowania nie ma. Można jakoś to zmienić?
pozdrawiam
Łączysz się ze zdalnym terminalem – uruchamiasz terminal na zdalnym komputerze, a kontrolujesz na własnym. Stąd brak kolorowania.
Jeśli Twój shell używa basha, możesz spróbować wrzucić plik .bashrc do swojego katalogu domowego (~), ale nie gwarantuję Ci działania, bo nie wiem, czy dostęp do zdalnego katalogu domowego masz i czy Twój shell używa basha.
Nie wiem czy się dobrze rozumiemy. Na swoim komputerze mam użytkownika ‘dawid’ i na nim kolorowanie działa. Przez ssh łącze się ze swoim komputerem i loguję również jako użytkownik ‘dawid’. I tu kolorowania już nie ma.
To chyba Ty nie rozumiesz. Użytkownik lokalny a zdalny to nie to samo, choćbyś się nazywał tak samo w obydwu miejscach. Przeczytaj jeszcze raz mój komentarz, to zrozumiesz, dlaczego.
A jeśli nie, powiem. Plik lokalny nie jest respektowany, ani nawet widziany przez program zdalny.
świetny text .. właśnie tego szukałem ….
Zapomniałem nawet, że to ja napisałem
.
Cieszę się, że Ci się (podoba) przydał
.