我想通过做一些简单的,ncurses之类的控制台显示来修改Bash shell脚本的输出。
例如,我希望在某些活动完成后显示百分比值增加。我可以通过在新行上输出每个百分比值来完成此操作,例如,
0%
1%
2%
... etc. ...
但是我希望将文本更新到位(也就是说,脚本只会写一行输出来显示百分比,然后该行上显示的百分比值会发生变化)。我知道我可以使用不同的脚本语言和ncurses,但是有一个Bash解决方案不会引起太多的痛苦。最好是,我喜欢各种各样的Unix支持者。
答案 0 :(得分:2)
输出\r
会将光标返回到第一列,以便您可以覆盖已经存在的文本。如果您需要更复杂的动作,具有各种tput
功能的cu*
将允许您根据需要移动和放置光标。
答案 1 :(得分:2)
为了完全通用性和可移植性,这将是dialog
包。基本的ncurses
版本非常便于携带;还有一个名为gdialog
的Gtk + GUI版本。然后,您不仅可以选择所描述的内容,还可以选择实际的进度条小部件。
更简单的一点是,只需输出\r
(使用printf
实用程序,或者使用echo -n ...^M
或echo ... \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米'。适用于几乎所有的贝壳。