Aller au contenu
View in the app

A better way to browse. Learn more.

Next

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Problème de PROMT_COMMAND

Featured Replies

Posté(e)

Bonjour à tous !

J'ai un problème mon bash_profile modifié. J'essaie de me faire un command_prompt un peu sympa mais je suis confronté à un problème récurrent. Voici comment le reproduire.

Lorsque je défini mon prompt de la manière suivante :

export PROMPT_COMMAND="echo PROMPT_COMMAND"PROMPT_COMMANDexport PS1="PS1 $"

Mon prompt ressemble à ça :

PROMPT_COMMAND

PS1 $

Je peux taper une ligne entière sans rencontrer deproblème.

PROMPT_COMMAND

PS1 $abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz

Maintenant, si je change mon PROMPT_COMMAND (afin de tout avoir sur la même ligne) avec :

export PROMPT_COMMAND="echo -n PROMPT_COMMAND "

Mon prompt ressemble à ça :

PROMPT_COMMAND PS1 $

Mais lorsque je tape une commande de plus d'une ligne, une partie de la ligne se retrouve mélangée comme vous pouvez l'observer en dessous :

PROMPT_COMMAND PS1 $abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghixyzmnopqrstuvw

Vous pouvez essayer et reproduire ça chez vous.

Il y a d'autres problèmes lorsque, toujours après avoir dépassé la longueur d'une ligne, je fais remonter mon curseur en arrière (la partie PROMPT_COMMAND disparaît).

Si vous avez une idée, je suis preneur :).

Merci !

Posté(e)

Je viens de tenter dans cygwin et le problème est similaire (c'est sur le début de la deuxième ligne qu'il y a un problème). Pour l'instant je n'ai pas de solution.

Posté(e)
  • Auteur

Oui, en fait, la ligne se superpose sur la longueur du prompt command.

C'est très bête mais vraiment très chiembêtant.

Posté(e)

Je crois que c'est parce que bash va pouvoir savoir à quelle moment il doit sauter de ligne en calculant la longueur de la valeur de $PS1

Or comme tu as concatené une autre chaine avant, bash ne saurait pas quelle est la longueur de cette première chaine.

Question, pourquoi pas :

PS1="`echo -n COMMAND_PROMPT` PS1 $"

? (pas sur que ca règle le problème par contre)

Posté(e)
  • Auteur

Salut 16ar.

Merci de ton retour.

En fait, il faut savoir que le contenu de la variable PROMPT_COMMAND est interprété à chaque nouvelle ligne de prompt. Dans mon exemple j'ai pris un "echo -n PROMPT_COMMAND" mais en vrai j'ai un contenu beaucoup plus fouillé

Posté(e)

Si tu mets ton evaluation de variable ou de trucs complexe direct dans le PS1, ca sera mis à jour a chaque re-prompt. C'est bien ce que tu veux non ?

Sinon, en moulant sur linuxfr, je suis tombé sur ca y'a quelques semaines : https://github.com/nojhan/liquidprompt

Ca peut peut etre te donner des idées ou des pistes.

Ca faisait un bail que tu ne trainais plus par ici, Poulpy ! Tu vas bien ?

Posté(e)
  • Auteur

Non, ça ne marchera pas.

Ce qu'il faut faire c'est un truc du genre :

PROMPT_COMMAND="PS1=\"PROMPT_COMMAND PS1\"

