Czego mama nie powiedziała Ci o znaku zachęty

Niby rzecz z pozoru błaha. Ale czy przywiązujesz uwagę do tego, jak wygląda znak zachęty w linii poleceń? Nie? Ja także nigdy się nad tym nie zastanawiałem. Do czasu. Sam nie wiem czemu, ale z uporem godnym maniaka zacząłem przyglądać się bliżej znakowi zachęty. Taki prefekcjonizm
.
Zakres moich poszukiwać ograniczyłem tylko do Basha. Żeby zmienić wygląd znaku zachęty, wystarczy ustawić zmienną środowiskową PS1 i zresetować terminal. Zazwyczaj ustawienie zmiennej odbywa się w pliku konfiguracyjnym Basha (w moim przypadku ~/.bash_login).
Jakie informacje mogą się pojawić w znaku zachęty? Aktualna godzina i data w różnych formatach, nazwa komputera, login użytkownika, bieżący katalog roboczy. Ponieważ już prawie nikt nie używa monitorów czarnobiałych, to warto także pokolorować znak zachęty.
Ostatecznie zdecydowałem się na poniższy wariant:
export PS1="\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ " |

Co tam dobrego można znaleźć? Na pierwszym miejscu login użytkownika oraz nazwa komputera, na którym obecnie znajduje się. Jest to o tyle istotne, gdyż często pracuję zdalnie na innych komputerach i wolałbym ich nie pomylić przez przypadek. Następnie kolorem niebieskim oznaczony jest bieżący katalog. Tutaj miałem dylemat. Czy pokazywać całą ścieżkę do np. ~/Library/Widgets, czy tylko nazwę bieżącego katalog? Zdecydowałem się pokazywać całą bieżącą ścieżkę.
PS. Nowy rok, nowe postanowienia i nowy layout na blogu
. Smacznego.
Aktualizacja (10/08/2010)
Zacząłem używać jednak coś bardziej wymyślnego. Linia poleceń zajmuje dwie linijki, ale pokazuje za to:
- bieżący branch gita,
- cały bieżący katalog,
- kod wykonania ostatniego polecenia (na czerwono, jeśli ostatnie polecenie zakończyło się błędem),
- godzinę.
if [ -f /etc/vanity-hostname ] then PROMPT_HOST_SEG="$(cat /etc/vanity-hostname | sed -e 's/\..*$//')" else PROMPT_HOST_SEG='\h' fi function promptcmd() { LASTEC=$? GITBRANCH=`git symbolic-ref HEAD 2> /dev/null`; GITEC=$? case $TERM in xterm*) local TITLEBAR='\[\033]0;\u@\h:\w\007\]' ;; screen*) local TITLEBAR='\[\033k\033\\\]' ;; *) local TITLEBAR='' ;; esac # PS1="$TITLEBAR\t \j ${ANSI_RESET}${ANSI_BLUE}\w " PS1="$TITLEBAR\t \j \[\e[0m\e[34m\]\w " if [ $LASTEC -ne 0 ]; then PS1="$PS1\[\e[1m\]\[\e[31m\]$LASTEC\[\e[0m\] " fi PS1="$PS1\n" if [ $GITEC -eq 0 ]; then PS1="$PS1\[\e[36m\][${GITBRANCH#refs/heads/}] " fi PS1="$PS1\[\e[32m\]\u@${PROMPT_HOST_SEG}" if [ -z $WINDOW ]; then true PS1="${PS1} " else PS1="${PS1}($WINDOW) " fi PS1="$PS1\$\[\e[0m\] " } export PROMPT_COMMAND=promptcmd export EDITOR=`which vim` export HISTIGNORE="&:ls:[bf]g:exit" |


Nazywam się
Wiktor Gworek
i jestem gospodarzem tego bloga.
Witam

To ja się może pochwalę promptem cokolwiek bardziej rozbudowanym (zsh)
http://stuff.fork.pl/prompt.png
kolejne elementy:
– user@host (na czerwono jeśli root, na zielono zwykły user)
– wersja systemu (F-7.0-R-p4#5 = FreeBSD 7.0 release, patchlevel 4)
– terminal
– data/godzina
– kod błędu poprzedniego polecenia (o ile był, tutaj e127)
– scieżka
– prompt właściwy (# lub %)
– ilość userów
– uptime
– load (kolorowany, np. zielony poniżej 5 itd.)
Polecam jeszcze zmienić kolorek na inny dla root’a oraz inne kolorki na zdalnych maszynach, co by od razu w oczy się rzucało, że trzeba bardziej uważać
Jeśli chciałbyś jeszcze bardziej poeksperymentować -> spróbuj bashish http://bashish.sourceforge.net/
Można również zmienić znak zachęty na MS Windows, np.:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\jlaskowski 2009-01-06 14:14:35,50
>
Gdzieś trzeba pogrzebać w rejestrach, ale nie pamiętam gdzie dokładnie. Jest on na tyle podobny do mojego ulubionego PS1 jak to tylko na MS Windows możliwe. Najbardziej zależało mi na całej linii poleceń dla wydawanych komend, aby nie było ich załamywania, więc użytkownik wpisuje w nowej linii po >.
Ulubiona ustawienie PS1 to
PS1=”\[\e]0;\u@\h: \w\a\]\[\e[32m\]\u@\h \[\e[33m\]\w \[\e[36m\]\d \t \[\e[0m\]\n\\$ ”
p.s. Nowa szata bloga wyrąbista. Gratulacje noworocznych postanowień i ich realizacji!
s/o tylko/o tyle/
Jednak na Windowsie także się to da
, no brawo
Done.
Gdyby mieć jeszcze roota gdziekolwiek
.
Ale tytuł do posta zajebisty
Ja z uporem maniaka wszędzie stosuję export PS1=”$(print ‘%{\e[1;32m%}%T%{\e[0m%}’) %B%n%b@%m:%~%# ” od zawsze. Godzina na zielono, username pogrubiony.
@Michał
No ba!