首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash动态命令行输出

Bash动态命令行输出
EN

Stack Overflow用户
提问于 2015-07-01 16:42:02
回答 2查看 2.2K关注 0票数 4

我想知道如何在shell中获得动态输出。我指的是使用"top“命令或wget下载的状态栏得到的那种输出:命令行输出在没有换行符的情况下更改。

我的特定需求是从脚本获得反馈(这需要通过许多操作执行很多操作),而不是为每个操作反馈获得一个换行符,例如,一个发现脚本,它在一个非常大的网络中发送ping,并且可以动态地告诉发现的状态。

(不,我不能使用nmap :D,不管怎样,它是为了学习目的)

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-07-01 16:50:35

“动态”显示只是一系列的print语句。其中一些打印语句打印屏幕控制代码,这些代码移动光标或重新绘制屏幕的某些部分。为此,事实上的标准框架是ncurses。要从shell脚本中访问,您需要tput

这是一个简单的“动画”微调器。

代码语言:javascript
复制
#!/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
票数 2
EN

Stack Overflow用户

发布于 2015-07-01 17:02:29

您可以在bash中使用光标移动。有关光标移动的信息,请参阅http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

如果你想动态打印日期,你可以这样做:

代码语言:javascript
复制
echo -ne '\033[s'; clear ; for i in `seq 10`;do echo -ne '\033[0;0H' ; date;sleep 1;done ;echo -ne '\033[u'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31156508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档