de manière à setter la variable de PS1 à chaque nouvelle ligne. Mais je rencontre des soucis avec les couleurs maintenant :( ... Décidémment !!!

Sinon, oui oui ça va bien. Ca faisait en effet un moment que je n'étais plus passé ^^.

Tout roule pour toi aussi ?

Posté(e)

Pourquoi ca ne marchera pas ? PS1 est fait pour être évalué a chaque prompt.

Tu peux un peu détailler ce que tu as dans ton command_prompt ?

Posté(e)
  • Auteur
# .bashrc## \o/ Poulpy's bashrc \o/## INCLUSION DE DIFFERENTES SOURCESif [ -f /etc/bashrc ]; then	. /etc/bashrcfi# Source des definitions des couleursif [ -f /etc/couleurrc ]; then	. /etc/couleurrcfi# Source la conf local au userif [ -f ~/.bashrc_local ]; then	. ~/.bashrc_localfi# CREATION DES ALIASalias rm='rm -i'alias cp='cp -i'alias mv='mv -i'alias grep='grep --color'alias grepi='grep --color -i'alias ls='sudo ls --color=auto'alias l='sudo ls --color=auto'alias ll='sudo ls -hl --color=auto'alias la='sudo ls -a --color=auto'alias lla='sudo ls -lhart --color=auto'alias lld='sudo ls -lhd --color=auto'alias llad='sudo ls -lhad --color=auto'alias df='sudo df -h'alias d='sudo du -hs'alias hst='echo -n -e "\033k$HOSTNAME\033\\"'MYNOIR='\033[0;30m'MYROUGE='\033[0;31m'MYVERT='\033[0;32m'MYMARRON='\033[0;33m'MYBLEU='\033[0;34m'MYVIOLET='\033[0;35m'MYCYAN='\033[0;36m'MYGRISC='\033[0;37m'MYGRIS='\033[1;30m'MYROSE='\033[1;31m'MYVERTC='\033[1;32m'MYMARRONC='\033[1;33m'MYBLEUC='\033[1;34m'MYVIOLETC='\033[1;35m'MYCYANC='\033[1;36m'MYBLANC='\033[1;37m'# DEFINITION DE LA COULEUR DU PS1if [[ $HOSTNAME == *BLI* || $HOSTNAME == *bli* ]]; then	HOST_COLOR=$ROSEelse	HOST_COLOR=$MARRONfi# VIRER LES CTRL Cstty -echoctl# FANCY PROMPT COMMANDif which bc > /dev/null 2>&1; then	if [ $(echo $(cat /proc/loadavg |cut -d " " -f 1)*100/$(cat /proc/cpuinfo |grep -c processor) 2>/dev/null|bc) -gt 100 ]; then			export PROMPT_COMMAND='echo -n -e "\033k$HOSTNAME\033\\"'	else			export PROMPT_COMMAND='echo -n -e "\033k$HOSTNAME\033\\";sysLoad=`echo $(cat /proc/loadavg |cut -d " " -f 1)*100/$(cat /proc/cpuinfo |grep -c processor) 2>/dev/null|bc` ;if [ $sysLoad -le 17 ]; then export displayLoad=$MYVERTC------; elif [ $sysLoad -le 34 ]; then export displayLoad="$MYVERTC---$MYVERT---"; elif [ $sysLoad -le 51 ]; then export displayLoad="$MYVERTC--$MYVERT--$MYMARRONC--" ; elif [ $sysLoad -le 67 ]; then export displayLoad="$MYVERT--$MYMARRONC--$MYMARRON--"; elif [ $sysLoad -le 84 ]; then export displayLoad="$MYMARRONC--$MYMARRON--$MYROUGE--"; else export displayLoad="$MYMARRON--$MYROUGE--$MYVIOLET--"; fi; echo -n -e $MYMARRONC[$displayLoad$MYMARRONC]'	fielse	export PROMPT_COMMAND='echo -n -e "\033k$HOSTNAME\033\\"'fi# FANCY PROMPT LINEexport PS1="$GRAS$MARRONC[$VERTC\u$MARRONC@$HOST_COLOR\h$MARRONC \W$MARRONC]$GRISC "~~~~

Voici une version allégée :)

Posté(e)
  • Auteur

Au fait, pour l'explication, ce bash_profile permet d'afficher une petite jauge reflétant l'activité de la machine. C'est 'achement pratique :D.

Posté(e)

pour ton test qui vérifie si tu peux afficher le load, fais le dans une fonction, et appelle la directement dans le PS1 en début ?

Je ne sais pas si ca va régler ton probleme, mais le projet que j'ai laché au dessus, il affiche aussi le load si je ne dis pas de bêtises : https://github.com/nojhan/liquidprompt

  • 1 mois après...
Posté(e)

Un léger déterrage...

J'ai eu le même souci avec un PS1 utilisant des couleurs et des retours à la ligne.

La solution a été moi la suivante: "échapper" tout les '[' et ']' utilisés pour changer les couleurs!

Mon PS1 ressemble alors à ça:

export PS1="\n\[\e[1;36m\]\u@\h \[\e[1;32m\]\w\n\[\e[1;36m\][\D{%a %d %b} \t]\[\e[1;31m\]$ \[\e[m\]"

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.