目录
• make是如何⼯作的,在默认的⽅式下,也就是我们只输⼊make命令。那么:
1. 登陆成功后, 进⼊个⼈主⻚, 点击左下⽅的 新建创库 按钮新建项⽬
可以看到不论是Linux下还是windows上都是一模一样的界面:
在第一次在Linux下进行git仓库上传的时候需要配置姓名和邮件:
进行配置好姓名和邮件后,这里创建一个test.c 文件进行上传:
1.git add ./*/[文件名] 这里就有点通配符的味道,一次性直接上传
那么为了确保文件是否真的被上传成功,就可以直接区暂存区内看看,是否有新文件没有被上传:
本节目标:
一、Linux 软件包管理器 yum
1.什么是软件包
在 Linux 下安装软件 , 一个通常的办法是下载到程序的源代码 , 并进行编译 , 得到可执行程序 .
但是这样太麻烦了 , 于是有些人把一些常用的软件提前编译好 , 做成软件包 ( 可以理解成 windows 上的安装程序) 放在一个服务器上 , 通过包管理器可以很方便的获取到这个编译好的软件包 , 直接进行安装 .
软件包和软件包管理器 , 就好比 "App" 和 " 应用商店 " 这样的关系 .
yum(Yellow dog Updater, Modified) 是 Linux 下非常常用的一种包管理器 . 主要应用在 Fedora, RedHat, Centos等发行版上 .
2.关于 rzsz
这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件 .
安装完毕之后可以通过 拖拽 的方式将文件上传过去
3.注意事项
关于 yum 的所有操作必须保证主机 ( 虚拟机 ) 网络畅通 !!!
可以通过 ping 指令验证
4.查看软件包
通过 yum list 命令可以罗列出当前一共有哪些软件包 . 由于包的数目可能非常之多 , 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:
结果如下 :
5.注意事项:
软件包名称 : 主版本号 . 次版本号 . 源程序发行号 - 软件包的发行号 . 主机平台 .cpu 架构 .
"x86_64" 后缀表示 64 位系统的安装包 , "i686" 后缀表示 32 位系统安装包 . 选择包时要和系统匹配 .
"el7" 表示操作系统发行版的版本 . "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
最后一列 , base 表示的是 "软件源 " 的名称 , 类似于 " 小米应用商店 ", " 华为应用商店 " 这样的概念 .
6.如何安装软件
通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装:
yum 会自动找到都有哪些软件包需要下载 , 这时候敲 "y" 确认安装 .
出现 "complete" 字样 , 说明安装完成 .
注意事项 :
1.安装软件时由于需要向系统目录中写入内容 , 一般需要 sudo 或者切到 root 账户下才能完成 .
2.yum 安装软件只能一个装完了再装另一个 . 正在 yum 安装一个软件的过程中 , 如果再尝试用 yum 安装另外一个软件, yum 会报错 .
3.如果 yum 报错 , 请自行百度 .
如何卸载软件
仍然是一条命令 :
说到这里,就可以取百度上康康有哪些好玩的指令:
https://blog.csdn.net/logic1001/article/details/136682885
二、Linux开发工具
Linux编辑器-vim使用
vi/vim 的区别简单点来说,它们都是多模式编辑器,不同的是 vim 是 vi 的升级版本,它不仅兼容 vi 的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window 、 mac os 、windows。我们课堂上,统一按照 vim 来进行讲解。
1. vim的基本概念
课堂上我们讲解 vim 的三种模式 ( 其实有好多模式,目前掌握这 3 种即可 ), 分别是命令模式( command mode )、插入模式(Insert mode )和底行模式( last line mode ),各模式的功能区分如下:
1.正常/普通/命令模式(Normal mode)
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入 Insert mode 下,或者到 last line mode
2.插入模式(Insert mode)
只有在 Insert mode 下,才可以做文字输入,按「 ESC 」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
3.末行模式(last line mode)
文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下, shift+: 即可进入该模式。要查看你的所有模式:打开vim ,底行模式直接输入
:help vim-modes
我这里一共有 12 种模式 :six BASIC modes 和 six ADDITIONAL modes.
2. vim的基本操作
进入 vim, 在系统提示符号输入 vim 及文件名称后,就进入 vim 全屏幕编辑画面 :
正常模式:
不过有一点要特别注意,就是你进入 vim 之后,是处于 [ 正常模式 ] ,你要切换到 [ 插入模式 ] 才能够输入文字。
[ 正常模式 ] 切换至 [ 插入模式 ]
输入a
输入i
输入o
插入模式:
[ 插入模式 ] 切换至 [ 正常模式 ]
目前处于 [ 插入模式 ] ,就只能一直输入文字,如果发现输错了字 , 想用光标键往回移动,将该字删除,可以先按一下「ESC 」键转到 [ 正常模式 ] 再删除文字。当然,也可以直接删除。
[ 正常模式 ] 切换至 [ 末行模式 ]
「 shift + ; 」 , 其实就是输入「 : 」
退出 vim 及保存文件 , 在 [ 正常模式 ] 下,按一下「 : 」冒号键进入「 Last line mode 」 , 例如 :
: w (保存当前文件)
: wq ( 输入「 wq 」 , 存盘并退出 vim)
: q! ( 输入 q!, 不存盘强制退出 vim)
末行模式
回车后成功的保存退出!
3. vim正常模式命令集
插入模式
从插入模式切换为命令模式
移动光标
移动文件cp到指定目录下:
现在可以打开vim编辑器来尝试每一个选项:
删除文字:
复制:
替换
「 r 」:替换光标所在处的字符。
「 R 」:替换光标所到之处的字符,直到按下「 ESC 」键为止。
撤销上一次操作
「 u 」:如果您误执行一个命令,可以马上按下「 u 」,回到上一个操作。按多次 “u” 可以执行多次回复。
「 ctrl + r 」 : 撤销的恢复
更改
「 cw 」:更改光标所在处的字到字尾处
「 c#w 」:例如,「 c3w 」表示更改 3 个字
跳至指定的行
「 ctrl 」 + 「 g 」列出光标所在行的行号。
「#G」:例如,「15G」,表示移动光标至文章的第15行行首。
4. vim末行模式命令集
在使用末行模式之前,请记住先按「 ESC 」键确定您已经处于正常模式,再按「:」冒号即可进入末行模式。
列出行号
「 set nu 」 : 输入「 set nu 」后,会在文件中的每一行前面列出行号。
跳到文件中的某一行
「 # 」 : 「 # 」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字 15 ,再回车,就会跳到文章的第15 行。
这个真很好用。
查找字符
实验结果就是:
保存文件
离开vim
5. vim操作总结
三种模式
我们一共有 12 种总模式,大家下来可以研究一下。
vim 操作
打开,关闭,查看,查询,插入,删除,替换,撤销,复制等等操作。
练习:当堂口头模式切换练习
6. 简单vim配置
配置文件的位置
常用配置选项,用来测试
使用插件
手把手配置:
CentOs:
https://blog.csdn.net/wooin/article/details/1858917
Ubuntu:配置vimpuls
1. 安装必要的依赖项
在安装 Vimplus 之前,确保你的系统中有一些基本的依赖库。打开终端并运行以下命令:
2. 克隆 Vimplus 项目
在终端中执行以下命令,将 Vimplus 项目克隆到本地:
3. 安装 Vimplus
进入 vimplus 目录,并运行安装脚本:
此脚本会自动为 Vim 安装插件、主题和相关的配置。安装过程可能较慢,尤其是在安装插件时,请耐心等待。
4. 配置 Python 环境
Vimplus 默认使用 Python3,如果你希望配置 Python 环境支持,还需要安装 pynvim
:
5. 检查安装结果
安装完成后,打开 Vim 并检查是否有 Vimplus 的主题和插件:
进入 Vim 后,可以使用 :PlugInstall
命令来手动安装或更新插件。
6. 可选:自定义配置
7. 更新 Vimplus
如果想更新 Vimplus,可以执行以下命令:
8. 卸载 Vimplus
如果需要卸载 Vimplus,可以使用以下命令:
完成这些步骤后,你的 Vim 应该会有一个丰富的插件集成和增强的编辑体验。
参考资料
vim从入门到牛逼: https://github.com/wsdjeg/vim-galore-zh_cn
vim实现多行注释:
三、⾃动化构建-make/Makefile
3-1 背景
makefile文件:
依赖关系
3-4 推导过程
myproc:myproc.o
gcc myproc.o -o myproc
myproc.o:myproc.s
gcc -c myproc.s -o myproc.o
myproc.s:myproc.i
gcc -S myproc.i -o myproc.s
myproc.i:myproc.c
gcc -E myproc.c -o myproc.i
.PHONY:clean
clean:
rm -f *.i *.s *.o myproc
编译
$ make
gcc -E myproc.c -o myproc.i
gcc -S myproc.i -o myproc.s
gcc -c myproc.s -o myproc.o
gcc myproc.o -o myproc
• make是如何⼯作的,在默认的⽅式下,也就是我们只输⼊make命令。那么:
3-5 适度扩展语法
BIN=proc.exe # 定义变量
CC=gcc
#SRC=$(shell ls *.c) # 采⽤shell命令⾏⽅式,获取当前所有.c⽂件名
SRC=$(wildcard *.c) # 或者使⽤ wildcard 函数,获取当前所有.c⽂件名
OBJ=$(SRC:.c=.o) # 将SRC的所有同名.c 替换 成为.o 形成⽬标⽂件列表
LFLAGS=-o # 链接选项
FLAGS=-c # 编译选项
RM=rm -f # 引⼊命令
$(BIN):$(OBJ)
@$(CC) $(LFLAGS) $@ $^ # $@:代表⽬标⽂件名。 $^: 代表依赖⽂件列表
@echo "linking ... $^ to $@"
%.o:%.c # %.c 展开当前⽬录下所有的.c。 %.o: 同时展开同
名.o
@$(CC) $(FLAGS) $< # %<: 对展开的依赖.c⽂件,⼀个⼀个的交给gcc。
@echo "compling ... $< to $@" # @:不回显命令
.PHONY:clean
clean:
$(RM) $(OBJ) $(BIN) # $(RM): 替换,⽤变量内容替换它
.PHONY:test
test:
@echo $(SRC)
@echo $(OBJ)
四、Linux第一个小程序-进度条
1.回车和换行 - \r&&\n
2.缓冲区问题:
2.1 测试代码:
第一代进度条:
第二代:模拟下载程序进度:
makefile:
1 SRC=$(wildcard *.c)
2 OBJ=$(SRC:.c=.o)
3 BIN=processbar
4
5 $(BIN):$(OBJ)
6 gcc -o $@ $^
7 %.o:%.c
8 gcc -c $< -std=c99
9
10 .PHONY:
11 clean:
12 rm -f $(OBJ) $(BIN)
13
main.c:
//main.c
1 #include "process.h"
2 #include <stdio.h>
3 #include <unistd.h>
4
5 double total = 1024.0;
6 double speed = 1.0;
7
8 void DownLoad()
9 {
10 double current=0;
11 while(current<=total)
12 {
13 FlushProcess(total,current);
14 //下载代码
15 usleep(3000);//充当下载数据
16 current+=speed;
17 }
18 printf("\ndownlocad %.2lfMB Done\n",current);
19 }
20
21
22
23 int main()
24 {
25 DownLoad();
26 return 0;
27 }
~
~
process.c:
#include "process.h"
2 #include <string.h>
3 #include <unistd.h>
4
5 #define NUM 101
6 #define STYLE '#'
7
8
9 FlushProcess(double total,double current)
10 {
11 char buffer[NUM];
12 memset(buffer,0,sizeof(buffer));
13 const char* lable="|/-\\";
14 int len=strlen(lable);
15
16 static int cnt=0;
17
18 //不需要自己循环填充#
19 int num = (int) (current*100/total);
20 for(int i=0;i<num ;i++)
21 {
22 buffer[i]=STYLE;
23 }
24
25 double rate=current/total;
26
27 cnt%=len;
28 printf("[%-100s][%.lf%%][%c]\r",buffer,rate*100,lable[cnt]);
29 cnt++;
30 fflush(stdout);
31
32 }
33
34
35
36 void process_v1()
37 {
38 char buffer[NUM];
39 memset(buffer,0,sizeof(buffer));
40 const char* lable="|/-\\";
41 int len=strlen(lable);
42
43 int cnt=0;
44 while(cnt<=100)
45 {
46 printf("[%-100s][%d%%][%c]\r",buffer,cnt,lable[cnt%len]);
47 fflush(stdout);
48 buffer[cnt]=STYLE;
49 cnt++;
50 usleep(50000);
51 }
52 printf("\n");
53 }
~
process.h:
#pragma once
2
3 #include <stdio.h>
4
5 void process_v1();
6
7
8 FlushProcess(double total,double current);
第二代模拟下载进度条:
五、版本控制器Git
5-1 版本控制器
5-2 git 简史
5-3 安装 git
CentOs:
Ubentu:
5-4 在 Gitee创建项⽬
注册账号
这个⽐较简单, 参考着官⽹提⽰即可. 需要进⾏邮箱校验.
创建项⽬
2.创建仓库
3.在Liunx上拉下本地仓库:
复制云端仓库的https地址:
git clone+云端仓库地址
可以看到不论是Linux下还是windows上都是一模一样的界面:
进行配置好姓名和邮件后,这里创建一个test.c 文件进行上传:
是将文件放入暂存区内:
这里的描述千万别乱写,以后时间长了,直接导出来所有文件,乱写的描述一眼就看到了;
将暂存区内的文件进行上传到云端gitee的仓库
也就是这三步能够完成所有文件或者文件夹的同步更新;
此时可以看到test.c文件被成功上传;
那么为了确保文件是否真的被上传成功,就可以直接区暂存区内看看,是否有新文件没有被上传:
假如存在有的文件没有被上传成功,那么就可以知道暂存区内还有文件;
配置免密码提交:
https://blog.csdn.net/camillezj/article/details/55103149
总结一下吧~总结不易,本章对我的收获和学习巨大,希望对你也有帮助!!!