Résolu le 16-12-18 Mettre en valeur le prompt du terminal

Questions concernant les lignes de commandes
Avatar du membre
Christian_B
Messages : 438
Enregistré le : lun. 7 nov. 2016 10:44
Localisation : Paris

Mettre en valeur le prompt du terminal

Message 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.
Modifié en dernier par Christian_B le dim. 16 déc. 2018 02:00, modifié 2 fois.
Linux Mint 21.3 Mate 1.26.0. Carte Gigabyte H81N.
Intel Core i7-4770 : 4x2 cœurs + Xeon E3-1200 (= circuit 4600), sans carte graphique.
Mémoire 8 Go Dual channel, SSD 120Go, HD 2To.
Les armes nucléaires sont interdites depuis le 22 janvier 2021. Y a plus qu'à ...

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Mettre en valeur le prompt du terminal

Message 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 : ;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
Christian_B
Messages : 438
Enregistré le : lun. 7 nov. 2016 10:44
Localisation : Paris

Re: Mettre en valeur le prompt du terminal

Message 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.
Modifié en dernier par Christian_B le dim. 16 déc. 2018 03:58, modifié 3 fois.
Linux Mint 21.3 Mate 1.26.0. Carte Gigabyte H81N.
Intel Core i7-4770 : 4x2 cœurs + Xeon E3-1200 (= circuit 4600), sans carte graphique.
Mémoire 8 Go Dual channel, SSD 120Go, HD 2To.
Les armes nucléaires sont interdites depuis le 22 janvier 2021. Y a plus qu'à ...

Avatar du membre
david37
modérateur
Messages : 3884
Enregistré le : lun. 22 août 2016 05:06

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

Message 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
PC1: Mobo: Gigabyte B550 AORUS Elite 2 / CPU: AMD Ryzen 7 3700X / GPU: MSI Radeon RX 580 Armor / RAM: 32 GB @3600 MHz CL16 / SSD: Samsung 970 EVO 500 GB / LM 20.2 Xfce
PC2: HP Pavilion 15 / AMD Ryzen 5 5500U with Radeon Graphics / 16GB RAM / 500 GB SSD / Debian 11 Xfce
PC3: Dell-Latitude E7240 / 2.1GHz i7-4600U / Intel Haswell-ULT HD 4400 / 8GB RAM / 250 GB Hard Drive / LM 20.2 Xfce

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Mettre en valeur le prompt du terminal

Message 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
;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
Christian_B
Messages : 438
Enregistré le : lun. 7 nov. 2016 10:44
Localisation : Paris

Re: Mettre en valeur le prompt du terminal

Message 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.
Linux Mint 21.3 Mate 1.26.0. Carte Gigabyte H81N.
Intel Core i7-4770 : 4x2 cœurs + Xeon E3-1200 (= circuit 4600), sans carte graphique.
Mémoire 8 Go Dual channel, SSD 120Go, HD 2To.
Les armes nucléaires sont interdites depuis le 22 janvier 2021. Y a plus qu'à ...

Avatar du membre
arghlub
Administrateur du site
Messages : 10421
Enregistré le : dim. 21 mai 2017 08:19
Localisation : Provence
Contact :

Re: Mettre en valeur le prompt du terminal

Message 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:19
Les 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)

;)
Tour1 (custom)CM MSI Z270 M3 | CPU Intel I7-7700K | CG Nvidia GTX 1080 | RAM 16Go | tripleBoot : Debian 11 | MXlinux 21 | LMint 19.3 | XFCE
Tour2 (custom)CM Gigabyte | CPU AMD Athlon 5200+ | CG Nvidia GTX 560 | RAM 6Go | FreeBSD 12.1 XFCE
Portable1 MSI GF75 Thin 9SC | CPU Intel I7-9750H | CG Nvidia GTX 1650 | RAM 32Go | dualBoot : LMint 20.2 | MXlinux 21 | XFCE
Portable2 MacBook Air A1466 (2015) | CPU Intel I5-5250U | CG Intel HD Graphics 6000 | RAM 8Go | dualBoot : macOS Sierra | MXlinux 21 XFCE
─────( pour une informatique libre ! -membre en stand-by de l' April.org────────────────

Avatar du membre
tyrry
modérateur
Messages : 5705
Enregistré le : mar. 21 juil. 2015 07:42
Localisation : à l'ouest

Re: Mettre en valeur le prompt du terminal

Message 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 .......
@+
Distro: Debian 12 Bookworm Desktop: LXDE
Kernel: 6.1.0-19-amd64 Drive: Intel Nvme 240
CPU: Ryzen 3 PRO 2200GE RAM: 16 go Graphics Card: AMD ATI Radeon Vega Series
L'experience est quelque chose que vous obtenez, juste après que vous en ayez besoin

zeb
Messages : 16473
Enregistré le : ven. 19 juin 2015 22:13
Localisation : plus ici

Re: Mettre en valeur le prompt du terminal

Message 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 ) ;)

Avatar du membre
Christian_B
Messages : 438
Enregistré le : lun. 7 nov. 2016 10:44
Localisation : Paris

Re: Mettre en valeur le prompt du terminal

Message 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.
Linux Mint 21.3 Mate 1.26.0. Carte Gigabyte H81N.
Intel Core i7-4770 : 4x2 cœurs + Xeon E3-1200 (= circuit 4600), sans carte graphique.
Mémoire 8 Go Dual channel, SSD 120Go, HD 2To.
Les armes nucléaires sont interdites depuis le 22 janvier 2021. Y a plus qu'à ...

Répondre