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

En zo ziet mijn prompt eruit: voer hier de afbeeldingsbeschrijving in

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 bewerken

  • Voer source ~/.bashrc (distro-specifiek) na het opslaan van het bestand.

  • Opmerking: als u de wijzigingen in ~/.bashrc hebt opgeslagen, vergeet dan niet om source ~/.bashrc toe te voegen in uw ~/.bash_profile zodat deze wijziging in PS1 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

voer hier de afbeeldingsbeschrijving in



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow