我在 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
但我希望做到这一点,以便“echo ”在下一行显示以下 echo (不与最后一个 echo 输出连接,而是替换它),使其看起来像是在更新。类似于带有百分比的进度条在同一行上的显示方式。
最佳答案
好吧,我没有正确阅读 man echo
页面。
echo
如果我添加第三个转义字符,则有 2 个选项可以执行此操作。
这 2 个选项是 -n
和 -e
。
-n
不会输出结尾的换行符。这样一来,我就不用在每次回显某些内容时都换行了。
-e
将允许我解释反斜杠转义符号。
猜猜我想为此使用什么转义符号:\r
。是的,回车会让我回到开始,它看起来就像我在同一行上更新。
所以回显线看起来像这样:
echo -ne "Movie $movies - $dir ADDED!"\\r
我必须转义转义符号,这样 bash 就不会杀死它。这就是为什么您会在上方看到 2 个 \
符号。
正如 William 所提到的,printf
也可以像这样执行类似(甚至更广泛)的任务。
关于bash - 如何在同一行显示和更新回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12628327/