Page 1 sur 2

Mettre en valeur le prompt du terminal

Posté : sam. 15 déc. 2018 11:54
par Christian_B
Bonjour, je ne sais pas si cette question est spécifique du terminal Mate et donc s'il faut la poser ici ou dans la rubrique Mate.
Je trouve que le prompt est peu visible, ce qui n'est pas pratique, notamment pour remonter dans la fenêtre au début de la réponse d'une commande quand elle est longue.
Bien que ce ne soit pas prévu dans les options, y a-t-il un moyen de mettre le prompt en gras ou en couleur pour le retrouver facilement ? Ou sinon à la rigueur d'ajouter au prompt quelques caractères très visibles ?
Sinon existe-t-il un autre terminal fiable (et à peu près équivalent à celui par défaut) qui le prévoit ?
Merci.

Re: Mettre en valeur le prompt du terminal

Posté : sam. 15 déc. 2018 12:45
par arghlub
Salut,

Tu peux personnaliser l'invite de commandes du terminal en modifiant le fichier «/home/TON_NOM/.bashrc».
Pour le modifier :

Code : Tout sélectionner

xed ~/.bashrc
Dans ce fichier, c'est la valeur de la variable d'environnement PS1 dans ces lignes qu'il faut modifier :

Code : Tout sélectionner

