400889 发表于 2023-4-12 07:11:09

LINUX命令行脚本编程的一个小技巧

如果是长时间运行跑循环,
那么,在每个循环的刚开始的时候,输出 \x1b[2K\r
然后,再输出其他的信息,
这个循环里可能会有两种情况,一是有重点信息需要输出,一种是不需要输出重要信息。
那么,只需要在,需要输出重要信息的时候,输出\n,这行信息会被保留,否则的话,会在下一次循环,被\x1b[2K\r覆盖掉。

不知道说的够明白了没有。


一个简单的演示:
https://pastebin.com/XtmSwMkv

已经用了好些年了,正好解决了前面这个MJJ的需求
https://hostloc.com/thread-1157799-1-1.html
也就是:
既知道程序的运行状态(也就是每次循环都输出了信息)
也不要让过多的无用信息把屏幕给占了(如果当前循环的信息无用,就在下次循环给覆盖掉)

mark 发表于 2023-4-12 07:11:38

笑死我,你是不是不懂用tee啊是不是不懂用screen啊是不是不懂用重定向啊

灌水王 发表于 2023-4-12 07:12:36

就是每次清屏再从头输出?

灌水王 发表于 2023-4-12 07:12:55

\x1b[2K 的意思是清除所在行的所有内容
\r 是把光标移动回当前行的开头
这两个连起来用就是“清屏再从头输出”,只清除当前行
页: [1]
查看完整版本: LINUX命令行脚本编程的一个小技巧