我想知道如何在shell中获得动态输出。我的意思是使用“top”命令或wget下载的状态栏获得的输出类型:命令行输出更改而不使用任何换行符。
我的具体需求是从一个脚本获得反馈(这个脚本需要很多操作才能执行),而不必为每个操作获得换行反馈,例如在一个非常大的网络中发送ping的发现脚本,它可以动态地判断发现的状态。
(不,我不能用nmap:D,不管是为了学习)
谢谢!

最佳答案

“动态”显示只是一系列打印语句。其中一些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

09-25 15:31