if [ "$color_prompt" = yes ]; then
    if [[ ${EUID} == 0 ]] ; then
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;31m\]$HostName\[\033[01;34m\] \W \$\[\033[00m\] '
    else
        PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@$HostName\[\033[00m\] \[\033[01;34m\]\w \$\[\033[00m\] '
    fi
else
    PS1='${debian_chroot:+($debian_chroot)}\u@$HostName \w \$ '
fi
Pour les couleurs ce sont les codes du style «\033[01;31m»

Plus d'infos : ;)

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 01:38
par Christian_B
Merci arghlub pour ces infos.
Toutefois la solution s'est avérée assez compliquée. Je n'ai pas compris tout de suite qu'il fallait configurer uniquement bash et non le terminal.
Je détaille pour ceux qui auraient le même problème.
mate-terminal ne paraît pas fonctionner de manière très standard. Il est sophistiqué (multi-onglets, image de fond, 16 couleurs personnalisables etc). Mais, bien que j'ai changé certaines préférences, pas de ~/.bashrc :? (seulement ~/.bash_history). J'ai cherché un peu partout sous ~/ sans résultat. Il doit bien y avoir des fichiers de config du terminal sous ~/ puisque on peut définir des profils et modifier un profil sans privilèges root. Mais où ?
Rien dans le panneau de préférences sur le prompt. Et la doc du terminal est muette sur les fichiers de config.

Par ailleurs je trouve dans Synaptic que tous les fichiers de config installés par mate-terminal et mate-terminal-common sont soit des fichiers de type .ui ou .xml sous /usr/share/mate-terminal/ sauf un fichier /usr/share/applications/mate-terminal.desktop .

J'ai finalement trouvé un fichier /etc/bash.bashrc dans lequel apparaît :

Code : Tout sélectionner

# set a fancy prompt (non-color, overwrite the one in /etc/profile)
# but only if not SUDOing and have SUDO_PS1 set; then assume smart user.
if ! [ -n "${SUDO_USER}" -a -n "${SUDO_PS1}" ]; then
  PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
J'ai tenté le coup, créé ~/.bashrc et combiné ce code et le tien, ce qui donne :

Code : Tout sélectionner

# Mise en évidence du prompt bash.
# Variante mixte adaptée de /etc/bash.bashrc et du code de arghlub (voir dans CherryTree) :
    if [[ ${EUID} == 0 ]] ; then
       PS1='${debian_chroot:+($debian_chroot)}\[\033[1;4;31m\]$\u@\h\w\$:\[\033[0m\] '
    else
       PS1='${debian_chroot:+($debian_chroot)}\[\033[1;4m\]\u@\h\w\$:\[\033[0m\] '
    fi
Ça marche :) (prompt gras & souligné). Autrement dit les options de bash sont prioritaires sur celles du terminal et le code 0 revient aux options du terminal.
Toutefois ça ne marche pas si on passe su mais seulement si on fait su -p. Une habitude à prendre. Je suppose que c'est impossible pour su à moins d'intervenir dans un fichier système (?). Ce serait à refaire à chaque install et sans doute pour certaines mises à jour. Je renonce sur ce point.
J'ai renoncé aussi à utiliser les couleurs (sauf pour su -p) car j'ai mis mon terminal en fond jaune clair et les codes couleurs sont visiblement adaptées aux terminaux à fond noir : couleurs de textes pâles sauf le rouge et le noir, couleurs de fond sombres.
Problème résolu.

Re: Mettre en valeur le prompt du terminal [Résolu]

Posté : dim. 16 déc. 2018 01:42
par david37
Salut Christian,

La procédure pour passer les sujets en résolu a quelques peu changé, je t'invite à modifier les attributs de ton sujet et à consulter le tuto suivant ;) : voir tuto ici
A+
David

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 07:33
par arghlub
Christian_B a écrit : dim. 16 déc. 2018 01:38 Toutefois ça ne marche pas si on passe su mais seulement si on fait su -p. Une habitude à prendre. Je suppose que c'est impossible pour su à moins d'intervenir dans un fichier système (?).
Pour cela il faut effectivement que tu modifies un fichier système : «/root/.bashrc»
Pour l'éditer (remplace xed par ton éditeur de texte si tu en as un autre) :

Code : Tout sélectionner

sudo xed /root/.bashrc
;)

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 17:19
par Christian_B
arghlub" a écrit :Pour cela il faut effectivement que tu modifies un fichier système : «/root/.bashrc»
Effectivement j'avais vu qu'il y avait un fichier /root/.bashrc mais j'hésitais à y toucher :

1) Je pensais que ce fichier n'était utilisé que pour su - . Pour moi ce que fait su sans paramètre n'est pas clair même au vu de man su.

2) Je ne comprends pas tout dans ce fichier :
- Il y a deux commandes conditionnelles qui dépendent de variables force_color_prompt et color_prompt. Je ne sais pas d'où elles viennent et visiblement leur valeur ne permet pas la gestion de couleurs du prompt qui est prévue puisque même pour su - cela ne marche pas. D'ailleurs je ne suis pas assez familier du shell pour vérifier leur valeur.
- Plus loin il y a une définition de PS1 pour xterm et rvtx qui paraît ajouter une chaîne au PS1 existant. Bon je tente le coup en modifiant cette ligne:

Code : Tout sélectionner

#    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\[\033[1;4;31m\]\u@\h: \w\a\]$PS1\[\033[0m\]"
Bizarrement cela donne (en restituant pour l'affichage ici un code couleur non copié) :
]0;root@ch-H81N: /home/chroot@ch-H81N:/home/ch#
Plus 3 codes inconnus impossibles à reproduire ici (codes dans des carrés) : 001B (au début) 0001 (après 0;) et 0002 (entre ch et root). :shock:
Après divers essais infructueux sur lesquels je passe, je me décide à utiliser presque le même prompt que pour mon .bashrc sous ~/ :

Code : Tout sélectionner

    PS1='${debian_chroot:+($debian_chroot)}\[\033[1;4;31m\]\u@\h \w\a \$:\[\033[0m\] ' 
Ce qui donne (en rouge pour les prompts root) :

Code : Tout sélectionner

ch@ch-H81N~$: su -p
Mot de passe : 
root@ch-H81N~#: su
root@ch-H81N /home/ch #: su -
root@ch-H81N ~ #: 
:)
J'ai fini par comprendre que le tilde n'était pas décoratif mais représentait ici le rép. de connexion mon identifiant ou de root selon le cas.
Mais je ne comprends rien à la syntaxe initiale de PS1 :
PS1="\[\e]0; ... \a\]$PS1"
Les voies du shell sont impénétrables ... :?
Par contre la solution n'est pas idéale, en théorie elle poserait peut-être pb avec des terminaux sans gestion des couleurs. Mais je ne sais pas si les variables de couleur du passage conditionnel sont documentées. Tant pis.

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 18:11
par arghlub
Je ne pourrais répondre à tous tes questionnements (tu comprendras en lisant de la doc).
Ceci dit:
1. pourquoi utiliser «su» plutôt que «sudo» ???? t'es administrateur-linux ??? à priori non, donc contente toi du "sudo", ça le fait très bien.

3.
Christian_B a écrit : dim. 16 déc. 2018 17:19Les voies du shell sont impénétrables ... :?
Non !!!! elles n'ont pas été pavées par un dieu ou autre.... faut que tu t'y intéresses et te documentes c'est tout. Effectivement W$ ne demande pas ce niveau de connaissance mais on fais rien avec (c'est pas de l'informatique, c'est du moutonnage (les moutons qui suivent et se font tondre par Bilou)

2. Laisse tomber les conditions, si tu es color_prompt, c'est le premier "PS1" qui est important.
Christian_B a écrit : dim. 16 déc. 2018 17:19 Mais je ne comprends rien à la syntaxe initiale de PS1 :
PS1="\[\e]0; ... \a\]$PS1"
les anti-slash (\) sont fait pour "échapper" certains caractères ..... là aussi il faut que tu lises de la documentation sur le Bash, je ne pourrais te renseigner en 3 lignes (des bouquins entiers y sont consacrés)

;)

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 18:25
par tyrry
Slt ,
pour compléter :
des infos supplémentaires avec la liste des codes couleurs etc etc :
https://translate.google.fr/translate?h ... rev=search

