在linux下用c和shell编写彩色进度条
来源:互联网 发布:英雄联盟mac可以玩吗 编辑:程序博客网 时间:2024/05/22 01:31
进度条
显示在屏幕上的进度条一般分为三部分
1. 显示已经执行了多少
2. 执行多少占的百分比
3. 一个转盘
先来说一下普通的进度条
对于显示执行多少,一般都会预留100个空间,每0.1秒完成1%
对于执行占的百分比,用循环i来实现,每循环一次,i+1,刚好是循环占的百分比
对于转盘,用一个数组实现,数组中有四个元素\ | - /,当这四个元素依次循环时,出现一个简单的转盘。
实现进度条
先用C实现
#include<stdio.h> #include<unistd.h> #include<string.h> int main() { int i = 0; char str[100]; //进度条一般都是百分制,所以定义100个空间 memset(str, '\0', sizeof(str)/sizeof(char)); //先将所有的都赋值为\0,打印出来就是空 char tmp[4] = {'-', '\\', '|', '/'}; for(; i<=100; i++) { str[i] = '#'; color=30+i%8; printf("[%-101s][%d%%][%c]", str, i, tmp[i%4]); printf("\r"); fflush(stdout); //刷新输出 usleep(50000); } printf("\n"); return 0; }
为什么要用\r,而不用\n呢?
\n有两个作用,刷新,换行。在进度条里并不需要换行,只需要刷新,所以使用\r。
用shell脚本实现
#!/bin/bashi=0lable=('|' '\\' '-' '/')while [ $i -le 100 ]do printf "[%-100s][%d%%][%c]\r" "$str" "$i" "${lable[$i%4]}" str='#'$str sleep 0.1 let i++doneprintf "\n"
shell脚本实现思想和C实现是一样的,只要遵循shell的语法规则就可以了。
实现彩色进度条
下面介绍一下实现彩色进度条。
已经实现了普通进度条,再来实现彩色进度条,只要掌握了配色规则,实现起来是相当的容易。
先说一下配色的规则。
\033[0m 关闭所有属性
\033[1m 设置高亮度
\033[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m – \033[37m 设置前景色
\033[40m – \033[47m 设置背景色
\033[nA 光标上移n行
\033[nB 光标下移n行
\033[nC 光标右移n列
\033[nD 光标左移n列
\033[y;H 设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\033[?25h 显示光标
\033也可以换成\e
文字背景色彩数字: (颜色范围:40 - 49)
40: 黑色
41: 深红色
42: 绿色
43: 黄色
44: 蓝色
45: 紫色
46: 深绿色
47: 白色
(3). 文字前景色数字: (颜色范围: 30 - 39)
30: 黑色
31: 红色
32: 绿色
33: 黄色
34: 蓝色
35: 紫色
36: 深绿色
37: 白色
举个例子就能清楚的看到怎么使用了
如果只是单次使用,在语句的最后一定要加上\e[0m,将配色清除,变为原来的配色方案。
C实现彩色进度条
#include<stdio.h> #include<unistd.h> #include<string.h> int main() { int color=0; int i = 0; char str[102]; memset(str, '\0', sizeof(str)/sizeof(char)); char tmp[4] = {'-', '\\', '|', '/'}; for(; i<=100; i++) { str[i] = '#'; color=30+i%8; printf("\e[5m\e[%dm[%-101s][%d%%][%c]\e[0m",color, str, i, tmp[i%4]); printf("\r"); fflush(stdout); usleep(50000); } printf("\n"); return 0; }
Shell实现彩色进度条
#!/bin/bashi=0lable=('|' '\\' '-' '/')while [ $i -le 100 ]do let indexcolor=i%8 let color=30+indexcolor; printf "\e[5m\e[${color}m[%-100s][%d%%][%c]\e[0m\r" "$str" "$i" "${lable[$i%4]}" str='#'$str sleep 0.1 let i++doneprintf "\n"
\e[5m设置为闪烁,\e[${color}m设置字体的颜色,随着i的变化,字体颜色也会发生改变。
- 在linux下用c和shell编写彩色进度条
- shell下彩色进度条的编写
- 用shell脚本编写彩色进度条
- shell脚本编写彩色进度条
- Linux下实现一个简单进度条和shell脚本实现彩色进度条
- 在linux下编写进度条
- linux之shell彩色进度条
- shell脚本实现彩色进度条的编写
- linux下实现彩色进度条
- C语言实现彩色进度条---linux环境下编译
- 在Linux环境下实现打印彩色进度条
- Linux--用shell脚本写一个彩色进度条
- linux环境下实现进度条以及shell脚本实现彩色进度条
- Shell脚本下的彩色进度条
- liunx下 采用shell实现彩色进度条
- Linux日常——shell彩色进度条
- Linux:shell脚本之彩色进度条
- linux--shell脚本实现一个彩色进度条
- “玲珑杯”ACM比赛 Round #18 A -- 计算几何你瞎暴力
- Qt 下载文件
- 多态
- UDP的流量控制和数据报丢失问题试验分析
- LeetCode 3.Longest Substring Without Repeating Characters c语言版
- 在linux下用c和shell编写彩色进度条
- *hdu
- 基于图像内插值和外插值的亮度/对比度调整及模糊/锐化方法
- UVA1594DucciSequence
- kafka与Spring的集成
- 概率论与数理统计---分布函数
- Shell脚本学习-位置参数和特殊变量
- 版本控制工具GIT
- Android Studio 进行单元测试完整教程