【Linux游记】基础指令篇

 ​​​​​​

 

枫の个人主页

你不能改变过去,但你可以改变未来

算法/C++/数据结构/C/Linux

Hello,这里是小枫。C语言与数据结构和算法初阶两个板块都更新完毕,我们继续来学习C++,C++更新的同时我也会更新Linux。Linux操作系统是很经典的操作系统,因此学习起来注定枯燥无味,西游记大家都看过吧~,我希望能带着大家一起跨过九九八十一难,降伏各类难题,学会Linux,我会尽我所能,以通俗易懂、幽默风趣的方式带给大家形象生动的知识,也希望大家遇到困难不退缩,遇到难题不放弃,学习师徒四人的精神!!!故此得名【Linux游记

 话不多说,让我们一起进入今天的学习吧~~~  

一、软件包管理器

1.1 什么是软件包

在 Linux 下安装软件,通常的办法是下载源代码并编译得到可执行程序,但这种方式比较麻烦。于是有人将常用软件提前编译好,做成软件包(类似 Windows 上的安装程序)放在服务器上,通过包管理器可方便地获取并直接安装。

软件包和软件包管理器的关系,就好比 "App" 和 "应用商店"。其中,yum(Yellow dog Updater, Modified)是 Linux 下常用的包管理器,主要应用在 Fedora、RedHat、Centos 等发行版;Ubuntu 则主要使用 apt(Advanced Package Tool),它同样能自动解决依赖关系,实现软件包的下载和安装。

1.2 Linux 软件生态

Linux 下载软件时,用户通过包管理器(yum/apt)向软件包服务器发送查找、下载请求,服务器返回软件包,包管理器负责解决依赖关系并完成下载、安装、卸载等操作。

评估操作系统的好坏,生态是重要因素,包括社区论坛、官网文档、软件体系、维护更新速度、操作系统自身及针对性客户群体等。

软件包可能存在依赖问题,一个软件可能依赖多个库文件,如某软件可能依赖 libc.so、ssl.so 等。为提高下载速度,可使用国内镜像源,以下是一些国内 Linux 软件安装源的官方链接:

1.3 yum 具体操作

1.3.1 查看软件包

使用yum list命令可列出所有软件包,结合grep命令可筛选关注的包,例如:

# Centos
$ yum list | grep lrzsz 
Lrzsz.x86_64 0.12.20-36.el7 @base

# Ubuntu
$ apt search lrzsz
# 输出省略

注意事项:

  • 软件包名称格式为:主版本号。次版本号。源程序发行号 - 软件包的发行号。主机平台.cpu 架构。
  • "x86_64" 表示 64 位系统安装包,"i686" 表示 32 位系统安装包,需与系统匹配。
  • "el7" 表示 centos7/redhat7,"el6" 表示 centos6/redhat6。
  • 最后一列的 base 表示 "软件源" 名称。
1.3.2 安装软件

通过简单命令即可安装软件,例如安装 lrzsz:

# Centos
$ sudo yum install -y lrzsz

# Ubuntu
$ sudo apt install -y lrzsz

出现 "complete" 字样或无报错说明安装完成。

注意事项:

  • 安装软件需向系统目录写入内容,一般需要 sudo 或切换到 root 账户。
  • yum/apt 需逐个安装软件,同时安装多个会报错。
1.3.3 卸载软件

卸载软件命令如下:

# Centos
sudo yum remove [-y] lrzsz

# Ubuntu
sudo apt remove [-y] lrzsz
1.3.4 注意事项

yum/apt 的所有操作需保证主机网络畅通,可通过ping www.baidu.com验证。

1.4 安装源

Centos 安装源路径:

$ ll /etc/yum.repos.d/
# 显示CentOS-Base.repo(标准源)和epel.repo(扩展源)等

可安装扩展源:sudo yum install -y epel-release

Ubuntu 安装源路径:

$ cat /etc/apt/sources.list # 标准源
$ ll /etc/apt/sources.list.d/ # 扩展源

二、编辑器 Vim

2.1 vi 与 vim 的区别

vi 和 vim 都是多模式编辑器,vim 是 vi 的升级版本,兼容 vi 的所有指令,还具有语法加亮、可视化操作等新特性,可在终端、x window、mac os、windows 等环境运行。

2.2 vim 的基本概念

课堂主要讲解三种模式:命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode):

  • 命令模式:控制光标移动,可进行删除、复制等操作,能进入插入模式或底行模式。
  • 插入模式:可进行文字输入,按 ESC 键回到命令模式。
  • 底行模式:可进行文件保存、退出等操作,在命令模式下按 shift+:进入。

2.3 vim 的基本操作

进入 vim:$ vim test.c,默认处于命令模式,需切换到插入模式才能输入文字。

模式切换:

  • 命令模式→插入模式:输入 a、i 或 o。
  • 插入模式→命令模式:按 ESC 键。
  • 命令模式→底行模式:按 shift+;(即输入:)。

