<Linux>进度条小程序和git使用详解

一、Linux第一个小程序 - 进度条

1.\r && \n

对于 ‘\n’ 想必大家已经很熟悉了因为在C语言的 printf 函数中我们会频繁的用到它但是实际上我们C语言学习的 ‘\n’ 是 ‘\r’ + ‘n’

  • \r回车即将光标移动到当前行的行首

  • \n换行即将光标移动到下一行

可以看到我们C语言中的 ‘\n’ 的作用是 回车 + 换行而不仅仅是换行这也是为什么许多台式机的 enter 键是下面这样的

image-20230114004514233

2.行缓冲

image-20230114010617870

打印效果是先睡眠在打印我们知道代码执行一定是顺序结构先执行printf,但是执行完printf后数据没被显示出来在sleep期间printf已经执行打印了但是数据在缓冲区中这就是为什么会先睡眠后才把数据显示出来。要把数据立即显示出来我们直接刷新缓冲区fflush(stdout)。

对此我们可以写一个简易的倒计时的程序

image-20230114011411238

在输出下一个数之前都让光标先回到本行行首就能够得到倒计时的效果。

动画

3.进度条

经过上面的铺垫接下来我们直接来写一个进度条小程序

image-20230114141357295

image-20230114141502303

因为进度条太过单调我们可以加上一些修饰比如改变进度条颜色、改变背景颜色、闪烁特效等等

image-20230114141514231

动画2

二、git使用详解

1.git概述

Git是一个一个开源的分布式版本控制系统可以快速高速地处理从大型到小型的各种项目。它是Linus Torvalds为了帮助管理Linux内核代码而开发的一个版本控制系统软件。

1.1.历史背景

Git最初是由Linux开发者Linus用了仅仅两周时间纯C语言编写而成在编写完成之后就立马上手接管Linux源代码不过在此之前Linux是由BitMover公司开发的BitKeeper分布式版本控制系统所管理源代码它是商业收费的分布式版本控制器但BitMover公司看中Linux开源精神免费授权给Linux社区使用在2002年时Linux开始使用BitKeeper分布式版本控制系统管理源代码但好景不长有一天Linux社区成员Andrewsamba局域网共享文件c/s程序的作者试图破解BitKeeper共享给所有人使用被BitMover公司发现并收回了免费使用的版权随后Linus就用了两周时间开发出了git(两周时间包括测试)也就是目前为止最好用的分布式版本控制系统。大名鼎鼎的github用的就是git系统来管理它们的网站这里需要区分一下github和git是两个东西github是一个社区git是一个服务系统github只支持git分布式系统所以故名成为github。

1.2.版本控制

版本控制就是一种记录文件内容的变化方便后面查询阅读之前文件修改情况。
可以记录文件修改历史记录方便让用户可以看到历史版本进行切换。
image-20230114151516442

从个人开发到团队开发如果不借助版本控制那么李四的开发会覆盖掉张三的开发。

image-20230114152200687

1.3.集中式与分布式的区别

除了git还有svn、cvs这样的版本控制系统它们的区别在于一个是分布式一个是集中式。集中式就是svn和csv这样的版本控制系统分布式是git。区别在于集中式的版本控制系统每次在写代码时都需要从服务器中拉取一份下来并且如果服务器丢失了那么所有的就都丢失了你本机客户端仅保存当前的版本信息换句话说集中式就是把代码放在一个服务器上集中管理你的所有回滚等操作都需要服务器的支持。分布式的区别在于每个人的电脑都是服务器当你从主仓库拉取一份代码下来后你的电脑就是服务器无需担心主仓库被删或者找不到的情况你可以自由在本地回滚提交当你想把自己的代码提交到主仓库时只需要合并推送到主仓库就可以了同时你可以把自己的代码新建一份仓库分享给其它人。像集中式它们都有一个主版本号所有的版本迭代都以这个版本号为主而分布式因为每个客户端都是服务器git没有固定的版本号但是有一个由哈希算法算出的id用来回滚用的同时也有一个master仓库这个仓库是一切分支仓库的主仓库我们可以推送提交到master并合并到主仓库上主仓库的版本号会迭代一次我们客户端上的git版本号无论迭代多少次都跟master无关只有合并时master才会迭代一次。

集中式版本控制例如CVS、VSS都有一个单一的集中管理的服务器保存所有文件的修改版本可以通过客户端与服务器连接来获取最新的代码。

  • 优点每个人都能看到项目的其他人正在做什么。

  • 缺点如果中央服务器宕机。那么所有的人都无法提交更新也无法协同工作。

    image-20230114152942689

当A修改完后提交到服务器服务器就有A1版本B可以获取A1版本进行修改之后提交到服务器此时服务器就会多一个B1版本。


分布式版本控制Git工具客户端提取的不是最新版的文件快照而是把代码的仓库完整的镜像到本地库 。这样所有的操作都可以在本地库完整就算是一起协同工作的文件发生故障我都可以通过客户端的本地库进行恢复。(每个客户端的每一次文件提取实际上都是对整个仓库的完整备份)

  • 优点服务器宕机的情况下也可以进行并发操作。因为版本控制是在本地进行相当于每个客户端同样也是服务器
  • 缺点每个客户端保存的都是整个完整的项目包含历史记录

image-20230114153842278

2.Gitee仓库创建

2.1.新建仓库

image-20230114160956306

2.2.复制仓库链接

image-20230114171517299

2.3.克隆仓库

git clone 复制的网址

image-20230114210232832

2.4.扩展

  1. 仓库里的.gitignore是什么
    .gitignore文件中出现的后缀都不会被上传至Gitee。

  2. 仓库里的.git是什么
    这个.git就是我们所说的仓库本质就是一个目录里面存放着本地仓库的内容。push到远端仓库本质上就是将.git仓库里的内容同步到Gitee上去。Gitee上也有.git类似的目录看不到罢了

3.git常见命令

命令名称作用
git config --global user.name 用户名设置用户签名为了区分是谁提交的代码
git config --global user.email 邮箱设置用户邮箱可以是虚拟的邮箱
sudo yum -y install git安装git工具
git status查看本地库状态
git clone克隆仓库网址
git add 文件名将改动文件添加到暂存区
git commit - m “我做了什么修改”将暂存区文件提交到本地库git仓库
git push将本地库中的变化文件上传至远程仓库
git log查看历史提交日志
git rm删除文件
git mv修改文件
git pull从远端仓库拉取最新版本文件
git reset --hard 版本号版本穿梭
git reflog查看提交历史记录
git init初始化本地库

3.1. 将改动文件添加到暂存区

git add .

image-20230114214446787

3.2.配置git环境

image-20230114214741164

参数讲解

config参数是用来配置git环境的

–global长命令表示配置整个git环境

初次使用git需要设置你的用户名以及邮箱这将作为当前机器git的标识如果你用它来下载远程仓库一些需要登录权限的仓库会要求登录git默认使用配置邮箱以及用户名登入但会要求你手动输入密码。

用户名配置

user代表用户.name代表配置用户的名称

git config --global user.name "你的用户名"

邮箱配置

user代表用户.email代表配置用户的邮箱

git config --global user.email "你的邮箱"

不配置也行当遇到要求登录权限的远程仓库会让你在手动输入用户名、邮箱、以及密码。

3.3. 将暂存区文件提交到本地库

git commit -m "提交日志"

image-20230114220023467

3.4.将本地库中的变化文件上传至远程仓库

git push 

image-20230114220204228

此时我们已经把Proncess这个文件上传到远程仓库我们回去检查是否上传成功。

image-20230114220516093

3.5.查看提交日志

git log

image-20230114221314347

3.6.安装git工具

sudo yum -y install git

image-20230114221502496

3.7.查看暂存区、仓库文件变更状态

git status

image-20230114223901708

这里我们修改的.gitignore并没有被修改这是因为我们是在Processon这个文件中提交的并没有影响上级文件.gitignore所以我们只需要更改路径在fordebug路径下提交。

image-20230114231118900

image-20230114231338677

3.8.对仓库文件改名\删除

git mv test.txt test.c
git rm -f test.c

image-20230114231608086

对克隆仓库内文件改名使用git mv,删除使用git rm因为mv和rm只是删除本地文件本地删了仓库不知道又需要重新add了。

3.9.从远端仓库拉取最新版本文件

image-20230114232256815

我们可以从远程仓库修改代码如上。

image-20230114232228880

这里会出现错误我们在远端修改代码这里我们又修改代码当远端仓库发生更改后本地提交时会出现冲突现象需要先把远端仓库最新版本的文件拉取一份到本地。

git pull

image-20230114232956469

3.10.查看提交历史记录

git reflog

image-20230114233127243

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux