Szukaj…


Zmień monit PS1

Aby zmienić PS1, wystarczy zmienić wartość zmiennej powłoki PS1. Wartość można ustawić w pliku ~/.bashrc lub /etc/bashrc , w zależności od dystrybucji. PS1 można zmienić na dowolny zwykły tekst, taki jak:

PS1="hello "

Oprócz zwykłego tekstu obsługiwanych jest wiele znaków specjalnych, które nie są ukośnikami:

Format Akcja
\a znak dzwonka ASCII (07)
\d data w formacie „Dzień tygodnia Miesiąc Data” (np. „Wt 26 maja”)
\D{format} format jest przekazywany do strftime (3), a wynik jest wstawiany do ciągu zachęty; pusty format powoduje reprezentację czasu dla danego regionu. Szelki są wymagane
\e znak ucieczki ASCII (033)
\h nazwa hosta do pierwszego „.”
\H nazwa hosta
\j liczba zadań aktualnie zarządzanych przez powłokę
\l basename nazwy urządzenia końcowego powłoki
\n Nowa linia
\r powrót karetki
\s nazwa powłoki, basename 0 $ (część po ostatnim ukośniku)
\t aktualny czas w formacie 24-godzinnym GG: MM: SS
\T aktualny czas w formacie 12-godzinnym GG: MM: SS
\@ aktualny czas w formacie 12-godzinnym
\A aktualny czas w formacie 24-godzinnym GG: MM
\u nazwa użytkownika bieżącego użytkownika
\v wersja bash (np. 2.00)
\V wydanie bash, wersja + poziom łatki (np. 2.00.0)
\w bieżący katalog roboczy, z $ HOME w skrócie tyldą
\W basename bieżącego katalogu roboczego, z $ HOME w skrócie tyldą
\! numer historii tego polecenia
\# numer polecenia tego polecenia
\$ jeśli efektywny UID to 0, a #, w przeciwnym razie a $
\nnn* znak odpowiadający liczbie ósemkowej nnn
\ ukośnik odwrotny
\[ rozpocząć sekwencję znaków niedrukowalnych, których można użyć do osadzenia terminala w linii poleceń
\] zakończ sekwencję znaków niedrukowalnych

Na przykład możemy ustawić PS1 na:

PS1="\u@\h:\w\$ "

I wyświetli:

użytkownik @ maszyna: ~ $

Pokaż gałąź git za pomocą PROMPT_COMMAND

Jeśli znajdujesz się w folderze repozytorium git, fajnie byłoby pokazać bieżącą gałąź, w której się znajdujesz. W ~/.bashrc lub /etc/bashrc dodaj: (git jest wymagany, aby to działało):

function prompt_command {
    # Check if we are inside a git repository
    if git status > /dev/null 2>&1; then
        # Only get the name of the branch
        export GIT_STATUS=$(git status | grep 'On branch' | cut -b 10-)
    else
        export GIT_STATUS=""
    fi
}
# This function gets called every time PS1 is shown
PROMPT_COMMAND=prompt_command

PS1="\$GIT_STATUS \u@\h:\w\$ "

Jeśli jesteśmy w folderze w repozytorium git, wyświetli się:

użytkownik oddziału @ maszyna: ~ $

A jeśli jesteśmy w normalnym folderze:

użytkownik @ maszyna: ~ $

Pokaż nazwę oddziału git w wierszu polecenia terminalu

Możesz mieć funkcje w zmiennej PS1, po prostu upewnij się, że ją zacytowałeś lub użyj escape dla specjalnych znaków:

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}

PS1='\u@\h:\w$(gitPS1)$ '

Daje ci to następujący monit:

user@Host:/path (master)$ 

Uwagi:

  • Wprowadź zmiany w /etc/bashrc ~/.bashrc lub /etc/bashrc lub ~/.bash_profile lub ~./profile (w zależności od systemu operacyjnego) i zapisz go.
  • Uruchom source ~/.bashrc (specyficzne dla dystrybucji) po zapisaniu pliku.

Pokaż czas w monicie terminala

