Bash
Anpassa PS1
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
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 tillsource ~/.bashrc
i din~/.bash_profile
så att denna ändring iPS1
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