У меня в Bash (в 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
Но я хочу сделать так, чтобы «эхо» показывало следующее эхо в следующей строке (не объединять с последним выводом эха, а заменять его), чтобы оно выглядело так, как будто оно обновляется. Подобно тому, как индикатор выполнения с процентами отображается в той же строке.
printf a; printf b
выходыab
---printf a\\r; printf b
выходыb
---printf a\\r; sleep 1; printf b
выходыa
, затемb
Если я хорошо понял, вы можете получить его, заменив свое эхо следующей строкой:
Вот небольшой пример, который вы можете запустить, чтобы понять его поведение:
источник
K
этом нет необходимости и фактическиОстальные ответы довольно хороши, но просто хотел добавить дополнительную информацию на случай, если кто-то придет сюда в поисках решения для замены / обновления многострочного эха.
Итак, я хотел бы поделиться со всеми вами примером. Следующий сценарий был опробован в системе CentOS и использует команду «timedatectl», которая в основном выводит некоторую подробную информацию о времени вашей системы.
Я решил использовать эту команду, поскольку ее вывод содержит несколько строк и отлично работает для примера ниже:
Вышеупомянутое напечатает результат "
timedatectl
" навсегда и заменит предыдущее эхо обновленными результатами.Я должен упомянуть, что этот код является только примером, но, возможно, не лучшим решением для вас в зависимости от ваших потребностей. Похожая команда, которая будет делать почти то же самое (по крайней мере, визуально): "
watch -n 3 timedatectl
».Но это другая история. :)
Надеюсь, это поможет!
источник
Это может быть полезно, попробуйте и при необходимости измените.
источник
Вы можете попробовать это .. Моя собственная версия ..
источник
Мой любимый способ - уснуть до 50. Здесь
i
переменную нужно использовать внутри эхо-операторов.источник