J'ai ce qui suit dans Bash (sous Linux)
for dir in Movies/*
do
(cd "$dir" && pwd|cut -d \/ -f5|tr -s '\n' ', ' >> ../../movielist &&
exiftool * -t -s3 -ImageSize -FileType|tr -s '\t' ',' >> ../../movielist )
echo "Movie $movies - $dir ADDED!"
let movies=movies+1
done
Mais je souhaite faire en sorte que "l'écho" montre l'écho suivant sur la ligne suivante (ne pas concaténer avec la dernière sortie d'écho mais le remplacer) afin de donner l'impression qu'il est en cours de mise à jour. Similaire à la façon dont une barre de progression avec un pourcentage apparaîtrait sur la même ligne.
printf a; printf b
sortiesab
---printf a\\r; printf b
sortiesb
---printf a\\r; sleep 1; printf b
sortiesa
, puisb
Si j'ai bien compris, vous pouvez le faire remplacer votre écho par la ligne suivante:
Voici un petit exemple que vous pouvez exécuter pour comprendre son comportement:
la source
K
n'est pas nécessaire et en fait est publié comme la lettre K.Le reste des réponses est plutôt bon, mais je voulais juste ajouter des informations supplémentaires au cas où quelqu'un viendrait ici à la recherche d'une solution pour remplacer / mettre à jour un écho multiligne.
Je voudrais donc partager un exemple avec vous tous. Le script suivant a été essayé sur un système CentOS et utilise la commande "timedatectl" qui imprime essentiellement des informations détaillées sur l'heure de votre système.
J'ai décidé d'utiliser cette commande car sa sortie contient plusieurs lignes et fonctionne parfaitement pour l'exemple ci-dessous:
Ce qui précède affichera le résultat de "
timedatectl
" pour toujours et remplacera l'écho précédent par des résultats mis à jour.Je dois mentionner que ce code n'est qu'un exemple, mais peut-être pas la meilleure solution pour vous en fonction de vos besoins. Une commande similaire qui ferait presque la même chose (au moins visuellement) est "
watch -n 3 timedatectl
".Mais c'est une autre histoire. :)
J'espère que cela pourra aider!
la source
Cela peut être utile, essayez-le et modifiez-le si nécessaire.
la source
Vous pouvez essayer ceci .. Ma propre version de celui-ci ..
la source
Ma méthode préférée s'appelle do the sleep to 50. ici, la
i
variable doit être utilisée dans les instructions echo.la source