gpt4 book ai didi

linux - 如何在 linux 终端中动态显示结果?像 'top' 命令

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:30 26 4
gpt4 key购买 nike

我想实现一个从可变文件中读取的 linux 命令,并且 每隔一秒动态地在终端中显示一次。如何在 linux 终端中动态显示结果?像'top'命令?谢谢!

最佳答案

您可以像 man 中描述的那样使用 watch 工具(Linux 在线 mans 在 man7.org 站点上):http://man7.org/linux/man-pages/man1/watch.1.html

   watch runs command repeatedly, displaying its output and errors (the
first screenfull). This allows you to watch the program output
change over time. By default, command is run every 2 seconds and
watch will run until interrupted.

例如:

watch -n 1 tail -n 23 file

这将每 1 秒运行一次命令 tail -n 23 file(显示文件 file 的最后 25 行)(选项 -n 1 watch)。 watch 将运行命令并打印其输出,休眠数秒,然后使用终端 (ANSI) 命令序列清屏。 watch有几种实现方式,最简单的是在busybox包中:https://git.busybox.net/busybox/tree/procps/watch.c?h=1_17_stable

while (1) {
/* home; clear to the end of screen */
printf("\033[H""\033[J");
...
fflush_all();
...
system(cmd);
sleep(period);
}

\033[H\033[J 序列来清除屏幕(fflush_all 是 just fflush(stdout) 的自定义 busybox 变体)。 Linux 在 console_codes (4) 手册页中记录了此类代码:http://man7.org/linux/man-pages/man4/console_codes.4.html ; \033是ESC,ESC[是CSI,ECMA-48 CSI sequences部分描述了CSI H和CSI J 命令:

   ECMA-48 CSI sequences

CSI ( or ESC [ ) is followed by a sequence of parameters .. An empty or
absent parameter is taken to be 0. The sequence of parameters may be
preceded by a single question mark.

H CUP Move cursor to the indicated row, column (origin at 1,1).
J ED Erase display (default: from cursor to end of display).

关于linux - 如何在 linux 终端中动态显示结果?像 'top' 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43291501/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com