Sök…


Ändra PS1-prompten

För att ändra PS1, måste du bara ändra värdet på PS1 skalvariabel. Värdet kan ställas in i ~/.bashrc eller /etc/bashrc , beroende på distro. PS1 kan ändras till någon vanlig text som:

PS1="hello "

Förutom den vanliga texten stöds ett antal specialtecken som har undvikts från stänk:

Formatera Verkan
\a en ASCII-klocktecken (07)
\d datumet i "Veckodagens datum" -format (t.ex. "tisdag 26 maj")
\D{format} formatet skickas till struntid (3) och resultatet infogas i prompsträngen; ett tomt format resulterar i en lokalspecifik tidsrepresentation. Hängslen krävs
\e en ASCII-flyktecken (033)
\h värdnamnet upp till det första '.'
\H värdnamnet
\j antalet jobb som för närvarande hanteras av skalet
\l basnamnet på skalets terminalenhetsnamn
\n ny linje
\r vagnretur
\s namnet på skalet, basnamnet på $ 0 (delen efter den sista snedstrecken)
\t den aktuella tiden i 24-timmars HH: MM: SS-format
\T den aktuella tiden i 12-timmars HH: MM: SS-format
\@ den aktuella tiden i 12-timmars / pm-format
\A den aktuella tiden i 24-timmars HH: MM-format
\u användarnamnet för den aktuella användaren
\v versionen av bash (t.ex. 2.00)
\V frisläppandet av bash, version + patchnivå (t.ex. 2.00.0)
\w den nuvarande arbetskatalogen, med $ HOME förkortad med en tilde
\W basnamnet för den aktuella arbetskatalogen, med $ HOME förkortad med en tilde
\! historiknumret för detta kommando
\# kommandonummeret för detta kommando
\$ om den effektiva UID är 0, ett #, annars en $
\nnn* tecknet som motsvarar det oktala talet nnn
\ ett bakslag
\[ börja en sekvens av tecken som inte skriver ut, som kan användas för att bädda in en terminalstyrsekvens i prompten
\] avsluta en sekvens med tecken som inte skrivs ut

Så vi kan till exempel ställa PS1 till:

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

Och det kommer att matas ut:

användare @ maskin: ~ $

Visa en gitgren med PROMPT_COMMAND

Om du befinner dig i en mapp i ett gitförvar kan det vara trevligt att visa den nuvarande grenen du befinner dig i. /etc/bashrc till följande i ~/.bashrc eller /etc/bashrc (git krävs för att detta ska fungera):

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

Om vi befinner oss i en mapp i ett git-arkiv kommer detta att matas ut:

filialanvändare @ maskin: ~ $

Och om vi är i en normal mapp:

användare @ maskin: ~ $

Visa gitgrenens namn i terminalprompt

Du kan ha funktioner i PS1-variabeln, bara se till att enstaka citera det eller använda escape för speciella tecken:

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

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

Det ger dig en snabbmeddelande så här:

user@Host:/path (master)$ 

Anmärkningar:

  • Gör ändringarna i ~/.bashrc eller /etc/bashrc eller ~/.bash_profile eller ~./profile (beroende på operativsystemet) och spara den.
  • Kör source ~/.bashrc (distro-specifikt) efter att du har sparat filen.

Visa tid i terminalprompt

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

Det ger dig en snabbmeddelande så här:

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

Anmärkningar:

  • Gör ändringarna i ~/.bashrc eller /etc/bashrc eller ~/.bash_profile eller ~./profile (beroende på operativsystemet) och spara den.
  • Kör source ~/.bashrc (distro-specifikt) efter att du har sparat filen.

Färglägg och anpassa terminalprompt

Så här ställer författaren in sin personliga PS1 variabel:

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

Och så ser min snabbt ut: ange bildbeskrivning här

Färgreferens:

# 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

Anmärkningar:

  • Gör ändringarna i ~/.bashrc eller /etc/bashrc eller ~/.bash_profile eller ~./profile (beroende på operativsystemet) och spara den.

  • För root kan du också behöva redigera /etc/bash.bashrc eller /root/.bashrc

  • Kör source ~/.bashrc (distro-specifikt) efter att du har sparat filen.

  • Obs! Om du har sparat ändringarna i ~/.bashrc , kom ihåg att lägga till source ~/.bashrc i din ~/.bash_profile så att denna ändring i PS1 kommer att spelas in varje gång Terminal-applikationen startar.

Visa tidigare kommandotillstånd och tid

Ibland behöver vi en visuell antydning för att indikera återkomststatus för tidigare kommando. Följande kodavsnitt gör det i spetsen för PS1.

Observera att __stat () -funktionen ska anropas varje gång en ny PS1 genereras, annars skulle den hålla sig till returstatusen för det sista kommandot för din .bashrc eller .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

ange bildbeskrivning här



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow