目录
1、包安装器:yum
2、安装lrzsz & xftp
3、编辑器:vim!!!!!
1)常见的三种形式
2)7字真言(正常模式下的快捷操作)
3)安装vimforcpp !
4)else
4、编译器:gcc/g++ !!!!!
1)gcc编译C,g++编译C++。
2)编译的四个过程:预处理、编译、汇编、链接。
3)静态编译 & 动态编译
5、调试器:gdb!!!!!!!!!
1)程序发布的两种方式:debug模式和release模式
2)调试的基础方法
3)三种使用场景
6、自动化构建项目:make&makefile
1)make & makefile
2)makefile文件格式
3)make的工作方式
4)makefile文件当中的自定义变量和内置变量
7、版本管理工具:git
1)克隆仓库:git clone xxxx
2)提交到本地仓库:git add/git commit -m "log"
3)推送到远端仓库:git push
4)将远端仓库内容更新到自己的本地仓库:git pull
5)git status
yum的常规操作(查询软件信息/安装软件/移除软件):yum三板斧
查询软件信息:
yum list
注意:yum list结果内容很多,为方便查找增加管道进行过滤 yum list | grep xxx
安装软件:
yum install [-y] [xxx]
移除软件:
yum remove [-y] [xxx]
lrzsz & xftp 都是传输文件使用的工具
lrzsz:
安装:yum install -y lrzsz
使用:sz [文件名称] :将Linux文件下载到Windows环境里;
rz [文件名称] :上传到Linux操作系统。
注意:这个工具不能对文件夹使用。
xftp:这个工具和xshell是同源,不做过多介绍。
vim是我学习liunx的时候使用的最多最多的工具没有之一,频繁程度甚至超过指令ls、cd。
接下来咱们分四个部分介绍这个神级工具。
1)常见的三种形式
正常模式、插入模式以及底行模式。
三种模式的关系:
Linux操作系统通过指令vim [filename]进入编辑器vim的正常模式;
正常模式下输入字母' i '即可进入插入模式,插入模式由esc退出到正常模式;
正常模式下输入符号' : '即可进入底行模式,底行模式由esc推出到正常模式。
> > 借由底行模式,我们先来了解一下编辑器vim的保存与退出:
> > 当你处在vim编辑器的底行模式下,可以通过输入以下指令排列组合进行保存退出等操作:w(保存)、q(退出)、!(强制操作)。
> >排列组合的方式有:w(只保存不退出)、q(退出)、wq(保存退出)、q!(强制退出)、wq!(强制保存退出)。
图示:
2)7字真言(正常模式下的快捷操作)
移、删、复、替、撤、更、跳
移动(移):移动光标
>>上下左右键
h(光标左移)、j(光标下移)、k(光标上移)、l(光标右移)
gg:光标回到文本开始
G:光标回到文本末尾
^(shift+6):光标回到所在行的行首
$(shift+4):光标回到所在行的行尾
删除(删):删除内容
>> 删除字符:
x:删除光标所在字符
[num]x:删除光标起始的num个字符(包含光标所在字符)
X:删除光标所在位置的前一个字符
[num]X:向前删除num个字符
>>删除行内容:
dd:删除一行内容
[num]dd:删除num行内容
复制(复):复制内容
>> yy:复制当前光标所在行
[num]yy:赋值当前光标下书num行
p:粘贴到光标所在行的下一行
P:粘贴到光标所在行的上一行
替换(替):替换内容
>> r:替换光标所在字符(一次替换一个)
R:替换光标所到之处的字符(一次替换多个),使用esc退回到正常模式
撤销(撤):撤销操作
>> u:撤销上一次无操作的命令
ctrl+r:反撤销
更改(更):更改内容
>> cw:更改光标所在处的字到字尾处
[c#w]:’#‘代表的是几个字,表示能修改的字数
跳跃(跳): 光标跳跃
>> [#G]:'#'代表数字,例如15G,代表着跳转到15行的行首。
3)安装vimforcpp !
介绍之前咱们先来看一看vimforcpp的精美页面吧。
相比之下你看看xshell系统自带的是什么丑陋的东西(其实外观观感差别不大,我说的丑陋是功能方面的嘿嘿...)
安装方法来咯
在shell中执行指令(想在哪个用户下让vim配置生效,就在那个用户下执行指令,强烈不推荐在”root“下执行);
curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
卸载方法
在安装了vimforcpp的用户下执行指令
bash ~/.VimForCpp/uninstall.sh
4)else
多行注释和多行去注释:
注释:
1、ctrl+v;
2、选择要注释的行,使用hjkl继续选择;
3、shift+i:进入到插入模式;
4、输入注释符号(C/C++:”//“,#);
5、esc。
多行去注释:
1、ctrl+v;
2、选择要删除的注释符号(hjkl进行选择);
3、x:直接删除。
替换字符串(在底行模式下/命令模式下进行替换)
替换光标所在行首个目标字符串:
命令:s/[被替换字符串]/[新字符串]/
eg:printf("hello world!\n");
将hello换成你好:执行命令s/hello/nihao/
替换光标所在行所有字符串
命令:s/[被替换字符串]/[新字符串]/g
全文替换目标字符串
命令:%s/[被替换字符串]/[新字符串]/g
结论:g:替换当前行所有
%:替换当前所有行
编程怎么能少的了编译呢!!要不咱们写的那些狗shi东西计算机怎么能明白!!
1)gcc编译C,g++编译C++。
2)编译的四个过程:预处理、编译、汇编、链接。
预处理:宏替换,头文件就展开,驱逐是
命令:gcc/g++ -E test.c -o test.i
-E:告诉gcc/g++在编程程序的时候,只进行预处理,产生的文件后缀为.i
编译:1、语法语义的检测
2、源代码编译成为汇编指令
命令:gcc/g++ -S test.c/test.i -o test.s
汇编:将汇编指令转化成为二进制代码(机器可识别代码)
命令:gcc/g++ -c test.c/test.i/test.s -o test.o
链接:将若干个二进制代码(.o)或者库文件,链接起来生成可执行程序
3)静态编译 & 动态编译
静、动态编译的区别在于编译程序的时候,是否增建了-static,
如果没有就是动态编译、有就是静态。
1、Idd命令:
该命令可以查看可执行程序依赖的文件,使用方式Idd [filename]
2、静态编译:
-static
3、区别:动态编译产生的可执行程序小,耗时小;
静态编译产生的可执行程序大,耗时大。
看感叹号就知道这玩意比上面那俩重要的还要重要得多得多...
1)程序发布的两种方式:debug模式和release模式
1、linux下debug版本的程序在编译的时候需要增加-g命令行参数;
2、默认不加-g,则为release版本;
3、debug和release的区别在于debug多了调试信息;
4、gdb调试的时候一定是调试的debug版本。
2)调试的基础方法
1、调试的基础方法
gdb [binfile]:进入调试
l 查看源码,从main函数开始 l [func-name] 查看某个函数的源码 r 程序执行起来 n 逐过程,F10继续
s 逐语句,F11继续 b [行号] 打断点 i b 查看断点 c 继续执行 delete breakpoints 删除所有断点 delete breakpoints n 删除序号为n的断点
disable breakpoints 禁用断点 enable breakpoints 启用断点 info locals 查看当前栈帧局部变量的值 p [变量名] 查看变量的值 bt 展示调用堆栈 q 退出
3)三种使用场景
1、程序没有执行起来,调试可执行程序
2、调试正在运行的程序
3、调试崩溃的程序产生的coredump文件
3.1 coredump文件:核心存储文件,是程序在崩溃的一瞬间内存的映像
3.2 ulimit -a:查看core file size(决定产生的coredump文件最大能有多大)
3.3 调试命令:gdb 可执行程序 coredump文件
1)make & makefile
make:是一个命令,是自动化构建项目的工具
makefile:是一个文件
make会根据makefile的文件内容进行解析编译程序(构建项目)
2)makefile文件格式
目标对象:依赖对象 编译命令 例如: test:test.c gcc $^ -o $@
目标对象:要生成的可执行程序
依赖对象:生成可执行程序是可以依赖的源代码
编译命令:如何通过依赖对象生成目标对象
注意:编译命令之前的空白部分时由table键形成的
3)make的工作方式
1、只为生成第一个目标对象而服务:
如果生成了目标对象,则后续文件中的内容不解析;如果为了生成第一个目标对象,需要先生成依赖对象,贼在makefile中寻找生成依赖对象的方法;如果依赖对象不存在,报错返回。
2、若依赖对象的最后一次修改时间小于目标对象最后一次修改时间,择不生成
4)makefile文件当中的自定义变量和内置变量
内置变量:
$^:所有依赖对象
$@:所有目标对象
$<:代表第一个依赖对象
自定义变量:
可以自己给变量起名字,后续使用$符号进行解析
1)克隆仓库:git clone xxxx
2)提交到本地仓库:git add/git commit -m "log"
3)推送到远端仓库:git push
4)将远端仓库内容更新到自己的本地仓库:git pull
5)git status