在没有 I/O 的情况下在 bash 中使用命令栏?

rub*_*o77 7 bash programming

我真的很喜欢输出的外观 bar

但该脚本仅用于输入/输出操作。

我怎样才能用它来代替睡眠但有视觉反馈?

sleep 10
Run Code Online (Sandbox Code Playgroud)

slm*_*slm 9

我看不到使用bar. 但是,您可能对这些执行相同操作的其他命令感兴趣,它们可能更适合您的需求。

方法#1 - 假装

此方法将简单地用更大的进度条覆盖先前显示在屏幕上的内容。简单但有效。

例如,ex.bash

#!/bin/bash

echo -ne '#####                     (33%)\r'
sleep 1
echo -ne '#############             (66%)\r'
sleep 1
echo -ne '#######################   (100%)\r'
echo -ne '\n'
Run Code Online (Sandbox Code Playgroud)

方法#2 - 管道视图

该命令pv提供进度条功能。您可以在这篇题为“您应该了解的 Unix 实用程序:管道查看器”的文章中看到更详细的示例。

$ pv access.log | gzip > access.log.gz
611MB 0:00:11 [58.3MB/s] [=>      ] 15% ETA 0:00:59
Run Code Online (Sandbox Code Playgroud)

方法#3 - 微调器

您可以使用以下示例代码通过一个简单的循环来构建您自己的“微调器”。在循环中,您可以嵌入您喜欢的任何命令。这段代码来自这篇文章,标题为:我可以在 Bash 中做一个微调器吗?.

#!/bin/bash

sp='/-\|'
printf ' '
for i in $(seq 3); do
  printf '\b%.1s' "$sp"
  sp=${sp#?}${sp%???}
  sleep 1
done
echo ''
Run Code Online (Sandbox Code Playgroud)

方法#4 - 对话

有一个名为的命令dialog,它几乎可以满足您的需求。它使用图形对话框,但它们是基于 ncurses 的,因此只要支持 ncurses,它们就可以在大多数终端和/或脚本中工作。您可以dialog在该项目的网站上查看所有文档

截屏

ss of guage

参考