11

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

Posted by wiktor on Jan 3, 2009 in Różne

A może coś bardziej wymyślnego?

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\]\$ "

fajny-terminal

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"

Tags:

Copyright © 2010 Mocna Kawa All rights reserved. Theme by Laptop Geek.