退出与保存:在底行模式下,w保存,wq存盘并退出,q!不存盘强制退出。

2.4 vim 正常模式命令集

  • 插入相关:i(从光标处输入)、a(从光标下一位输入)、o(插入新行并从行首输入)。
  • 光标移动:h(左)、j(下)、k(上)、l(右);G(到文尾)、$(到行尾)、^(到行首)等。
  • 删除操作:x(删除光标处字符)、#x(删除光标后 #个字符)、dd(删除当前行)等。
  • 复制粘贴:yw(复制到字尾)、yy(复制当前行)、p(粘贴)。
  • 替换操作:r(替换光标处字符)、R(持续替换至 ESC)。
  • 撤销操作:u(撤销)、ctrl + r(恢复撤销)。

2.5 vim 末行模式命令集

  • 列出行号:set nu
  • 跳至某行:输入行号后回车。
  • 查找字符:/关键字(向后找)、?关键字(向前找),按 n 继续查找。
  • 保存退出:w(保存)、q(退出)、wq(保存退出)。

2.6 vim 配置

  • 系统公共配置文件:/etc/vimrc
  • 用户私有配置文件:~/.vimrc,可设置语法高亮(syntax on)、显示行号(set nu)等。
  • 可安装 TagList、WinManager 等插件增强功能。

三、编译器 gcc/g++

3.1 编译过程

gcc/g++ 编译分为四个阶段:

  1. 预处理:宏替换、去注释、头文件展开等,使用-E选项,生成.i文件。
  2. 编译:生成汇编代码,使用-S选项,生成.s文件。
  3. 汇编:生成机器码,使用-c选项,生成.o文件。
  4. 链接:生成可执行文件,无特殊选项,生成可执行程序。

3.2 动态链接与静态链接

  • 静态链接:将库代码全部加入可执行文件,文件较大,运行时无需库,但更新麻烦。
  • 动态链接:程序运行时加载库,文件较小,节省资源,更为常用。

Linux 下动态库后缀为.so,静态库为.a;Windows 下动态库为.dll,静态库为.lib

3.3 常用选项

包括-E(预处理)、-S(编译)、-c(汇编)、-o(指定输出文件)、-g(生成调试信息)等。

四、自动化构建工具 make/Makefile

4.1 基本概念

make 是命令工具,Makefile 是定义编译规则的文件,两者配合实现项目自动化构建,提高开发效率。

4.2 基本使用

例如,对于myproc.c文件,Makefile 可写为:

myproc:myproc.c
    gcc -o myproc myproc.c
.PHONY:clean
clean:
    rm -f myproc

myproc依赖myproc.c,通过gcc命令生成;clean为伪目标,用于清理文件。

4.3 make 工作流程

  1. 在当前目录找 Makefile 或 makefile。
  2. 找到第一个目标文件作为最终目标。
  3. 若目标文件不存在或依赖文件更新时间更新,则执行命令生成目标。
  4. 递归查找依赖关系,直至生成最终目标。

五、Linux 第一个程序:进度条

5.1 相关知识

  • 回车(\r):光标回到行首;换行(\n):光标下移一行。
  • 行缓冲区:输出带\n会刷新缓冲区,否则需用fflush(stdout)手动刷新。

5.2 进度条代码

  • process.c:实现进度条逻辑,包括版本 1 和版本 2 的函数。
  • process.h:声明进度条函数。
  • main.c:调用进度条函数模拟下载过程。
  • Makefile:定义编译规则。

六、版本控制器 Git

6.1 基本概念

Git 是主流版本控制器,可管理文件历史版本,方便多人协作,支持各种格式文件,尤其适合管理源代码。

6.2 安装与使用

  • 安装:yum install git
  • 基本操作(三板斧):
    1. git add:将文件加入暂存区。
    2. git commit -m "日志":提交到本地仓库。
    3. git push:同步到远程仓库。
  • 可配置免密码提交,需设置用户信息(git config --global user.name等)。

七、调试器 gdb

7.1 基本使用

  • 程序需以 debug 模式编译(加-g选项)。
  • 常用命令:
    • gdb binFile:启动调试。
    • l:显示源代码。
    • b 行号:设置断点。
    • r:运行程序。
    • n/s:单步执行(n不进函数,s进函数)。
    • p 变量:打印变量值。
    • q:退出调试。

7.2 高级技巧

  • watch:监视变量变化,值改变时暂停程序。
  • set var:修改变量值。
  • 条件断点:b 行号 if 条件,满足条件时触发。

八、结语

今日C++到这里就结束啦,如果觉得文章还不错的话,可以三连支持一下。感兴趣的宝子们欢迎持续订阅小枫,小枫在这里谢谢宝子们啦~小枫の主页还有更多生动有趣的文章,欢迎宝子们去点评鸭~C++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去~你们的三连就是小枫的动力,感谢支持~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

枫の大一

谢谢大佬,我会三连你的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值