来自shell脚本的简单控制台图形,GUI或界面?

时间:2011-05-28 04:56:24

标签: bash shell ncurses

我想通过做一些简单的,ncurses之类的控制台显示来修改Bash shell脚本的输出。

例如,我希望在某些活动完成后显示百分比值增加。我可以通过在新行上输出每个百分比值来完成此操作,例如,

0%
1%
2%
... etc. ...

但是我希望将文本更新到位(也就是说,脚本只会写一行输出来显示百分比,然后该行上显示的百分比值会发生变化)。我知道我可以使用不同的脚本语言和ncurses,但是有一个Bash解决方案不会引起太多的痛苦。最好是,我喜欢各种各样的Unix支持者。

3 个答案:

答案 0 :(得分:2)

输出\r会将光标返回到第一列,以便您可以覆盖已经存在的文本。如果您需要更复杂的动作,具有各种tput功能的cu*将允许您根据需要移动和放置光标。

答案 1 :(得分:2)

为了完全通用性和可移植性,这将是dialog包。基本的ncurses版本非常便于携带;还有一个名为gdialog的Gtk + GUI版本。然后,您不仅可以选择所描述的内容,还可以选择实际的进度条小部件。

更简单的一点是,只需输出\r(使用printf实用程序,或者使用echo -n ...^Mecho ... \r\c之一的旧商业Unix,就可以覆盖一行

答案 2 :(得分:1)

使用ANSI转义码来使用或着色光标。

这是python中的一个简短示例(使用-u标志为unbuffered运行它,否则你将看不到更新):

#!/usr/bin/env python

import time
import sys

for i in range (10):
    sys.stdout.write ('%d\x1b[1D' % i)
    time.sleep (1)

CSInD('\ x1b [1D')将光标向左移动n个位置。如果你想要一个彩色光标,只需打印例如'\ X1B [1;31米'。适用于几乎所有的贝壳。