在同一点上打印打印信息

时间:2015-04-03 16:24:50

标签: bash shell printf echo

在bash中如何在同一点上打印信息???

例如,如果我想遍历假设根目录的所有子目录中的所有文件并且我想在终端上打印所有信息总是在同一位置而不打印新行?我该怎么办?

DIR示例

--> root
   --> Dir 1
     --> File 1
     --> File 2
   --> Dir 2
     --> File 3
     --> File 4

shell输出必须是这样的:

Infos before that I don't want to clear

-------------------------------
Directory    : dirName
File count   : x
File         : fileName
-------------------------------

“Count”将保持与当前目录相同,但其他信息必须根据循环的当前子目录(元素)进行更改

提前致谢

1 个答案:

答案 0 :(得分:1)

考虑以下示例:

for file in *
do
  printf "\r%${COLUMNS}s\r%s" "" "$file"
  sleep 1
done
echo

这将打印同一行当前目录中的所有文件,在每个文件名后暂停一秒钟。

在此示例中,printf用于打印空参数,其字段宽度对应于终端的列。这是为了在打印每个新$file之前清除行中仍然存在的任何输出。