🏆个人主页:企鹅不叫的博客
? 🌈专栏
?? 博主码云gitee链接:代码仓库地址
?若有帮助可以【关注+点赞+收藏】,大家一起进步!
💙系列文章💙
【Linux】第一章环境搭建和配置
【Linux】第二章常见指令和权限理解
💎一、yum(软件管理器)
🏆1.介绍
Linux的几种安装方式
- 源码安装:源码安装会带来交叉编译的问题,源码在不同的环境下可能会有不同的效果,导致安装十分麻烦。这种安装方式用的比较少。
- rpm安装:rpm安装相对上面的方式比较友好,这些软件会被提前编译好,然后打包成一个软件包放在服务器上,然后通过指令就可以安装。它最大的缺陷就是不会解决依耐性的问题,一旦遇到依耐性问题,它会把问题反馈给用户,让用户自己解决。
- yum管理器:yum是Linux下非常常用的一种软件包管理器,它本身会考虑软件的依赖关系,会利用第三方库帮用户解决依耐性的问题,这样就比rpm更友好一些。
🏆2.使用方法
查看软件包
yum lish
yum list | grep lrzsz
安装软件包
sudo yum -y install lrzsz
卸载指令
sudo yum -y remove lrzsz
🏆3.rzsz工具
这个工具可以用于windows机器和远程的Linux机器通过Xshell远程传输文件,可以通过拖拽的方式上传文件,十分的方便。
rz
sz 文件
💎一、vim使用
🏆1.基本概念
命令模式:刚进入到vim中默认的模式,该模式可以控制屏幕的光标的移动,来对一些字符进行删除和复制等
底行模式:当输入[shift]+:的时候,会回到底行,:q(退出),:wq(保存退出),按下ESC回到命令模式,
插入模式:当按下 i / o / a 时就可以写代码了,推出按下Esc回到命令模式
🏆2.vim命令模式下的命令
进入插入模式的命令
- 按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件
- 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字
- 按「o」进入插入模式后,是插入新的一行,从行首开始输入文字
- 按ESC键切换为命令模式
移动光标
- vim可以直接用键盘上的光标来上下左右移动,但正规的vim是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格
- 按「G」:移动到文章的最后
- 按「 $ 」:移动到光标所在行的“行尾”
- 按「^」:移动到光标所在行的“行首”
- 按「w」:光标跳到下个单词的开头
- 按「e」:光标跳到下个单词的字尾
- 按「b」:光标回到上个单词的开头
- 按「#l」:光标移到该行的第#个位置,如:5l,56l
- 按[gg]:进入到文本开始
- 按[shift+g]:进入文本末端
- 按「ctrl」+「b」:屏幕往“后”移动一页
- 按「ctrl」+「f」:屏幕往“前”移动一页
- 按「ctrl」+「u」:屏幕往“后”移动半页
- 按「ctrl」+「d」:屏幕往“前”移动半页
删除文字
- 「x」:每按一次,删除光标所在位置的一个字符
- 「nx」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符
- 「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符
- 「nX」:例如,「20X」表示删除光标所在位置的“前面”20个字符
- 「dd」:删除光标所在行(相当于剪切)
- 「#dd」:从光标所在行开始删除#行
复制粘贴
- 「yw」:将光标所在之处到字尾的字符复制到缓冲区中。
- 「nyw」:复制#个字到缓冲区
- 「yy」:复制光标所在行到缓冲区。
- 「nyy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。
- 「p」:将缓冲区内的字符贴到光标所在位置,【6p」表示粘贴6次。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能(粘贴)
替换
- [ r ] :替换光标所在处的字符
- [shift] + r : 批量化替换
撤销
- [ u ] :撤销
- [ ctrl + r ] : 撤销上一次的撤销
跳转到指定行
- 「ctrl」+「g」列出光标所在行的行号。
- 「#G」:例如,「15G」,表示移动光标至文章的第15行行首
- [shift]+g : 光标快速定位到文本末尾
- [gg] : 将光标定位到文本的最开始
🏆3.vim底行模式命令
🏆4.vim配置
- 在目录 /etc/ 下面,有个名为vimrc的文件,这是系统中公共的vim配置文件,对所有用户都有效。
- 而在每个用户的主目录下,都可以自己建立私有的配置文件,命名为:“.vimrc”。例如,/root目录下,通常已经存在一个.vimrc文件,如果不存在,则创建这个文件。
- 切换用户成为自己执行 su ,进入自己的主工作目录,执行 cd ~
- 打开自己目录下的.vimrc文件,执行 vim .vimrc
我用的vim环境安装 传送门
安装指令
curl -sLf https:
卸载指令
bash ~/.VimForCpp/uninstall.sh
💎三、gcc/g++使用
🏆1.gcc/g++命令
程序编译的知识,程序从.c文件到.exe文件有预处理、编译、汇编和链接四个过程,具体讲解传送门
编译文件的指令
gcc test.c
g++ text.cpp
gcc mytest.c -o test
gcc mytest.c -o test -static
gcc命令:
- -E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面。从现在开始进行程序翻译,当预处理完成就停下来
- -S 编译到汇编语言不进行汇编和链接,从现在开始进行程序的翻译,当我们编译完成后就停下来
- -c 编译到目标代码,从现在开始进行程序的翻译,当汇编结束后,就停下来
- -o 文件输出到 文件
- -static 此选项对生成的文件采用静态链接
- -g 生成调试信息。GNU 调试器可利用该信息。
- -shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
- -O0
- -O1
- -O2
- -O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
- -w 不生成任何警告信息。
- -Wall 生成所有警告信息
🏆2.动态库和静态库
动态库:Linux(.so) windows(.dll)
静态库:Linux(.a) windows(.lib)
🏆3.动态连接和静态连接
- 动态链接:运行时链接文件加载库,节省系统开销
- 静态链接:编译链接时,将库中的代码拷贝进可执行文件中,直接使用,之后都不依赖这个库
动态连接
优点:大家共享一个库,可以节省资源
缺点:一旦库缺失,会导致几乎所有程序失效
静态连接:
优点:不依赖任何库,程序可以独立执行
缺点:浪费资源
💎四、调试器gdb使用
Linux gcc/g++出来的二进制程序,默认是release模式
gcc mytest.c -o mytest_g -g
readelf -S test
开始调试
gdb mytest_g
l
b 15
info b
r
p sum
s
n
quit
d 1
until 15
display && undisplay
c
finish
💎五、项目自动化构建工具make/Makefile
🏆1.介绍
make是一条指令,Makefile是一个文件。
- 在一个项目中,Makefile定义了一系列的规则来指定文件编译的先后顺序,还有文件是否需要重新编译,甚至还会进行更复杂的功能操作
- make是一个命令工具,是一个解释makefile中指令的命令工具
- makefile最大的好处就是自动化编译。写好后只需要一条make指令就可以对整个功率进行完全自动编译,极大地提高了开发效率。
🏆2.依赖关系和依赖方法
依赖关系:依赖关系指明了两个文件之间的依赖性。例如:生成可执行程序需要依赖源码
依赖方法:依赖方法就是怎么做。例如:用gcc编译
🏆3.make/Makefile的使用
1.创建文件makefile和源文件test.c
2.在源文件中写下以下代码
#include<stdio.h>
int main ()
{
printf("hello1");
return 0;
}
3.再makefile文件中写下以下代码
test:test.c
gcc test.c -o mytest
.PHONY:clean
clean:
rm -rf test
- test是目标文件
- :是依赖关系
- test.c原本的文件名字
- 第二行按下[TAB]后写上两个文件的依赖方法
- .PHONY是makefile语法格式中的一个关键字,后面clean是一个伪目标,clean被.PHONY修饰时,表示总是被执行的(无论目标文件是否新旧,每次都会执行),伪目标后面是没有依赖文件的
4.使用,退出vim编写后使用make编译项目,make clean清除项目
make
make clean
多文件操作:
1.创建三个文件main.c hello.c hello.h
在Makefile文件中写下以下,hello是目标文件,由文件hello.o和main.o编译得来,main.o和hello.o分别由他们对应的.c文件编译过来,rm -f *.o是删除.o文件,hello是删除目标文件
hello:hello.o main.o
gcc -o hello hello.o main.o
main.o:main.c
gcc -o main.o main.c
hello.o:hello.c
gcc -o hello.o hello.c
.PHONY:clean
clean:
rm -f *.o hello
💎六、进度条小程序
- 回车: 回到行首
- 换行: 列不变,进行下一行
\r与\n - \r: 这是一个回车的转义符号,回到行首
- \n: 回车+换行,回到行首,然后列不变进行下一行的行首
#include<stdio.h>
#include<string.h>
#include<unistd.h>
#define NUM 101
void process()
{
int cnt = 0;
char bat[NUM];
const char* lable = "|/-\\";
memset(bat, '\0',sizeof(bat));
while(cnt<=100)
{
printf("[%-100s][%2d%%][%c]\r", bat, cnt, lable[cnt%4]);
fflush(stdout);
bat[cnt++] = '#';
usleep(50000);
}
printf("\n");
}
int main ()
{
process();
return 0;
}
💎七、git
🏆1.基本创建和使用
使用,在gitee创建一个仓库(默认私有),创建完后改成了公有
用以下操作实现仓库克隆到本地,并且上传文件
git clone 仓库地址
git status
git log
git add test.c
git add .
git commit -m "测试程序"
git push
🏆2.问题解决
当本地仓库和gitee仓库代码不一样时,我们需要进行以下操作
git pull
:q!
下面这个文件是用来存储类似黑名单的东西的,如果相关后缀文件在这个文件当中就不能提交到gitee
.gitignore
|