timeNow(){
    echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '

Daje ci to następujący monit:

[05:34:37 PM] user@Host:/path$ 

Uwagi:

  • Wprowadź zmiany w /etc/bashrc ~/.bashrc lub /etc/bashrc lub ~/.bash_profile lub ~./profile (w zależności od systemu operacyjnego) i zapisz go.
  • Uruchom source ~/.bashrc (specyficzne dla dystrybucji) po zapisaniu pliku.

Koloruj i dostosuj monit terminala

Oto jak autor ustawia swoją osobistą zmienną PS1 :

gitPS1(){
    gitps1=$(git branch 2>/dev/null | grep '*')
    gitps1="${gitps1:+ (${gitps1/#\* /})}"
    echo "$gitps1"
}
#Please use the below function if you are a mac user
gitPS1ForMac(){
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
timeNow(){
    echo "$(date +%r)"
}
if [ "$color_prompt" = yes ]; then
  if [ x$EUID = x0 ]; then
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;31m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;31m\]:/#\[\033[00m\] '
  else
    PS1='\[\033[1;38m\][$(timeNow)]\[\033[00m\] \[\033[1;32m\]\u\[\033[00m\]\[\033[1;37m\]@\[\033[00m\]\[\033[1;33m\]\h\[\033[00m\] \[\033[1;34m\]\w\[\033[00m\]\[\033[1;36m\]$(gitPS1)\[\033[00m\] \[\033[1;32m\]:/$\[\033[00m\] '
  fi
else
    PS1='[$(timeNow)] \u@\h \w$(gitPS1) :/$ '
fi

I tak wygląda mój monit: wprowadź opis zdjęcia tutaj

Kolor odniesienia:

# Colors
txtblk='\e[0;30m' # Black - Regular
txtred='\e[0;31m' # Red
txtgrn='\e[0;32m' # Green
txtylw='\e[0;33m' # Yellow
txtblu='\e[0;34m' # Blue
txtpur='\e[0;35m' # Purple
txtcyn='\e[0;36m' # Cyan
txtwht='\e[0;37m' # White
bldblk='\e[1;30m' # Black - Bold
bldred='\e[1;31m' # Red
bldgrn='\e[1;32m' # Green
bldylw='\e[1;33m' # Yellow
bldblu='\e[1;34m' # Blue
bldpur='\e[1;35m' # Purple
bldcyn='\e[1;36m' # Cyan
bldwht='\e[1;37m' # White
unkblk='\e[4;30m' # Black - Underline
undred='\e[4;31m' # Red
undgrn='\e[4;32m' # Green
undylw='\e[4;33m' # Yellow
undblu='\e[4;34m' # Blue
undpur='\e[4;35m' # Purple
undcyn='\e[4;36m' # Cyan
undwht='\e[4;37m' # White
bakblk='\e[40m'   # Black - Background
bakred='\e[41m'   # Red
badgrn='\e[42m'   # Green
bakylw='\e[43m'   # Yellow
bakblu='\e[44m'   # Blue
bakpur='\e[45m'   # Purple
bakcyn='\e[46m'   # Cyan
bakwht='\e[47m'   # White
txtrst='\e[0m'    # Text Reset

Uwagi:

  • Wprowadź zmiany w /etc/bashrc ~/.bashrc lub /etc/bashrc lub ~/.bash_profile lub ~./profile (w zależności od systemu operacyjnego) i zapisz go.

  • Dla root może trzeba także edytować /etc/bash.bashrc lub /root/.bashrc plik

  • Uruchom source ~/.bashrc (specyficzne dla dystrybucji) po zapisaniu pliku.

  • Uwaga: jeśli zmiany zostały zapisane w ~/.bashrc , pamiętaj, aby dodać source ~/.bashrc do ~/.bash_profile , aby ta zmiana w PS1 była rejestrowana przy każdym uruchomieniu aplikacji Terminal.

Pokaż poprzedni status i czas powrotu polecenia

Czasami potrzebujemy podpowiedzi wizualnej, aby wskazać status powrotu poprzedniego polecenia. Poniższy fragment kodu umieścił go na czele PS1.

Zauważ, że funkcja __stat () powinna być wywoływana za każdym razem, gdy generowany jest nowy PS1, w przeciwnym razie trzymałby się statusu powrotu ostatniej komendy twojego .bashrc lub .bash_profile.

# -ANSI-COLOR-CODES- #
Color_Off="\033[0m"
###-Regular-###
Red="\033[0;31m"
Green="\033[0;32m"
Yellow="\033[0;33m"
####-Bold-####

function __stat() {
    if [ $? -eq 0 ]; then
        echo -en "$Green ✔ $Color_Off "
    else
        echo -en "$Red ✘ $Color_Off "
    fi
}

PS1='$(__stat)'
PS1+="[\t] "
PS1+="\e[0;33m\u@\h\e[0m:\e[1;34m\w\e[0m \n$ "

export PS1

wprowadź opis zdjęcia tutaj



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow