我想知道如何在shell中获得动态输出。我指的是使用"top“命令或wget下载的状态栏得到的那种输出:命令行输出在没有换行符的情况下更改。
我的特定需求是从脚本获得反馈(这需要通过许多操作执行很多操作),而不是为每个操作反馈获得一个换行符,例如,一个发现脚本,它在一个非常大的网络中发送ping,并且可以动态地告诉发现的状态。
(不,我不能使用nmap :D,不管怎样,它是为了学习目的)
谢谢!
发布于 2015-07-01 16:50:35
“动态”显示只是一系列的print语句。其中一些打印语句打印屏幕控制代码,这些代码移动光标或重新绘制屏幕的某些部分。为此,事实上的标准框架是ncurses。要从shell脚本中访问,您需要tput。
这是一个简单的“动画”微调器。
#!/bin/sh
# Restore cursor and move to new line when terminated
trap 'tput cnorm; echo' EXIT
trap 'exit 127' HUP INT TERM
# Make text cursor invisible
tput civis
# Save cursor position
tput sc
while true; do
for char in '-' '\' '|' '/'; do
# Back to saved position
tput rc
printf "%s" "$char"
sleep 1
done
done发布于 2015-07-01 17:02:29
您可以在bash中使用光标移动。有关光标移动的信息,请参阅http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html
如果你想动态打印日期,你可以这样做:
echo -ne '\033[s'; clear ; for i in `seq 10`;do echo -ne '\033[0;0H' ; date;sleep 1;done ;echo -ne '\033[u'https://stackoverflow.com/questions/31156508
复制相似问题