Linux:进度条(小程序)以及git三板斧

简介: Linux:进度条(小程序)以及git三板斧

Linux小程序:进度条

在实现小程序前我们要弄清楚:

       1.缓冲区;

       2.回车与换行。

缓冲区:

分别用gcc来编译下面两个程序:

程序一:

#include <stdio.h>

int main()

{

       printf("hello Makefile!\n");

       sleep(3);

       return 0;

}

程序二:

#include <stdio.h>

int main()

{

       printf("hello Makefile!\n");

       sleep(3);

       return 0;

}

       可以看到打印程序二没有 \n ’后,没有在该打印的时候打印,反而在结束后才出现,

这说明peintf的运行结果hello Makefile被提起保存在了某个地方,当程序结束时,hello Makefile才打印出来,这个地方就是缓冲区!

回车与换行:

通过老式键盘就会发现其实Enter是包含换行和回车的意思:

       回车:就是到一行的开头;

       换行(' \r '):切换到当前位置的下一行;

有了以上的知识储备我们就可以开始写Linux的第一个程序了!!

进度条:

由于没有了' \n '无法刷新缓冲区,所以还需要了解一个强制刷新的函数:

       头文件为:#include <unistd.h>

       函数:fflush()

此时我们先来写个倒计时:

进度条,启动!!

首先需要创建makefile文件实现多文件之间的自动化构建:

makefile:

1 my-test:game.o main.o                                                                                                                            
  2   gcc -o $@ $^
  3 main.o:main.c 
  4   gcc -c main.c
  5 game.o:game.c  
  6   gcc -c game.c
  7                
  8 .PHONY:clean
  9 clean:      
 10   rm -f my-test game.o main.o

game.h:

1 #include <stdio.h>
  2 #include <time.h>
  3 #include <stdlib.h>
  4 #include <unistd.h>
  5 
  6 #define Head '>'
  7 #define MAX 102
  8 #define CHAR '='
  9 
 10 //进度条实现                                                                                                                                     
 11 void Progress(double n);

game.c:

1 #include "game.h"
  2 //下载在进行图标
  3 const char*arr1="|/-\\";
  4 //进度条数组
  5 char arr2[MAX] = {};
  6 void Progress(double n)
  7 {
  8   //char arr1[4] = "|/-\";
  9   static int count = 0;
 10   int count1 = count % 4;
 11   count++;
 12   //下载进度未达到1%需要一个箭头表示
 13   if(n <= 1.0)
 14     arr2[0] = Head;
 15   //\033:表示颜色开始 [5;31;44m:表示闪烁;前景色为黄色;背景色为蓝色 \033[0m:表示清空颜色缓存
 16   //\r:表示回到开头
 17   printf("[\033[5;31;44m%-100s\033[0m][%.1f%%][%c]\r",arr2,n,arr1[count1]);
 18   //强制刷新缓冲区
 19   fflush(stdout);
 20   //按百分比显示进度                                                                                                                             
 21   arr2[(int)n] = CHAR;    
 22   if(n < 99)              
 23     arr2[(int)n+1] = Head;
 24                         
 25 }

main.c:

1 #include "game.h"
  2 
  3 void Down1()
  4 {
  5   //取随机数
  6   srand(time(NULL));
  7   //需要下载的大小
  8   int num = 1024 * 1024 *1024;
  9   int nnn = num;
 10   //下载未完成继续下载
 11   while(num)
 12   { 
 13     //休眠1000微秒
 14     usleep(1000);
 15     //本次下载的大小
 16     int download = rand() % (1024 * 1024);
 17     //还需要的下载量
 18     num = num - download;
 19     //下载完成
 20     if(num < 0)
 21       num = 0;
 22     int downnum = nnn - num;
 23     //下载占需要下载的百分比                                                                                                                     
 24     double n = ((downnum * 1.0) / nnn ) * 100.0;
 25     Progress(n);          
 26   }                       
 27   printf("\n");           
 28 }                         
 29                           
 30 int main()                
 31 {                         
 32   Down1();                
 33                           
 34   return 0;               
 35 }

特别注意:

       进度条是建立在一个加载这类的板子上的,不是用程序写出来后自己控制进度的!需要配合一些下载场景,根据下载量的大小和下载速度来实时对进度进行同步更新!!!

使用Gitee创建项目:

首先需要在Linux安装git:

格式:yum intall git

其次需要创建一个Gitee账号Gitee - 基于 Git 的代码托管和研发协作平台

然后创建一个仓库,如下:如果不需要裁剪文件就不需要勾选 .gitignore

在创建好的仓库页面中复制仓库的链接, 以备接下来进行同步数据:

下载仓库到本地:

将代码放到刚才下载好的目录中
格式:git clone [url]
这里的 url 就是刚刚建立好的 项目 的链接

三板斧第一项:git add

将代码放到刚才下载好的目录中
格式:git add [文件名]
将需要用 git 管理的文件告知 git

三板斧第二项:git commit

提交改动到本地
格式:git commit .

最后的 "." 表示当前目录
提交的时候应该注明提交日志, 描述改动的详细内容
.

三板斧第三项:git push

同步到远端服务器上
格式:git push
需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了。

过程:

需要注意:git add .只是将文件放入暂存区,还没有放入到本地仓库中!!!

特别注意:

1.如下图中的.gitignore中包含的文件格式会进行过滤,并且是修改就会生效的!!!

2.当我们在进行多人关联一个远程仓库时,一方进行远程提交后,另一方要想远程提交必须同步远程仓库!(必须保证所有的人都能看到!),git仓库如果本地和远端仓库不同步,git会强制你进行同步!

以上就是个人学习的见解和学习过程的解析,欢迎各位大佬在评论区探讨,交流!

如果本篇对你有帮助的话,三连支持一下吧。

感谢大佬们的三连! 感谢大佬们的三连! 感谢大佬们的三连!

                                             

目录
相关文章
|
2月前
|
Linux 开发工具 git
linux自建仓库git之钩子不生效
linux自建仓库git之钩子不生效
|
3月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
|
4月前
|
小程序
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
86 1
【亲测有效】支持横竖屏 微信小程序video禁止进度条拖动,微信小程序遮罩进度条,
|
5月前
|
JavaScript Ubuntu Linux
蓝易云 - linux中安装nodejs,卸载nodejs,更新nodejs,git
请根据自己的Linux发行版和版本选择合适的命令。
214 2
|
5月前
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
520 1
|
5月前
|
Linux 开发工具 git
解决 Linux git push 贡献者不同(没有出现绿点)的问题
解决 Linux git push 贡献者不同(没有出现绿点)的问题
|
8天前
|
监控 Linux
如何检查 Linux 内存使用量是否耗尽?这 5 个命令堪称绝了!
本文介绍了在Linux系统中检查内存使用情况的5个常用命令:`free`、`top`、`vmstat`、`pidstat` 和 `/proc/meminfo` 文件,帮助用户准确监控内存状态,确保系统稳定运行。
73 6
|
9天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
38 3
|
9天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
30 2