Prompt

Prompt czyli znak zachęty (tekst, który informuje użytkownika, że system czeka na wprowadzenie przez niego danych) może być dowolnie konfigurowany. Bash używa 4 różnych promptów w zależności od sytuacji. Ich wygląd jest określany przez zawartość zmiennych:

PS1
jest widoczny niemal przez cały czas. Podstawowy prompt, standardowo ma postać: PS1="[\u@\h \W]\\$ "
PS2
wyświetlany gdy interpreter potrzebuje dodatkowych danych, które musimy wprowadzić (np zapomnieliśmy zamknąć cudzysłów)
PS3
jest używany jako "prompt" przy korzystaniu z pętli select
PS4
jest używany w momencie korzystania z opcji -x basha (debugowania - execution trace mode) - ten tryb można uzyskać uruchamiając Basha z opcja -x lub wpisując "set -o xtrace". Jest jeszcze jeden sposób. Przed startem właściwej powłoki umieśćić słowo kluczowe xtrace w zmiennej systemowej SHELLOPT

Bash pozwala na modyfikowanie znaku zachęty w dużym zakresie. Po pierwsze, pozwala na użycie specjalnych znaków z backslashem wyświetlających różne parametry sesji i systemu. Po drugie, zmienne PS mogą zawierać dowolne zmienne powłoki, wyrażenia arytmetyczne, czy wywołania innych poleceń. Wybrane znaki, poprzedzane backslashem są podane poniżej:

Zmienne specjalne:

\d
data,
\h
nazwa hosta,
\H
pełna nazwa domenowa hosta,
\j
liczba zadań pracujących w powłoce,
\n
znak nowej linii,
\r
znak powrotu karetki,
\s
wyświetla nazwę powłoki
\l
nazwa urządzenia terminalowego danej sesji,
\t
godzina w formacie 24 godzinnym,
\T
godzina w formacie 12 godzinnym,
\u
nazwa użytkownika,
\w
aktualny katalog roboczy,
\W
ostatni człon aktualnego katalogu roboczego,
\!
numer danego polecenia w całej historii poleceń,
\#
numer danego polecenia w aktualnej sesji,
\$
znak identyfikujący sesję, # w przypadku administratora, $ w przypadku użytkownika.

Kilka bardziej i mniej typowych przykładów zmiany prompta jest pokazane poniżej:

bash-2.01$ export PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
$ export PS1="[\u@\h \w]"
johny@batnet:~$ export PS1="[\u@\h \W] "
[johny@batnet ~] export PS1="(\t)\h\$ "
(14:36:32)batnet$

Drugi znak zachęty jest wyświetlany w sytuacjach takich jak pominięcie zamykającego apostrofu lub cudzysłowu:

Przykład

(14:37:14)batnet$ export PS2="> "
(14:37:14)batnet$ echo "Ala ma 
> kotka
> malego i czarnego ;)"

Trzeci znak zachęty wyświetlany jest w momencie tworzenia menu korzystajac z pętli select. Przykład do samodzielnego testowania.

Przykład

#!/bin/bash

PS3='Wybierz swoje ulubione warzywo: '

select warzywo in "fasola" "marchewka" "ziemniaki" "cebula" "rzodkiewki" ; do
  echo
  echo "Twoim ulubionym warzywem jest $warzywo."
  echo "Fuj!"
  echo
  break  # ten break jest konieczny inaczje byłaby pętla nieskończona
done

Przykład:

#!/bin/bash

# idziemy do trybu xtrace
export PS4=':: '
set -o xtrace

echo "Hello world!"

Wynik:

(14:39:37)batnet$ sh oo.sh 
:: echo Hello world!
Hello world!

W prompcie można używać kolorów identycznie jak w skryptach basha.

Dodatkowe informacje

O ile nie zaznaczono inaczej, treść tej strony objęta jest licencją Creative Commons Attribution-ShareAlike 3.0 License