Mon thème de terminal était comme ça,
Mais je pensais que l'invite gaspillait tellement d'espace. Et plus tard, j'ai eu l'idée que je pouvais nettoyer l'invite à chaque fois que j'exécutais une commande. J'utilisais bash, une des solutions est d'utiliser la preexec_invoke_exec
fonction.
J'utilise la commande suivante pour nettoyer les derniers caractères d'invite:
echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"
Pour que le terminal soit très propre, comme ça,
Mais maintenant, mon problème est, il y aura un problème si je veux utiliser plusieurs commandes sur une seule ligne , par exemple, lorsque j'utilise for i in ...
.
Voici la version complète de la fonction dans mon .bashrc,
preexec () { echo -ne "\033[1A\033[K\033[1A\033[K\033[31;1m$ \033[0m"; echo -n "$1"; echo -ne " \033[37;2m["; echo -n "$2"; echo -ne "]\033[0m\n"; }
preexec_invoke_exec () {
[ -n "$COMP_LINE" ] && return # do nothing if completing
[ "$BASH_COMMAND" = "$PROMPT_COMMAND" ] && return # don't cause a preexec for $PROMPT_COMMAND
local this_command=`history 1 | sed -e "s/^[ ]*[0-9]*[ ]*//g"`;
local this_pwd=`pwd`;
preexec "$this_command" "$this_pwd"
}
trap 'preexec_invoke_exec' DEBUG
zsh
…
for i in $(seq 1 10); do ls; done
sa fonction, la sortie des commandes d'itération est "avalée" pour ainsi dire. OP a donc voulu désinfecter le comportement tout en activant cette invite. La raison pour laquelle je soutiens cela est l'intérêt pour la sensibilisation à la coque, l'utilisabilité, les commentaires et la portabilité. Le lien que j'avais mis dans mon commentaire précédent mène au post sur superutilisateur - ils ont eu la peine d'attribuer cet extrait, c'est donc un prototype qui émule la fonctionnalité native de zsh (qui je pense est intéressante), sous la forme d'une fonction de trap ici.