Bash
PS1 aanpassen
Zoeken…
Wijzig PS1-prompt
Om PS1 te wijzigen, hoeft u alleen de waarde van PS1 shell-variabele te wijzigen. De waarde kan worden ingesteld in het bestand ~/.bashrc
of /etc/bashrc
, afhankelijk van de distro. PS1 kan worden gewijzigd in elke platte tekst zoals:
PS1="hello "
Naast de platte tekst worden een aantal speciale backslash-tekens ondersteund:
Formaat | Actie |
---|---|
\a | een ASCII-belkarakter (07) |
\d | de datum in het formaat "Weekdag Maand Datum" (bijv. "di 26 mei") |
\D{format} | het formaat wordt doorgegeven aan strftime (3) en het resultaat wordt ingevoegd in de promptstring; een lege indeling resulteert in een landspecifieke tijdsrepresentatie. De beugels zijn verplicht |
\e | een ASCII escape-personage (033) |
\h | de hostnaam tot de eerste '.' |
\H | de hostnaam |
\j | het aantal taken dat momenteel door de shell wordt beheerd |
\l | de basenaam van de naam van het eindapparaat van de shell |
\n | nieuwe lijn |
\r | vervoer terug |
\s | de naam van de shell, de basenaam van $ 0 (het gedeelte na de laatste schuine streep) |
\t | de huidige tijd in 24-uurs indeling HH: MM: SS |
\T | de huidige tijd in 12-uurs UU: MM: SS-indeling |
\@ | de huidige tijd in 12-uurs notatie am / pm |
\A | de huidige tijd in 24-uurs UU: MM-formaat |
\u | de gebruikersnaam van de huidige gebruiker |
\v | de versie van bash (bijv. 2.00) |
\V | de release van bash, versie + patch-niveau (bijv. 2.00.0) |
\w | de huidige werkmap, met $ HOME afgekort met een tilde |
\W | de basenaam van de huidige werkmap, met $ HOME afgekort met een tilde |
\! | het geschiedenisnummer van deze opdracht |
\# | het opdrachtnummer van deze opdracht |
\$ | als de effectieve UID 0 is, een #, anders een $ |
\nnn* | het teken dat overeenkomt met het octale getal nnn |
\ | een backslash |
\[ | begin een reeks niet-afdrukbare tekens, die kunnen worden gebruikt om een terminalbesturingsreeks in de prompt in te sluiten |
\] | een reeks niet-afdrukbare tekens beëindigen |
Dus we kunnen bijvoorbeeld PS1 instellen op:
PS1="\u@\h:\w\$ "
En het zal uitvoeren:
user @ machine: ~ $
Toon een git branch met PROMPT_COMMAND
Als je je in een map van een git-repository bevindt, is het misschien leuk om de huidige branch waarin je je bevindt te tonen. Voeg in ~/.bashrc
of /etc/bashrc
het volgende toe (git is vereist om dit te laten werken):
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\$ "
Als we ons in een map in een git-repository bevinden, geeft dit het volgende weer:
filiaal gebruiker @ machine: ~ $
En als we ons in een normale map bevinden:
user @ machine: ~ $
Toon git branch name in terminal prompt
Je kunt functies in de PS1-variabele hebben, zorg er gewoon voor dat je deze citeert of escape voor speciale tekens gebruikt:
gitPS1(){
gitps1=$(git branch 2>/dev/null | grep '*')
gitps1="${gitps1:+ (${gitps1/#\* /})}"
echo "$gitps1"
}
PS1='\u@\h:\w$(gitPS1)$ '
Het geeft je een prompt als deze:
user@Host:/path (master)$
Opmerkingen:
- Breng de wijzigingen aan in
~/.bashrc
of/etc/bashrc
of~/.bash_profile
of~./profile
bestand (afhankelijk van het besturingssysteem) en sla het op. - Voer
source ~/.bashrc
(distro-specifiek) na het opslaan van het bestand.
Tijd weergeven in terminalprompt
timeNow(){
echo "$(date +%r)"
}
PS1='[$(timeNow)] \u@\h:\w$ '
Het geeft je een prompt als deze:
[05:34:37 PM] user@Host:/path$
Opmerkingen:
- Breng de wijzigingen aan in
~/.bashrc
of/etc/bashrc
of~/.bash_profile
of~./profile
bestand (afhankelijk van het besturingssysteem) en sla het op. - Voer
source ~/.bashrc
(distro-specifiek) na het opslaan van het bestand.
Inkleuren en terminalterminal aanpassen
Dit is hoe de auteur zijn persoonlijke PS1
variabele instelt:
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
Kleur referentie:
# 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
Opmerkingen:
Breng de wijzigingen aan in
~/.bashrc
of/etc/bashrc
of~/.bash_profile
of~./profile
bestand (afhankelijk van het besturingssysteem) en sla het op.Voor
root
u mogelijk ook het bestand/etc/bash.bashrc
of/root/.bashrc
bewerkenVoer
source ~/.bashrc
(distro-specifiek) na het opslaan van het bestand.Opmerking: als u de wijzigingen in
~/.bashrc
hebt opgeslagen, vergeet dan niet omsource ~/.bashrc
toe te voegen in uw~/.bash_profile
zodat deze wijziging inPS1
wordt vastgelegd telkens wanneer de Terminal-toepassing start.
Toon vorige opdracht retourstatus en tijd
Soms hebben we een visuele hint nodig om de retourstatus van het vorige commando aan te geven. Het volgende fragment maakt het aan de kop van de PS1.
Merk op dat de functie __stat () elke keer moet worden aangeroepen wanneer een nieuwe PS1 wordt gegenereerd, anders blijft deze bij de retourstatus van de laatste opdracht van uw .bashrc of .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