gratifiant > linux.debian.user.french

benoitlst (28/11/2019, 15h00)
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 :



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,
Erwan David (28/11/2019, 15h40)
Le 28/11/2019 à 13:57, benoitlst 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 :
>
> echo ${string: -30}

Il faut regarder la partie sur le prompt dans le man zshmisc(1)
Marc Chantreux (28/11/2019, 16h20)
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:
>


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
benoitlst (28/11/2019, 17h00)
Le 2019-11-28 14:34, Erwan David a écrit :
> Le 28/11/2019 à 13:57, benoitlst a écrit :
> 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.
Discussions similaires