Recherche…


Modifier l'invite PS1

Pour changer PS1, il suffit de changer la valeur de la variable shell PS1. La valeur peut être définie dans le fichier ~/.bashrc ou /etc/bashrc , en fonction de la distribution. PS1 peut être changé en n'importe quel texte simple comme:

PS1="hello "

Outre le texte en clair, un certain nombre de caractères spéciaux avec antislash sont pris en charge:

Format action
\a un caractère de sonnerie ASCII (07)
\d la date au format «Jour de la semaine» (par exemple, «Mardi 26 mai»)
\D{format} le format est passé à strftime (3) et le résultat est inséré dans la chaîne d'invite; un format vide entraîne une représentation temporelle spécifique à l'environnement local. Les accolades sont obligatoires
\e un caractère d'échappement ASCII (033)
\h le nom d'hôte jusqu'au premier '.'
\H le nom d'hôte
\j le nombre d'emplois actuellement gérés par le shell
\l le nom de base du nom de périphérique du terminal du shell
\n nouvelle ligne
\r retour de chariot
\s le nom du shell, le nom de base de 0 $ (la partie qui suit la barre oblique finale)
\t l'heure actuelle en 24 heures Format HH: MM: SS
\T l'heure actuelle en 12 heures HH: MM: SS format
\@ l'heure actuelle au format 12 heures / heure
\A l'heure actuelle en format 24 heures HH: MM
\u le nom d'utilisateur de l'utilisateur actuel
\v la version de bash (par exemple, 2.00)
\V la sortie de bash, version + niveau du patch (par exemple, 2.00.0)
\w le répertoire de travail actuel, avec $ HOME abrégé avec un tilde
\W le nom de base du répertoire de travail en cours, avec $ HOME abrégé avec un tilde
\! le numéro d'historique de cette commande
\# le numéro de commande de cette commande
\$ si l'UID effectif est 0, un #, sinon un $
\nnn* le caractère correspondant au nombre octal nnn
\ une barre oblique inverse
\[ commencer une séquence de caractères non imprimables, qui pourrait être utilisée pour incorporer une séquence de contrôle de terminal dans l'invite
\] terminer une séquence de caractères non imprimables

Ainsi, par exemple, nous pouvons configurer PS1 pour:

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

Et ça va sortir:

utilisateur @ machine: ~ $

Afficher une branche git en utilisant PROMPT_COMMAND

Si vous vous trouvez dans un dossier d'un dépôt git, il peut être intéressant de montrer la branche actuelle sur laquelle vous vous trouvez. Dans ~/.bashrc ou /etc/bashrc ajoutez ce qui suit (git est requis pour que cela fonctionne):

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

Si nous sommes dans un dossier dans un dépôt git, cela va générer:

utilisateur de la branche @ machine: ~ $

Et si nous sommes dans un dossier normal:

utilisateur @ machine: ~ $

Afficher le nom de la branche git à l'invite du terminal

Vous pouvez avoir des fonctions dans la variable PS1, assurez-vous simplement de la citer seule ou utilisez la commande escape pour les caractères spéciaux:

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

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

Il vous donnera une invite comme celle-ci:

user@Host:/path (master)$ 

Remarques:

  • Apportez les modifications dans le fichier ~/.bashrc ou /etc/bashrc ou ~/.bash_profile ou ~./profile (selon le système d'exploitation) et enregistrez-le.
  • Exécutez le source ~/.bashrc (spécifique à la distribution) après avoir enregistré le fichier.

Afficher l'heure dans l'invite du terminal

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

Il vous donnera une invite comme celle-ci:

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

Remarques:

  • Apportez les modifications dans le fichier ~/.bashrc ou /etc/bashrc ou ~/.bash_profile ou ~./profile (selon le système d'exploitation) et enregistrez-le.
  • Exécutez le source ~/.bashrc (spécifique à la distribution) après avoir enregistré le fichier.

Coloriser et personnaliser l'invite du terminal

Voici comment l'auteur définit sa variable PS1 personnelle:

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

Et voici à quoi ressemble mon invite: entrer la description de l'image ici

Référence de couleur:

# 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

Remarques:

  • Apportez les modifications dans le fichier ~/.bashrc ou /etc/bashrc ou ~/.bash_profile ou ~./profile (selon le système d'exploitation) et enregistrez-le.

  • Pour root vous devrez peut-être également modifier le fichier /etc/bash.bashrc ou /root/.bashrc

  • Exécutez le source ~/.bashrc (spécifique à la distribution) après avoir enregistré le fichier.

  • Remarque: si vous avez enregistré les modifications dans ~/.bashrc , n'oubliez pas d'ajouter la source ~/.bashrc dans votre ~/.bash_profile pour que cette modification de PS1 soit enregistrée à chaque démarrage de l'application Terminal.

Afficher le statut et l'heure de retour de la commande précédente

Parfois, nous avons besoin d'un indice visuel pour indiquer le statut de retour de la commande précédente. L'extrait suivant le met en tête de la PS1.

Notez que la fonction __stat () devrait être appelée à chaque fois qu'une nouvelle PS1 est générée, sinon elle resterait liée au statut de retour de la dernière commande de votre fichier .bashrc ou .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

entrer la description de l'image ici



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow