Recherche…


Syntaxe

  • export PS1 = "quelque chose" # s'affiche lorsque bash attend une commande à saisir
  • export PS2 = "anotherthing" # dsplayed quand l'instruction s'étend à plus de lignes
  • export PS3 = "Invite de questions pour une instruction select" # Invite rarement à utiliser select. Commencez par définir PS3 selon vos besoins, puis sélectionnez Appel. Voir aide sélectionner
  • export PS4 = "surtout utile pour le débogage; numéro de ligne, etc." # utilisé pour le débogage des scripts bash.

Paramètres

Échapper Détails
\une Un personnage de cloche.
\ré La date, en format "Jour Mois Mois" (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 produit une représentation temporelle spécifique à l'environnement local. Les accolades sont obligatoires
\ e Un caractère d'évasion. \ 033 fonctionne bien sûr aussi.
\ h Le nom d'hôte, jusqu'au premier `. ' (c.-à-d. pas de partie de domaine)
\ H Le nom d'hôte éventuellement avec une partie de domaine
\ j Le nombre d'emplois actuellement gérés par le shell.
\ l Le nom de base du nom du terminal du shell.
\ n Une nouvelle ligne.
\ r Un 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, au format 24 heures HH: MM: SS.
\ T L'heure, au format HH: MM: SS sur 12 heures.
@ L'heure, au format 12 heures / heure.
\UNE L'heure, au format HH: MM 24 heures.
\ u Le nom d'utilisateur de l'utilisateur actuel.
\ v La version de Bash (par exemple, 2.00)
\ V La sortie de Bash, version + patchlevel (par exemple, 2.00.0)
\ w Le répertoire de travail actuel, avec $ HOME abrégé avec un tilde (utilise la variable $ PROMPT_DIRTRIM).
\ W Le nom de base de $ PWD, 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'ID effectif est 0, # sinon $ .
\ NNN Le caractère dont le code ASCII est la valeur octale NNN.
\ Une barre oblique inverse.
\ [ Commencez une séquence de caractères non imprimables. Cela pourrait être utilisé pour incorporer une séquence de contrôle de terminal dans l'invite.
\] Terminez une séquence de caractères non imprimables.

Utilisation de la variable d'environnement PROMPT_COMMAND

Lorsque la dernière commande d'une instance de bash interactive est terminée, la variable PS1 évaluée est displayes. Avant d'afficher PS1, bash vérifie si PROMPT_COMMAND est défini. Cette valeur de cette variable doit être un programme ou un script appelable. Si cette variable est définie, ce programme / script est appelé AVANT que l'invite PS1 ne soit affichée.

# just a stupid function, we will use to demonstrate
# we check the date if Hour is 12 and Minute is lower than 59
lunchbreak(){ 
   if (( $(date +%H) == 12 && $(date +%M) < 59 )); then 
      # and print colored \033[ starts the escape sequence 
      # 5; is blinking attribute
      # 2; means bold
      # 31 says red
      printf "\033[5;1;31mmind the lunch break\033[0m\n";
   else
      printf "\033[33mstill working...\033[0m\n"; 
   fi; 
}

# activating it
export PROMPT_COMMAND=lunchbreak

Utiliser PS2

PS2 est affiché lorsqu'une commande s'étend sur plusieurs lignes et que bash attend plus de frappes. Il s'affiche également lorsqu'une commande composée comme lorsque ... do..done et identique est entrée.

export PS2="would you please complete this command?\n" 
# now enter a command extending to at least two lines to see PS2

Utiliser PS3

Lorsque l'instruction select est exécutée, elle affiche les éléments donnés précédés d'un numéro, puis affiche l'invite PS3:

export PS3="  To choose your language type the preceding number : "
select lang in EN CA FR DE; do
   # check input here until valid.
   break
done

Utiliser PS4

PS4 est affiché lorsque bash est en mode débogage.

#!/usr/bin/env bash

# switch on debugging
set -x

# define a stupid_func
stupid_func(){
   echo I am line 1 of stupid_func
   echo I am line 2 of stupid_func
}

# setting the PS4 "DEBUG" prompt
export PS4='\nDEBUG level:$SHLVL subshell-level: $BASH_SUBSHELL \nsource-file:${BASH_SOURCE} line#:${LINENO} function:${FUNCNAME[0]:+${FUNCNAME[0]}(): }\nstatement: '

# a normal statement
echo something

# function call
stupid_func

# a pipeline of commands running in a subshell 
( ls -l | grep 'x' )

Utiliser PS1

PS1 est l'invite système normale indiquant que bash attend les commandes en cours de saisie. Il comprend certaines séquences d'échappement et peut exécuter des fonctions ou des programmes. Comme bash doit positionner le curseur après l'invite d'affichage, il doit savoir comment calculer la longueur effective de la chaîne d'invite. Pour indiquer des séquences de caractères non imprimables dans la variable PS1, des accolades sont utilisées: \ [ une séquence de caractères non imprimable \] . Tout ce qui est dit est vrai pour tous les PS PS.

(Le caret noir indique le curseur)

#everything not being an escape sequence will be literally printed
export PS1="literal sequence "  # Prompt is now:
literal sequence ▉

# \u == user \h == host \w == actual working directory
# mind the single quotes avoiding interpretation by shell
export PS1='\u@\h:\w > ' # \u == user, \h == host, \w actual working dir
looser@host:/some/path > ▉

# executing some commands within PS1
# following line will set foreground color to red, if user==root, 
# else it resets attributes to default
# $( (($EUID == 0)) &&  tput setaf 1)
# later we do reset attributes to default with
# $(  tput sgr0 )
# assuming being root:
PS1="\[$( (($EUID == 0)) &&  tput setaf 1 \]\u\[$(tput sgr0)\]@\w:\w \$ "
looser@host:/some/path > ▉  # if not root else <red>root<default>@host....    


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