bash - 如何在同一行显示和更新回显

标签 bash

我在 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/

相关文章:

bash - 将 2 行组合在一起但 "interlaced"

regex - bash:如何检查字符串是否以 '#' 开头?

linux - 使用 sed 替换 yaml 文件中的键/值

linux - 用于创建和下载链接的 bash 脚本

php - 从 bash 执行 php 脚本,将输出分配给 bash 变量

庆典。 : './' 的用法

bash - 在 bash 中测试程序

bash - 有没有一种方法可以通过 sed 从字符串中删除美元符号?

linux - 如何在文件中的特定列中搜索 shell 中的字符串?

linux - Bash 脚本在本地工作但不在服务器上工作