文章目录
1.软件包管理工具yum
1.1什么是软件包
要了解软件包管理工具的使用,那么就不得不先对软件包做一个全面的认识:
- 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序
- 但是这样太麻烦了, 于是就有大佬把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安 装程序)放在一个服务器上, 通过软件包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装
- 软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系
- yum(Yellow dog Updater, Modified)是Linux下非常常用的一种软件包管理器. 主要应用在Fedora,RedHat, Centos等发行版上
其实说白了,Linux中的软件包就相当于是Windows中的软件,又或者就是手机中的app一样。
1.2查看/查找软件包
- 查看软件包
使用yum list命令可以列出所有可安装的软件包,linux中软件包数量其实非常之多,这时,我们可以配合使用grep命令来查看我们关注的软件包即可,如:
yum list | grep lrzsz
- 查找软件包
yum search命令用于查找指定软件包,使用时后面直接跟上需要查找的软件包名称即可,如:
yum search lrzsz
说明: 上述举例中的rzsz这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去,非常实用,是一个比较推荐安装的工具。
1.3安装/卸载软件包
- 如何安装软件
在明确我们需要安装的目标软件包时,只需简简单单的一条命令即可完成安装
sudo yum install [软件包名称]
sudo是为当前用户临时提权,因为安装软件包需要root用户的权限,当然,如果使用root用户进行软件包安装,则无需sudo命令。
回车之后可能需要输入密码,之后还会需要手动确认是否安装等选项,只需一路‘y’(yes)即可,直到出现complete则说明安装完毕。
- 如何卸载软件
同上,只需简简单单的一条命令即可
sudo yum remove [软件包名称]
2.编辑器vim
接下来介绍Linux中最常用的编辑器-vim,相信喜欢Linux环境的同胞一定都离不开这款编辑器,在熟练使用之后必然都爱不释手!
2.1操作模式
vim是一种命令行编辑器,默认情况无法使用鼠标(但可以配置),所以完成多种操作就需要有多种操作模式。vim总共有多达12种操作模式,但是不要慌,一般来说,我们也没必要去了解所有的操作模式,而只需要能够掌握常用的三种操作模式即可。
- 普通模式
主要进行文本的常见操作 --复制、粘贴、剪切/删除、撤销、撤销的恢复、文本对齐、光标的快速移动等。具体操作将在下方2.3进行介绍。 - 插入模式
进行文本数据的插入 - 底行模式
主要进行文本的保存、退出,数据的匹配、查找、替换等操作。
常用指令:
w:保存、q:退出、wq:保存并退出、q!:强制退出(不保存)。
2.2模式切换
-
普通模式 → 插入模式 : i/a/o/I/A/O
i --在当前光标所在位置进入插入模式
a --光标后移一个字符,进入插入模式
o --在当前光标所在行的下方创建新行,进入插入模式
I --光标移动到当前行的行首位置,进入插入模式
A --光标移动到当前行的行尾位置,进入插入模式
O --在当前光标所在行的上方创建新行,进入插入模式 -
普通模式 → 底行模式 : “shift + ;”(英文分号)
-
其他模式 → 普通模式 : Esc
所有模式都是围绕普通模式来切换的,在任何模式下按Esc都可以一键返回普通模式
2.3普通模式下的常用操作指令
- 光标移动
h/j/k/l --分别向左、下、上、右移动光标
w/b --按单词向右、向左移动光标
ctrl+f/b --上/下翻页
gg/G --光标移动到文本首行/尾行 - 文本操作
yy/nyy --复制,默认复制一行,n表示复制多行
p/P --粘贴
dd/ndd 删除,默认删除一行,n表示删除多行
x/nx --删除字符
dw/ndw --删除单词 - 其他指令
u --撤销上一次操作
ctrl+r --撤销的反向操作,即撤销的恢复
gg=G --全文按照文档格式进行文本对齐
3.编译器gcc/g++
编译器的功能是将高级语言代码解释成为机器指令,使之能够被CPU识别并执行。
在Linux中,不同的语言有不同的编译器,C语言的编译器为gcc,而C++的编译器为g++,以下主要以gcc为例来介绍编译及编译器相关内容。
3.1编译过程
简单来说,编译过程分为预处理、编译、汇编和链接四个阶段。
- 预处理阶段进行代码的展开,包括引入头文件、宏替换、去注释等操作
- 编译阶段进行语法检查,如果没有错误则将代码解释为汇编代码
- 汇编阶段将汇编代码解释成为机器指令
- 链接则是将所有用到的机器指令打包到一起,生成可执行文件
如果读者有兴趣深入了解程序的编译过程,可以自行查阅相关资料,也可以浏览我之前写过的一篇博客,或许会有所收获,写的不好,还望大家批评指正。下面附上文章链接。
3.2gcc常用编译选项
- -E --只进行预处理
- -S --只进行编译(或者到编译完成之后就停下来)
- -c --只进行汇编(或者到汇编完成之后就停下来)
- -o --指定要生成的文件名称
- -g --生成调试信息,即debug版本
如果不使用上述前三个选项,则gcc默认会完成整个编译过程,包括链接,并生成对应的可执行程序,如:
4.调试器gdb
调试器gdb用于调试程序,而调试一个程序的运行过程,能够让我们从运行过程中发现程序哪里有问题,从而快速定位和解决问题。
4.1调试前提
- 程序的发布版本有俩种,分别为debug版本和release版本
- Linux中通过gcc/g++编译之后的程序,默认是release版本
- 如果需要使用gdb对程序进行调试,则需要在gcc/g++编译程序时加上 -g 选项,生成具有调试符号信息的debug版本。
4.2调试过程
- 调试器加载程序
gdb ./filename, 如:
gdb ./main //main为编译之后生成的debug版本的可执行程序
- 开始调试程序
run //直接运行
start//开始逐步调试
- 使用相关调试指令进行调试
见下方4.3
4.3常用调试指令
- 流程控制
next/n 下一步 遇到函数直接运行,不会跟踪进入函数,即逐过程的单步调试
step/s 下一步 遇到函数跟踪进入,即逐语句的单步调试
list/l filename:line 查看指定文件的指定行附近代码,默认查看当前调试行附近代码
until/u:line 直接运行到指定行,也可以指定文件,格式同上述list
continue/n 继续运行,直到断点处停下 - 断点操作
break filename:line 给指定文件的指定行打断点
break function 给指定函数打断点
info break 查看断点信息
watch/w a (a为变量) 给变量打断点,当变量数据发生改变的时候停下
delete/d 删除断点 - 内存操作
print/p a (a为变量)查看变量数据
print/p a = 10 设置变量数据
backtrace 查看程序的调用栈信息,程序一旦奔溃,查看调用栈可以迅速定位崩溃位置,便于发现和解决问题
5.项目自动化构建工具make/Makefile
- Makefile 文本文件,记录项目的构建流程及规则
- make Makefile的解释程序,对Makefile中的构建流程及规则进行解释,完成项目的构建
5.1Makefile的编写规则
目标对象:依赖对象
制表符/t 指令
5.2Makefile的执行规则
- 一旦敲击make指令,则运行make解释程序,在当前目录下寻找Makefile文件
- make的执行规则中,要生成目标对象,则必须确保依赖对象已经生成,否则会继续向下寻找依赖对象的生成规则
- 打开文件,找到第一个目标对象,与依赖对象进行关系判断,判断目标对象是否需要重新生成
- 如果需要重新生成,则向下执行指令,直到生成目标对象,生成第一个目标对象之后就会退出
5.3伪对象的声明和使用
伪对象就是无论如何都要重新生成的对象
声明方法:
.PHONY:目标对象名称
使用方法:
伪对象:
制表符/t 指令
5.4最简单的Makefile文本样例
6.项目版本管理工具git
git是目前最常用的版本管理工具,可以用于进行项目的版本控制和管理,主要可以解决以下三个问题:
- 代码被喵星人吃掉了
- 产品经理反复修改需求, 需要同时维护多个版本代码
- 多人协同开发
Github 是 “全球最大的同性社交网站”,通过 git 可以把代码上传到 Github 上给全球的用户分享。
在Linux中使用git上传代码至Github
首先使用git clone克隆远程仓库
git clone https://链接路径
然后使用git三板斧操作
- git add ./* 本地提交修改信息
- git commit -m “备注信息” 提交本地版本管理
- git push 将本次版本提交到远程仓库