java - Bash 非滚动终端输出

标签 java bash

一些程序以一种用户体验像更改值的字符串而不是打印的行(bash 向下滚动以能够显示所有更改的输出)的方式向 bash 生成输出。这种现象叫什么?它是如何在 java 程序或 bash 脚本中实现的。如何解析输出?它只是打印新行但使用一些特殊功能吗?

top 就是一个利用这种输出数据“现象”的程序


使用了 Okey 游标。

那我怎么用java解析它们呢?我试过这段代码,但它没有打印任何东西

public static void exeTest(String [] args) throws IOException{
        if (args.length <= 0) {
            System.out.println("empty command");
            return;
        }

       Process process = new ProcessBuilder(args).start();
       InputStream is = process.getInputStream();
       InputStreamReader isr = new InputStreamReader(is);
       BufferedReader br = new BufferedReader(isr);


       System.out.printf("Output of running %s is:", 
          Arrays.toString(args));
       String line;
       while ((line = br.readLine()) != null) {
            System.out.println(line);
       }

感谢所有好的答案,我现在对这个主题更加熟悉,即使我仍然无法解析程序输出,如 java 中的顶部输出。我将关闭这个问题并做更多关于如何在 java 中解析它的研究。然后我可能会开始另一个更具体的关于用 java 解析输出的问题。

最佳答案

不是打印整行(如 println 或打印 %n),而是写退格字符(\b)或空回车没有换行符 (\r) 将光标移回要打印的内容前面。

关于java - Bash 非滚动终端输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961865/

相关文章:

java - 在后端使用 Joda DateTime,如何转换为 JavaScript Date 对象?

linux - 为什么从 "find: paths must precede expression"返回多个结果时会触发错误 "find"

python - 如何在 Jupyter notebook 中设置环境变量

java - 由于某种原因,String.Format 严重错位

java - 在 Java 中使用自己的随机数进行 TLS 握手

java - Gradle + war = 错误的war内容

bash - 使用循环中的复杂命令在 gnome 终端中打开多个选项卡

ios - 如何访问项目 > build设置 > 其他 Swift 标志中定义的值?

bash - 用 bash 中的字符串替换 "template tag"

java - 在 libGDX 中一一淡入文本字符串