ou encore plus simple , tu peux trouver directement "tout fait" des .bash.rc sur le net ;)
exemple : https://www.tomzone.fr/mon-bashrc/
etc etc .......
@+

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 19:11
par zeb
Bonjour,
Il y a aussi les préférences qui permettent une personnalisation de l'affichage du terminal (y a peut être cette option, ce qui éviterait toutes perpétrations :l ) ;)

Re: Mettre en valeur le prompt du terminal

Posté : dim. 16 déc. 2018 21:03
par Christian_B
arghlub a écrit :1. pourquoi utiliser «su» plutôt que «sudo» ???? t'es administrateur-linux ??? à priori non, donc contente toi du "sudo", ça le fait très bien.
Je n'ai jamais compris les réserves de certains envers su et le fait qu'elle ne fonctionne pas par défaut (il faut changer le mdp de root). Pour moi c'est juste une coquetterie. Si on a plusieurs commandes à faire sous root, su revient exactement au même que plusieurs sudo et c'est juste plus simple et donc plus agréable. Ensuite on revient à son environnement perso par exit ou ^D.
On ne peut pas à la fois dire "faut que tu te documentes" (sur les trucs compliqués comme certaines subtilités de syntaxe) et "t'es pas administrateur". Plus on connaît le shell plus on est en fait administrateur de sa machine, même sans carte professionnelle. Bon mais c'est subjectif, chacun fait comme il veut (ou il peut) en fonction du temps consacré, etc.
arghlub a écrit :2. Laisse tomber les conditions, si tu es color_prompt, c'est le premier "PS1" qui est important.
Non justement, comme je l'ai dit, le premier PS1 qui est sous la condition :

Code : Tout sélectionner

if [ "$color_prompt" = yes ]; then
n'est pas actif. Il me vient maintenant à l'idée que c'est parce qu'il est masqué par le dernier, qui est sous :

Code : Tout sélectionner

case "$TERM" in
xterm*|rxvt*)
qui est celui que j'ai modifié. Je vais essayer de mettre en commentaire cette partie sous "case" pour voir.
Autrement, merci Tyrry, je vais regarder ces docs dès que j'ai un moment.
zeb a écrit :Il y a aussi les préférences qui permettent une personnalisation de l'affichage du terminal (y a peut être cette option, ce qui éviterait toutes perpétrations
Non justement, comme je l'ai précisé, les préférences du terminal Mate (Menu Edition/Préférences du profil). permettent un réglage sophistiqué des couleurs de texte et de fond mais ne font aucune allusion au prompt dont l'aspect spécifique est uniquement géré par les fichiers de config de bash.