Contenu | Rechercher | Menus

Annonce

Le forum rencontre en ce moment quelques soucis de charge, il est possible qu'une erreur soit affichée quand vous postez un message, ne rechargez pas la page au risque de poster une seconde fois votre message

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

Déjà un an…

#1 Le 05/02/2010, à 16:03

[resolu]bash, comment afficher des éléments du prompt à droite ?

Bonjour,
  qqn sais comment faire l'equivalent de la variable RPROMPT de zsh sous bash (qui permet d'afficher des éléments du prompt à droite) ?
  Merci
Jo

edit modo : merci d'utiliser des titres plus explicites
edit jo : ok, désolé hmm

Dernière modification par jofab (Le 23/02/2010, à 10:58)

Hors ligne

#2 Le 05/02/2010, à 20:32

Qid

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

il me semble que c'est PS2 ou 3 (justement pas le 1 wink)


"GNU/Linux c'est que du bonheur pourtant M$ W*****s est toujours là"
mon matos : 1 Portable ASUS X93SV : Ubuntu, Seven, et plein d'autres / 1 linutop V4 : Ubuntu Serveur (via dd usb)
page perso : doc.ubuntu-fr/Qid / lien utile : parrain-linux

Hors ligne

#3 Le 05/02/2010, à 22:05

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

le PS2 c'est ce qui définit le caractère de continuation de ligne :

user@host:~$ echo '
> ← c'est celui là

le PS3 c'est celui qui est utilisé par la commande select :

user@host:~$ select choix in a b c ; do echo $choix ; break ; done
1) a
2) b
3) c
#? ← c'est le PS3

après je n'ai pas trop compris ce que tu veux faire jofab… tu peux donner un exemple ?


GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

Hors ligne

#4 Le 05/02/2010, à 22:24

Qid

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

nesthib a écrit :

je n'ai pas trop compris ce que tu veux faire jofab… tu peux donner un exemple ?

facil :
prompt.png


"GNU/Linux c'est que du bonheur pourtant M$ W*****s est toujours là"
mon matos : 1 Portable ASUS X93SV : Ubuntu, Seven, et plein d'autres / 1 linutop V4 : Ubuntu Serveur (via dd usb)
page perso : doc.ubuntu-fr/Qid / lien utile : parrain-linux

Hors ligne

#5 Le 05/02/2010, à 22:39

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

Bonsoir

#!/bin/bash
function setPrompt()
{
VERT="\[\033[1;32m\]"
ROUGE="\[\e[31;1m\]"
JAUNE="\[\e[33;1m\]"
BLEU="\[\e[34;1m\]"
ROSE="\[\e[35;1m\]"
CYAN="\[\e[36;1m\]"
BLANC="\[\e[37;1m\]"
RESET="\[\e[0m\]"

newPWD=$(sed "s=$HOME=~=" <<< "${PWD}")

DATE=$(date +" %d/%m/%Y")
TIME=$(date +%H:%M)
#UPTIME1=$(uptime | sed 's/.*up *\([0-9: ]*\(min\|day\)*\([s]\{0,1\},[0-9: ]*\)\{0,1\}\),[0-9 ]*user.*/\1/')
UPTIME1=$(uptime | sed 's/.*up *\([0-9: ]*\(min[ ]*\|day[s]*\)*\(,[0-9: ]*\(min[ ]*\)*\)*\),[0-9 ]*user.*/\1/')

LIGNE="┌─→(${USER}@${HOSTNAME}${DATE})(${newPWD})"

MAX_COLUMNS=$((COLUMNS-1))
FILL=""
while [ ${#LIGNE} -lt ${MAX_COLUMNS} ];
do
  FILL="-${FILL}"
  LIGNE="${LIGNE} "
done

LIGNE1="${JAUNE}┌─→(${RESET}${VERT}${USER}${RESET}${JAUNE}@${RESET}${VERT}${HOSTNAME}${RESET}${VERT}${DATE}${RESET}${JAUNE})${FILL}(${RESET}${CYAN}${newPWD}${RESET}${JAUNE})"
LIGNE3_FIN="(${UPTIME1})"
LIGNE3_DEBUT="└─→(${TIME})─>"

FILL=""
while [ ${#LIGNE3_FIN} -lt ${MAX_COLUMNS} ];
do
  LIGNE3_FIN=" ${LIGNE3_FIN}"
  FILL=" ${FILL}"
done
LIGNE3_FIN="${FILL}${JAUNE}(${RESET}${CYAN}${UPTIME1}${RESET}${JAUNE})${RESET}${BLANC}"
PS1="${LIGNE1}\n@\n${LIGNE3_FIN}\r\[\033[1;32m\]${LIGNE3_DEBUT}"
}

tu enregistre le script

tu ajoute dans ton bashrc :

. ~/script/setPrompt.sh
PROMPT_COMMAND=setPrompt

le script tu le nomme setPrompt.sh et modifie le chemin pour qu'il te coresspond et amuse toi bien smile

Dernière modification par n3o51 (Le 05/02/2010, à 22:40)


Welcome to the real world
________________________________

Hors ligne

#6 Le 05/02/2010, à 22:45

Qid

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

@ n3o51 > c'est mignon ton truc mais
meme pour moi qui connais à peu pres la syntaxe du bouzin
ça nous aide pas franchement : j'ai pas trouvé ou était défini tes lignes


"GNU/Linux c'est que du bonheur pourtant M$ W*****s est toujours là"
mon matos : 1 Portable ASUS X93SV : Ubuntu, Seven, et plein d'autres / 1 linutop V4 : Ubuntu Serveur (via dd usb)
page perso : doc.ubuntu-fr/Qid / lien utile : parrain-linux

Hors ligne

#7 Le 05/02/2010, à 22:51

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

sympa n3o51 ^^ je ne connaissais pas le RPROMPT


GUL les mardis à Bordeaux : Giroll
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdnGMT-4

Hors ligne

#8 Le 05/02/2010, à 23:01

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

un sudo apt-get install zsh est bien plus rapide quand meme smile

Mais bon j'avais déjà fait la demande ici

Cela resemble a cela :

┌─→(n3o@matrix——————————————(~)
@
└─→(22:47)─>$                                              (22:47:44)

Ligne = a n3o@ avec le newPWD a la fin pour remplacer /home/n3o par ~
Ligne debut = a la date  jusqu'au $

enfin ligne de fin a l'uptime

enfin une boucle avec while qui ajoute des - afin d'avoir toute la longueur du terminal en fonction de la taille


Welcome to the real world
________________________________

Hors ligne

#9 Le 06/02/2010, à 13:56

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

Bonjour,
Sinon, pour aligner un texte à droite de la console :

droite="le texte à aligner à droite"
printf "\r\033[$(($(tput cols)-${#droite}))C${droite}"

Dernière modification par Totor (Le 06/02/2010, à 13:57)


-- Lucid Lynx --

Hors ligne

#10 Le 23/02/2010, à 10:57

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

Merci pour vos réponses.
Jo

Hors ligne

#11 Le 23/02/2010, à 17:16

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

Je dirait meme plus simple :

printf '%*s\n' $COLUMNS "ceci est a droite"

Totor, c'est quoi tes caracteres d'échapement ?


bashfr.org(random);
ChuPaChuPs : Peu importe que le verre soit à moitié plein ou à moitié vide, l'important c'est qu'il en reste dans la bouteille ! :')

Hors ligne

#12 Le 24/02/2010, à 12:27

Re : [resolu]bash, comment afficher des éléments du prompt à droite ?

sputnick a écrit :

Totor, c'est quoi tes caracteres d'échapement ?

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

Hors ligne

Haut de page ↑