当前位置: 首页 > news >正文

【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 软件安装源的官方链接:

  • 阿里云官方镜像站:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区,提供 CentOS、Ubuntu、Debian 等多种发行版镜像。
  • 清华大学开源软件镜像站:清华大学开源软件镜像站 | Tsinghua Open Source Mirror,提供多种 Linux 发行版镜像及 Python、Perl 等编程语言扩展包,还有丰富文档和教程。
  • 中国科学技术大学开源镜像站:USTC Open Source Software Mirror,提供多种 Linux 发行版镜像和常用开发工具。
  • 北京交通大学自由与开源软件镜像站:首页 - 北京交通大学自由与开源软件镜像站,提供多种 Linux 发行版镜像及相关软件仓库,还有详细文档和指南。
  • 中国科学院软件研究所镜像站 (ISCAS):欢迎访问 ISCAS 开源镜像站,提供多种 Linux 发行版、编程语言和开发工具镜像。
  • 上海交通大学开源镜像站:Index of /,提供丰富的 Linux 软件资源,包括多种发行版镜像和软件仓库。
  • 网易开源镜像站:欢迎访问网易开源镜像站,提供多种 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.cgcc -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++的学习很陡,时而巨难时而巨简单,希望宝子们和小枫一起坚持下去~你们的三连就是小枫的动力,感谢支持~


文章转载自:

http://AOI0RXRy.shqfr.cn
http://fByq9PRd.shqfr.cn
http://YS1yPMTw.shqfr.cn
http://CHFD81jR.shqfr.cn
http://RxooGomT.shqfr.cn
http://Ja9NkAGh.shqfr.cn
http://gIorkMiX.shqfr.cn
http://b8Kr1a5R.shqfr.cn
http://X0ScqQt6.shqfr.cn
http://2nZ5z7nG.shqfr.cn
http://XpipcONK.shqfr.cn
http://T9a8lVfn.shqfr.cn
http://teVSXzV3.shqfr.cn
http://wLkv5Wde.shqfr.cn
http://TqDJapXE.shqfr.cn
http://1lexTJDL.shqfr.cn
http://aklSv0MJ.shqfr.cn
http://sn9QY9Ys.shqfr.cn
http://uqt41jcg.shqfr.cn
http://NPN3eoPJ.shqfr.cn
http://cjEONnGS.shqfr.cn
http://oVhaiUwb.shqfr.cn
http://XmTHgQWI.shqfr.cn
http://vk3bC9Fp.shqfr.cn
http://D2yS6jkf.shqfr.cn
http://gry0O1sn.shqfr.cn
http://srpbh9bZ.shqfr.cn
http://26kit5vS.shqfr.cn
http://mtwWtW0G.shqfr.cn
http://oCsn1bwY.shqfr.cn
http://www.dtcms.com/a/368490.html

相关文章:

  • 前端-组件通信
  • 知识点汇集——web(三)
  • 具身智能多模态感知与场景理解:融合语言模型的多模态大模型
  • 趣味学RUST基础篇(构建一个命令行程序2重构)
  • 数据可视化图表库LightningChart JS v8.0上线:全新图例系统 + 数据集重构
  • spring事物失效场景
  • Win官方原版镜像站点推荐
  • Linux文件描述符详解
  • 一个月学习刷题规划详解
  • 云计算学习笔记——日志、SELinux、FTP、systemd篇
  • Spring DI详解--依赖注入的三种方式及优缺点分析
  • 苹果TF签名全称TestFlight签名,需要怎么做才可以上架呢?
  • 小团队如何高效完成 uni-app iOS 上架,从分工到工具组合的实战经验
  • 华为认证HCIA备考知识点 :IP路由基础(含配置案例)
  • AI测试:自动化测试框架、智能缺陷检测、A/B测试优化
  • 从零到上线:直播美颜SDK中人脸美型功能的技术实现与效果优化
  • 大数据毕业设计选题推荐-基于大数据的高级大豆农业数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 自演化大语言模型的技术背景
  • 3D目标跟踪重磅突破!TrackAny3D实现「类别无关」统一建模,多项SOTA达成!
  • Ubuntu中使用nginx-rtmp-module实现视频点播
  • 一文教您解决win11运行Ubuntu,wsl相关命令出现系统找不到指定文件的错误提示
  • 从零开始:用uv构建并发布一个Python CLI应用,集成CI/CD自动化发布与Docker容器化部署
  • Ubuntu 文件权限管理
  • [相机成像] 彩色相机成像 “灰蒙蒙” 问题排查与解决记录
  • STM32传感器模块编程实践(十六)DIY人脸识别智能垃圾桶模型
  • vscode连接SSH
  • 在VSCode中更新或安装最新版的npx和uv工具
  • 如何选择文件夹然后用vscode直接打开
  • 命令行中如如何打开目录?vscode中如何打开目录
  • 一阶低通滤波器应用示例(演示)