Si je comprends bien la question, vous voulez que l'invite affiche l'adresse tout le site de votre répertoire actuel en bleu, mais avec chacune des barres obliques ("/") en rose.
Malheureusement, vous ne pouvez pas faire cela dans votre invite.
Utilisez la fonction intégrée precmd ()
fonction.
ZSH nous donne un precmd
qui est similaire à la fonction PROMPT_COMMAND
. Ils permettent de lancer une commande avant l'affichage de l'invite.
Je ne recommanderais pas non plus une invite longue de toute façon, car elle rend l'utilisation très difficile lors de la saisie des commandes. Mettre le répertoire complet au-dessus de votre invite est bien meilleure du point de vue de l'interface utilisateur. Le code suivant accomplit cela.
Il suffit de mettre les éléments suivants dans votre ~/.zprofile
.
precmd () { printf "\n"; pwd | awk -F "/" ' {for (i=1; i<=NF; i++) printf "\033[01;34m"$i"\033[38;5;206m/"; printf"\n" }' }
Et voici les résultats :
La capture d'écran ci-dessus est ma fenêtre iTerm montrant que j'ai traversé profondément dans mon /Applications/Firefox.app
avec le répertoire courant formaté en bleu, séparé par des barres obliques roses.
Comment ça marche...
J'ai élargi la ligne premcmd
ci-dessus pour qu'elle soit multi-lignes et nous avons ajouté quelques variables pour mieux voir ce qui se passe.
precmd() {
printf "\n";
pwd | awk -F "/" '{ blue="\033[01;34m"; \
pink="\033[38;5;206m"; \
for (i=1; i<=NF; i++) \
printf blue $i pink "/"; \
printf "\n"
}'
}
Voici ce que cela signifie :
-
printf "\n"
imprime une nouvelle ligne de caractères. Ceci est pour l'esthétique.
-
pwd
renvoie le nom du répertoire de travail ( man pwd
) qui est alors canalisation ("|") à la commande suivante, awk
( man awk
).
-
-F "/"
définit le séparateur de champ à la barre oblique ; awk
par défaut est un espace. J'ai gardé mon invite à sa configuration courte et succincte.
Dans le "programme" awk, délimité par les accolades ("{" et "}"), nous avons ce qui suit :
- variables
blue
y pink
sont fixés à leur Codes d'échappement ANSI \033[01;34m
y \033[38;5;206m
respectivement.
- Nous avons ensuite une boucle for/do qui itère à travers chacun des champs qui
awk
a été traité. NF
est le nombre total de champs.
-
printf blue $i
y printf pink "/"
imprime le nom du répertoire en bleu et la barre oblique en rose.