j'utilise zsh
.
Dites, par exemple, que je veux supprimer le répertoire actuel de cdpath
. Cela signifie que je dois supprimer un élément basé sur le contenu, qui correspond à la ${name:#to_be_removed}
motif bien. Mais il y a un problème: to_be_removed
est le résultat de la substitution (à savoir, $(pwd)/
). Comment pourrais-je retirer ceci d'une manière élégante? Le meilleur que j'ai réussi est celui-ci:
cdpath=("${(s/ /)$(eval echo $(echo "\${(@)cdpath:#${$(pwd)}/}"))}")
C'est un cas d'utilisation courant pour moi, et avoir des tonnes de ce * désordre SH commence à m'énerver ...
Merci, PythonNut
Réponses:
Si vous souhaitez supprimer le répertoire en cours de la
$cdpath
tableau, je voudrais simplement utiliser(#s)
et(#e)
servir le même but que^
et$
dans les expressions rationnelles '' normales, c’est-à-dire le début et la fin de la chaîne. Notez s'il vous plaît : Ceux-ci auront besoinsetopt EXTENDED_GLOB
travailler!Si vous avez besoin d'une commande externe,
devrait marcher.
Cas de test:
la source