Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Prompt zsh

3 réponses
Avatar
benoitlst
Bonjour à toutes et tous,

Je recherche une façon de modifier la partie : %~ de mon PROMPT zsh
pour réduire sa longueur quand il prend trop de place dans la ligne de
commande.

echo '%~' ne fonctionne pas.

Comment fait-on pour récupérer la valeur de %~ ?

J’ai trouvé mon bonheur ici pour n’afficher que les 30 derniers
caractères d'une chaîne :

http://mywiki.wooledge.org/BashFAQ/073

echo ${string: -30}

avec pwd -L

Ces deux lignes contractées, ça donne :
echo ${"$(pwd -L)": -30}

Le prompt n’est pas réinterprété quand je change de
répertoire en remplaçant ‘%~’ par
${"$(pwd -L)": -30} :

PROMPT="%n@%m: ${"$(pwd -L)": -30} %# "

Ceci ne fonctionne pas non plus :
PROMPT="%n@%m: ${"%~": -30} %# "

D’avance un tout grand merci.

Avec gratitude,
--
Benoit

3 réponses

Avatar
Erwan David
Le 28/11/2019 à 13:57, a écrit :
Bonjour à toutes et tous,
Je recherche une façon de modifier la partie : %~ de mon PROMPT zsh
pour réduire sa longueur quand il prend trop de place dans la ligne de
commande.
echo '%~' ne fonctionne pas.
Comment fait-on pour récupérer la valeur de %~ ?
J’ai trouvé mon bonheur ici pour n’afficher que les 30 derniers
caractères d'une chaîne :
http://mywiki.wooledge.org/BashFAQ/073
echo ${string: -30}

Il faut regarder la partie sur le prompt dans le man zshmisc(1)
Avatar
Marc Chantreux
salut,
Je recherche une façon de modifier la partie : %~ de mon PROMPT zsh
pour réduire sa longueur quand il prend trop de place dans la ligne de
commande.
echo '%~' ne fonctionne pas.

tu peux déclencher l'expansion de % de deux façons:
* soit avec le flag -P de print (man zshbuiltins) que tu peux coupler
avec -v pour écrire dans une variable:
print -P 'direct: %~' # direct: ~
print -v PS1 'via PS1: %~'
print $PS1 # via PS1: %~
* soit avec l'expansion modifier % (man zshexpn) que tu peux coupler
avec (l::) ou (r::) qui te permette de
cd /tmp
print ${(r:3:%):-%~ >} # /tm
cd /tmp
print "${(r:20::_:%):-%~}>" # /tmp ______________>
J’ai trouvé mon bonheur ici pour n’afficher que les 30 derniers
caractères d'une chaîne:
http://mywiki.wooledge.org/BashFAQ/073

Hors des syntaxes historiques/standard, bash et zsh ont des syntaxes
très différentes. Ayant tourné le dos à bash il y a presque 20 ans,
je ne pourrait pas comparer objectivement mais à l'époque, il n'y avait
pas de discution possible sur la supériorité de zsh à mes yeux
cordialement,
marc
Avatar
benoitlst
Le 2019-11-28 14:34, Erwan David a écrit :
Le 28/11/2019 à 13:57, a écrit :
Bonjour à toutes et tous,
Je recherche une façon de modifier la partie : %~ de mon PROMPT zsh
pour réduire sa longueur quand il prend trop de place dans la ligne de
commande.
echo '%~' ne fonctionne pas.
Comment fait-on pour récupérer la valeur de %~ ?
J’ai trouvé mon bonheur ici pour n’afficher que les 30 derniers
caractères d'une chaîne :
http://mywiki.wooledge.org/BashFAQ/073
echo ${string: -30}

Il faut regarder la partie sur le prompt dans le man zshmisc(1)

En effet c'est bien expliqué :
Les deux derniers éléments du path : %2~
Merci.
--
Benoit