Bash 重写屏幕的最快方法

Blu*_*Ice 2 performance bash speed command-line

我在 Mac OS X 和 Lubuntu 上使用 bash。当我制作控制台应用程序时,一件烦人的事情是

clear
Run Code Online (Sandbox Code Playgroud)

将向控制台添加一整行(x 行)。然后我重写屏幕,这既费时又低效。

相反,我正在寻找一种方法,使我的应用程序不会创建额外的行并重写当前显示的字符。(如“顶部”命令)

例如,我的应用程序需要使控制台左上角的数字尽快上升。

示例 #1:使用 clear

#!/bin/bash
for i in `seq 1 1000000`
do
    echo $i
    clear
done
Run Code Online (Sandbox Code Playgroud)

除了它“闪烁”,有时会挂起,浪费控制台空间,而且通常很难看之外,这会很棒。

示例 2:使用退格键

#!/bin/bash
echo -e "\033[8;5;10;t"
clear
echo -e -n "0"

for i in `seq 1 1000000`
    do
    echo -e -n "\b\b\b\b\b\b\b$i"
done
Run Code Online (Sandbox Code Playgroud)

这个运行起来就像一个魅力,不会产生额外的线条,而且速度很快,但它只能在小窗口中运行。

示例#3:使用“top”和“alsamixer”所做的那种重写公式。

我将如何做这个例子?

Aar*_*ler 5

看看这个;我特别推荐这个tput例子,因为它或多或少地允许你想到什么,并且在 shell 脚本中相当轻量级 - 直接回显转义序列不是。tput还尊重 termcap/terminfo,这将有助于使您的脚本更具可移植性。