目录
一. yum
yum list
yum install
yum remove
二. vim
命令模式
底行模式
多文件操作
批量注释
三. gcc/g++
四. make/Makefile
五.gdb
六. git
git clone
git commit
git push
一. yum
作为一款操作系统,免不了需要一些定制化的内容,这就需要我们在Linux系统中自行安装软件,而想要在Linux系统中安装软件,常见的方法有三种:源代码安装、rpm安装、yum安装
而相较而言,yum通过分析PRM的标头数据后,根据各软件的相关性制作出属性依赖时的解决方案,然后可以自动处理软件的依赖属性问题,以解决软件安装或删除与升级的问题
而yum使用起来非常的简单,简单来说,就是yum list、yum installl、yum remove这三条指令
yum list
通过yum list命令可以罗列出当前一共有哪些可安装的软件包,由于可以安装的安装包有很多,我们可以通过grep命令来进行筛选
yum list | grep python
从前往后依次为软件名称及其后缀(例如x86_64是指64位系统的安装包,i686表示32位,而noarch表示该软件可以在不同的cpu下安装)、版本号及操作系统发行版的版本(el7)、软件源的名称(epel)
yum install
首先,安装软件时,需要向系统目录中写入内容,因此,我们需要在root用户下进行安装或者使用sudo命令。同时,当在安装一个软件时,不能同时安装其他软件,否则就会发生报错。
在安装的过程中,我们可以看到安装包的大小等,同时需要我们进行确认(y/d/N),而在显示Complete就表示安装完成了
yum remove
删除软件,同样需要我们在root用户下或者使用sudo
也同样需要确认以及以Complete作为结束标志
二. vim
与我们之前学习C/C++时所使用的Vistual studio这种集成开发环境不同,vim仅仅是一款代码编辑器。
vim是多模式编辑器,总共包含12种模式,我们目前先讲解三种基础的模式——命令模式、插入模式和底行模式
首先,我们可以先将现有的文件使用vim打开
同时,若是该文件不存在,vim会先创建一个文件,之后将其打开
而我们在进入之后,所处的模式便是命令模式
我们可以在命令模式输入 i 进入插入模式(从光标处开始,也可以输入a或o来进入插入模式,a表示从光标的下一个位置输入,o表示新插入一行后开始输入)。或是输入 :(即shift+ : 键)进入底行模式。同时,在这两种模式中,我们可以通过Esc键来退回命令模式
这三种模式中,只有插入模式我们才能够进行输入,而插入模式也只能进行输入
命令模式
而在命令模式下,我们就可以进行很多操作
首先,想要控制光标的移动,我们当然可以使用键盘右侧的上下左右来控制,同时,我们也可以使用hjkl来控制(h左、j下、k上、l右)。
除开上下左右的移动方式,我们也可以进行跳转,例如
gg 移动到开头、G(shift+g)移动到最后、$ 移动到行尾、^ 移动到行首、w 跳转至下个词的开头、e 跳转到下个词的词尾、b 跳转到上个词的开头、ctrl+b 屏幕后移一页、ctrl+f 屏幕前移一页、ctrl+u 后移半页、ctrl+d 前移半页
我们也可以在命令模式下对文本进行操作
x 删除单个字符、#x 删除#个字符(加shift则向前删除(不包含光标处字符))、dd 删除该行、#dd 删除#行
yw 复制从此开始的字、#yw 复制#个字、yy 复制行、#yy 复制#行、p 粘贴、#p 粘贴#行
r 替代字符、R 向后一直进行r操作,Esc退出
u 撤回、ctrl+r 反撤回
底行模式
在我们进入底行模式后,所输入的内容会显示在右下角的 : 处
set nu 列出行号
#+数字 跳转到某一行
wq w表示保存,q表示退出,可以单独使用,在无法退出或保存的情况下我们可以在后面加上!
:!+命令 在不退出vim的情况下执行命令
在底行模式下所进行的操作仅在本次vim中生效
多文件操作
在底行模式下,我们可以输入vs+文件名来进行多文件操作,同时,就像vim一样,若是不存在该文件,也会先进行文件的创建
而在多文件操作下,我们的光标处于哪个位置,便对哪个文件进行操作,我们可以通过ctrl+ww来进行文件的切换
批量注释
若是想要进行批量注释,我们需要先进入视图模式(ctrl+v)(仅做批量注释处理,不多做讲解)
,之后通过 hjkl 来批量选择需要注释的区域、
之后输入shift+i进入插入模式,之后输入 // 后 Esc进行批量注释
我们也可以使用同样的操作,在选择注释区域后按 d 来取消注释
三. gcc/g++
gcc : c语言编译器 g++ : c++编译器
gcc [选项] 要编译的文件 [选项] [目标文件]
或是 gcc [选项] [目标文件] [选项] 要编译的文件
目标文件可以省略,默认生成名为a.out的可执行文件
而编译分为预处理、编译、汇编、连接
而gcc/g++也是遵循这四个步骤,我们可以通过选项来将编译细化成这四个步骤
gcc -E : 预处理
在预处理后的文件尾部,我们可以看到进行了 去注释、宏替换、条件编译,同时,在上面的800多行中,包含了头文件的展开
gcc -S 编译
gcc -c 汇编
由于是转变成二进制文件,就不做展示了
gcc 连接
在连接结束后文件就是可执行文件了
而在命令尾部添加-static选项会进行静态连接,而不加选项则默认为动态连接
而我们可以看到,使用静态连接的文件大小明显大于静态连接
同时,gcc/g++生成的文件默认为release模式,想要debug模式则需要加上 -g 选项
四. make/Makefile
make是一个命令,Makefile是一个文件
当执行make时,make会在当前的目录下查找Makefile/makefile这个文本文件,而该文件里记录了源代码如何编译的详细信息。make会自动地判别源代码是否经过变动了,而自动更新执行文件。
而在Makefile文件内部,包括依赖关系和依赖方法
举个例子
在该文件中,第一行为依赖关系,表示proc依赖于proc.c,porc被称为目标文件。同时,就像第五行一样,可以一个文件不依赖任何文件
第二行为依赖方法,在执行make命令时,会在Makefile文件中自顶向下寻找第一个目标文件, 若是所依赖的文件存在但目标文件不存在或是依赖的文件的修改时间比目标文件晚,则执行依赖方法。而我们可以通过stat命令来查看两个文件的Access(访问)、Modify(内容修改)、Change(属性修改)时间,来判断是否需要更新
否则则会发出这样的提示
若是我们不想系统进行提示,而是无论是否需要新建或更新目标文件,我们总是去执行依赖方法,我们就需要使用到譬如第四行中的.PHONY关键字
.PHONY这个关键字,被其修饰的目标文件称为伪目标,而伪目标总是会被执行
若是我们不想执行第一个依赖方法,我们可以在make后面加上想要新增或更新的目标文件的名字
到此,我们就可以来简单的实验一下
而若是该目标文件所依赖的文件不存在(这里为proc.c),需要在当前Makefile文件中寻找proc.c作为目标文件的依赖关系来新建一个proc.c文件,以此类推。
例如
在这种情况下,我们习惯于将test.c和proc.c编译为test.o以及proc.o(test.h作为头文件在编译过程中展开),之后将它们与动态库进行合并链接
因此,我们可以将Makefile写作这样
五.gdb
Linux调试器,需要注意在gcc编译时需要debug版本
在介绍各条命令时我们以vs作比对
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info或i break :查看断点信息。
delete或d breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
r或run:运行程序。(F5)
continue(或c):从当前位置开始连续而非单步执行程序(F5)
n 或 next:单条执行。(F10)
s或step:进入函数调用(F11)
finish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
info(i) locals:查看当前栈帧局部变量的值
quit:退出gdb
六. git
git clone
在gitee或者github中,我们可以新建仓库并获取它的链接,我们就可以使用git clone命令将该仓库克隆到本地
在输入你的git用户名以及密码并克隆成功后,便可以在该目录下找到一个以你仓库名为名的目录
要注意,若是第一次操作,需要配置一下邮箱和用户名
git config --global user.email ""
git config --global user.name ""
git commit
当我们在该目录下新建文件之后,我们就可以先通过git add . 来将其添加到暂存去之后通过git commit 命令提交
git commit . -m " " -m表示同时提交日志,而在双引号内我们便需要填入我们的日志
git push
在提交之后,我们便可以使用git push 命令将其同步到远端服务器上
在输入账号密码之后,便可以在gitee或github查看更新
在该目录下,我们还可以看到这样一个隐藏文件:.gitignore
我们可以将不想提交到仓库的某些后缀的文件添加到该文件中