Linux中六种常见工具

一、软件包管理器yum

1、yum概念

yum是一个软件下载安装管理的客户端,例如手机上的小米一应用商城。

那为什么我们推荐在Linux中用yum下载软件呢?

其实软件的安装有三种方式:源代码安装,rpm包安装,yum安装。

a、源代码安装

顾名思义就是把程序员写好的原生代码拿过来自己编译安装软件。但是这种方式是非常不方便的,因为源代码的编译环境因人而异,所以很有可能在你的环境下面程序无法编译。不仅如此,原生代码中也会用到大量的库,少装一个都会导致源代码无法编译。

b、rpm包安装

把原生代码在各种环境中编译号打包之后就是rpm包。

c、yum安装

yum在rpm包的基础上,帮使用者搞定软件包之间的依赖关系,例如源程序中要用到的库等。

2、yum操作

yum list | grep xxx       搜索软件

yum -y install xxx        下载软件

yum -y remove xxx      卸载软件

当然如果你是普通用户的话要指令提权。

在最后一列中base表示基本软件源,是稳定的。epel表示扩展软件源,不太稳定。

3、 补充知识

(1)yum是如何知道要去哪里安装我们需要的软件?

其实在我们机器内部内置了一些服务器地址链接,在yum要下载文件时,他会连接对应的服务器,下载对应软件。

(2)yum的配置

首先,yum会根据/etc/yum.repos.d/该路径下配置文件来构成自己的下载链接。一般机器内置链接是centos官网,软件链接指向国外,yum下载会变慢,所以要配置,本质就是修改文件或内容。

二、文本编辑器vim

1、vim基础知识

vim本质就是类似于记事本的多模式文本编辑器,用来编辑文本。

vim常见的模式有四种:插入模式,命令模式,底行模式,替换模式。

2、常见模式介绍

(1)命令模式

允许使用者通过命令进行文本编辑控制。

(2)插入模式

可以修改文本内容。

(3)底行模式

用来让vim进行包括但不限于与shell进行交互。

(4)替换模式

可以对文本内容进行替换。

刚打开vim时处在的模式是命令模式。

3、模式切换

4、各个模式中的常见操作

(1)命令模式

yy:复制光标所在行

nyy:从当前光标位置开始,连续复制n行

dd:剪切当前行

ndd:剪切当前光标位置以下n行

p:粘贴

np:粘贴n次

u:撤销操作

ctrl  r:对上一次的撤销操作进行撤销

shift 4($):光标移动到所在行结尾

shift 6(^):光标移动到所在行开头

gg:光标到文本开头

shift g:光标到文本结尾

n shift g:光标定位到文本第n行

h j k l:分别是左下上右移动光标,带上n就是重复n次

w:按单词进行光标后移

b:按单词进行光标前移

shift `(~):单词进行大小写切换

x:删除光标之后一个字符,可以带n

shift x:删除光标之前一个字符,可以带n

r:对光标指定位置进行替换,可以带n

shift r:进入替换模式进行替换

shift zz:保存并退出

ctrl z:暂停vim,会出现临时文件(因为强制退出vim,vim保存你当前文件会产生隐藏的临时文件)

(2)插入模式

a:进入后光标退一格

o:进入后新起一行

i:当前光标处插入

(3)底行模式

q:退出

wq:保存并退出

q!:不问直接退出,不保存

set nu:设置行号

set nonu:去掉行号

/:后面跟关键词,搜索关键词

!:后面跟shell命令,不退出vim进行shell命令

vs filename:创建多文件

ctrl ww:在多个文件中光标切换

5、补充知识

(1)如何批量化注释 / 去注释

a、注释

ctrl v 进入视图模式

h j k l 选择要注释的区域

shift i 进入插入模式

//

Esc两次

b、去注释

ctrl v 进入视图模式

h j k l 选择要注释的区域

d 删除

(2)如何在sudoers中添加自己

有时候我们要指令提权进行相关操作,但是直接 sudo 不会成功,因为在对应的 sudoers 配置文件里面没有我,所以我们可以用vim来修改配置文件。

在root账号下,vim/etc/sudoers

在文件100行复制,粘贴后把root改成自己

(3)vim的配置

vim不是简单的可执行程序,他也会读取若干配置文件,如:.vimrc,所以可以再.vimrc中写命令来进行vim的配置。

三、编译器gcc与g++

1、gcc与g++功能和常见用法

gcc与g++都是编译器,gcc用来编译c代码,g++用来编译c++代码。

gcc常见选项

-o:从文件输出到文件,后面可以带名字进行改文件名。

-E:把源文件进行预处理(处理完依然是源文件)

-S:到编译结束后就停止

-c:把文件编译成二进制文件

-static:把源文件进行静态链接(因为默认是动态链接)

宏定义也可以用命令进行 -D选项

2、程序翻译过程

翻译过程gcc命令说明
预处理gcc -E test.c -o test.i进行宏替换,去注释,头文件展开,条件编译..
编译gcc -S test.i -o test.s把c变成汇编语言,进行语法检查
汇编gcc -c test.s -o test.o把汇编语言编程二进制目标文件
链接gcc test.o -o my.exe链接形成可执行程序

3、链接

(1)链接基础知识

链接就是把程序和库结合的过程。

链接分为静态链接和动态链接

在Linux下,动态链接文件后缀 .so,静态链接后缀 .a

在windows下,动态链接文件后缀 .ddl,静态链接后缀 .lib

ldd filename.exe可以查看动态库

(2)静态链接与动态链接对比

静态链接:在编译的时候,将库中所有方法拷贝到可执行程序中。

动态链接:共享动态库,一旦动态库丢失,所有动态链接库的程序都无法执行。

静态链接优缺点:节省资源,但是库不能丢失。

动态链接优缺点:与库无关,但是要拷贝所有方法,浪费资源。

上图可看到动态链接程序大小大概是静态链接程序大小的一百分之一。

从Linux默认使用动态链接就可以看出推荐我们使用动态链接,但是静态链接也会有使用场景,比如要代码有很强的跨平台性时就需要静态链接。

四、项目自动化构建工具makefile

1、makefile基础知识

(1)一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的 规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作。

(2)makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编 译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命 令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一 种在工程方面的编译方法。

(3)make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

2、makefile代码实现与解释

上图是一个makefile文件例子。

第一行:mytest表示目标文件,test.c表示依赖文件列表(当然此时只有一个依赖文件)。第一行就是文件的依赖关系。

第二行:既然有了文件依赖关系,我们就需要知道依赖方法,就是把test.c文件编译成mytest可执行程序。依赖方法可以是多行。

第三行:.PHONY表示之后的方法总是被执行。因为为了保证效率,有些文件如果未更新,某些操作就不会进行,还会出现警告。在.PHONY之后的操作不会对比时间,也就不会出现重复操作出现警告的情况。

第四行:依然表示依赖关系。

第五行:依赖方法。

3、makefile优化

$:表示从文件中读取数据

@:目标文件

^:依赖文件列表

vim也支持定义变量。

上图中bin表示目标文件,src表示依赖文件列表。

在依赖方法前加@在执行make时就不会打印出执行过程。

4、补充知识

(1)makefile是对文件从上往下扫描,但是对于文件关系顺序杂乱的依赖方法,makefile实际上是用栈来存储,所以不怕关系杂乱的情况。

(2)仅有make指令只会生效第一个依赖文件。make + 依赖文件就能执行指定指令。

(3)回车与换行

回车:光标移动到行开始处。\r

换行:光标下移一行。

回车换行:光标移动到下一行的开始。\n

(4)缓冲区

程序结束,\n,缓冲区满了都会导致缓冲区的刷新,而对应到显示器文件的缓冲区刷新就是把缓冲区中的数据显示到显示屏上。

在c语言中 stdin 表示键盘文件,stdout stderr 是显示器文件,所以我们可以用 fflush(file* stream) 函数来实现缓冲区的强制刷新,如强制刷新显示器 fllush(stdout)

缓冲区的作用就是提高运行效率。

五、版本控制器git

1、对于git的理解

git是一个软件,而gitee和github是基于git搭建的一个网站。

2、常见的git命令

git status                  查看仓库状态

git add filename       添加文件到git仓库

git commit -m ‘....’    提交文件到git本地仓库并附上日志

git push                    把本地仓库的文件提交到远端(需要输入用户名密码)

git log                       查看历史提交信息(倒序)

3、提交文件流程

4、.gitingnore文件

在.gitignore文件中存放的是我们提交文件是需要忽略的文件的后缀名。以免过程中产生的临时文件也传上去。

六、gdb调试

1、debug与release模式

debug一般是程序员开发的模式,特点就是可以调试代码,而release模式是用户的模式,特点是运行快,大小较小。

那么为什么debug能调试呢,就是因为在debug模式下文件会添加调试信息,这也就导致文件大小较大。

上图中的mytest是release模式编译的,mytest-debug是debug模式下编译的。想用debug模式编译只要-g选项就行。

2、常见调试指令

gdb filename             进入调试

l num:(list)          num表示行号,表示查看代码。

r:(run)                 进行调试

b num:(break)    在num行打断点。

i b:(info)             查看断点信息。

d Num:(delete)  删除指定断点,注意这里的Num表示断点的编号(在i b里面看)

disable Num:          禁用断点

enable Num:          重启断点

n:(next)             逐过程调试

s:(step)             逐语句调试

p 变量名:(print) 查看变量值

display 变量名:      常显示变量名

undisplay 变量名:  取消常显示

c:(continue)      跳到下一个断点

finish:                    走完指定函数停下

until num:              跳转到指定行

info local:              查看所有临时变量

set var 变量=...:    修改变量值

bt:                         显示调用堆栈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/46913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pc端注册页面 密码校验规则

1.密码校验规则 格应包含大小写字母、数字和特殊符号,长度为8-20 var validateRetrievePassword (rule, value, callback) > {let reg /^(?.*[A-Za-z])(?.*\d)(?.*[~!#$%^&*()_<>?:"{},.\/\\;[\]])[A-Za-z\d~!#$%^&*()_<>?:"{},.\/\\;…

SPIQA:一个大规模的计算机科学论文多模态问题回答数据集

在科学论文中挖掘相关信息是一个至关重要的研究领域&#xff0c;因为它能够赋予学生和研究人员高效解决他们在读到科学论文时自然引发的问题的能力。然而&#xff0c;现有基于学术论文的问题回答数据集在规模上受到限制&#xff0c;并且主要分析的是科学文章论文的摘要、结论和…

写给大数据开发:为什么我们容易不信任数据

目录 1. 产品经理视角&#xff1a;数据优先级低故事与示例伪代码示例 2. 开发者视角&#xff1a;数据任务缺乏技术挑战故事与示例伪代码示例 3. 测试人员视角&#xff1a;数据的不可见性和逻辑复杂性故事与示例伪代码示例 4. 组织文化视角&#xff1a;缺乏数据意识故事与示例伪…

【Linux杂货铺】期末总结篇2:文件操作命令 | 目录操作命令

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 第四章4.1 ⛳️Linux与windows的文件系统差别4.2 ⛳️目录相关的常用术语4.3 ⛳️Linux文件类型…

嵌入式人工智能(3-树莓派4B点亮LED灯及LED灯闪烁)

1、LED与树莓派连接 LED是一种常用。廉价、高效的光源&#xff0c;其灯泡长腿为正极&#xff0c;短腿为负极。使用LED的注意如果将其直接连接到高于1.7V的电源上&#xff0c;会产生一个非常大的电流&#xff0c;导致LED甚至树莓派的损坏。通常情况下为LED配备一个串联电阻&…

Attention机制解析

Attention机制解析 1. 引言 Attention机制在自然语言处理&#xff08;NLP&#xff09;和计算机视觉&#xff08;CV&#xff09;等领域取得了广泛的应用。其核心思想是通过对输入数据的不同部分赋予不同的权重&#xff0c;使模型能够更加关注重要的信息。本文将详细介绍Attent…

最优控制公式推导(代数里卡提方程,李雅普诺夫方程,HJB方程)

本文探讨了线性时不变系统&#xff08;LTI系统&#xff09;的最优控制问题&#xff0c;特别是线性二次调节器&#xff08;LQR&#xff09;问题。通过Hamilton-Jacobi-Bellman (HJB) 方程的推导&#xff0c;求得了系统的最优控制律&#xff0c;并进一步推导了代数里卡提方程&…

Python新手必学:如何解决Python安装包下载缓慢/无法下载的问题

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 临时使用镜像源📝 永久修改镜像源Windows系统macOS/Linux系统📝 推荐镜像源⚓️ 相关链接 ⚓️📖 介绍 📖 你是否曾在使用Python进行项目开发时,遇到过安装包下载速度如蜗牛爬行般的窘境?尤其是在急…

焊死,这38条命令还不会?难怪你的Windows那么费劲

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 我们每天都在和各种设备打交道&#xff0c;而命令提示符&#xff08;CMD&#xff09;无疑是我们这些技术宅的得…

玩转HarmonyOS NEXT之IM应用首页布局

本文从目前流行的垂类市场中&#xff0c;选择即时通讯应用作为典型案例详细介绍HarmonyOS NEXT的各类布局在实际开发中的综合应用。即时通讯应用的核心功能为用户交互&#xff0c;主要包含对话聊天、通讯录&#xff0c;社交圈等交互功能。 应用首页 创建一个包含一列的栅格布…

Java进阶之路66问 | 谈谈对熔断,限流,降级的理解

熔断&#xff08;Circuit Breaker&#xff09; 熔断机制类似于电路中的保险丝&#xff0c;用于在服务或系统出现异常或超负荷时暂时关闭&#xff0c;防止问题进一步扩大&#xff0c;待问题解决后再逐步恢复。这可以有效保护系统免受过载的影响。 想象你在使用电器时&#xff0…

JAVA 异步编程(异步,线程,线程池)一

目录 1.概念 1.1 线程和进程的区别 1.2 线程的五种状态 1.3 单线程,多线程,线程池 1.4 异步与多线程的概念 2. 实现异步的方式 2.1 方式1 裸线程&#xff08;Thread&#xff09; 2.1 方式2 线程池&#xff08;Executor&#xff09; 2.1.1 源码分析 2.1.2 线程池创建…

南京邮电大学计算机考研考情分析!专业课均分127分!复试录取比例偏高近2:1!计算机类共录取543人!

南京邮电大学&#xff08;Nanjing University of Posts and Telecommunications&#xff09;&#xff0c;位于南京市&#xff0c;简称南邮&#xff08;NJUPT&#xff09;&#xff0c;是教育部、工业和信息化部、国家邮政局与江苏省共建高校&#xff0c;国家“双一流”建设高校&…

软考中级科目包含哪些?应该考哪个?

软考中级包含5个专业方向&#xff0c;分别是&#xff1a;计算机软件、计算机网络、计算机应用技术、信息系统、信息服务。这5个方向又对应15个软考中级科目。 信息系统包括&#xff1a;系统集成项目管理工程师、信息系统监理师、信息安全工程师、数据库系统工程师、信息系统管…

C# 中IEnumerable与IQuerable的区别

目的 详细理清IEnumerator、IEnumerable、IQuerable三个接口之间的联系与区别 继承关系&#xff1a;IEnumerator->IEnumerable->IQuerable IEnumerator&#xff1a;枚举器 包含了枚举器含有的方法&#xff0c;谁实现了IEnuemerator接口中的方法&#xff0c;就可以自定…

力扣Hot100之两数之和

解法一&#xff1a; 双层循环暴力求解&#xff0c;先在数组的一个位置定住然后在这个位置的后续位置进行判断&#xff0c;如果两个数加起来等于目标和那么就返回 class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:for i,num in enumerate(num…

Windows 系统利用 SSH 和 WSL2 子系统当服务器

由于最近组内需要将一台 Windows 系统的电脑 W A W_A WA​ 转成能通过 SSH 访问&#xff0c;并且能用 Linux 命令当服务器运行。忙活了一天&#xff0c;终于是把全部东西弄通了。 安装 SSH 首先就是 W A W_A WA​ 先要安装 OpenSSH 服务&#xff0c;直接按照下面的教程安装…

HCIE是什么等级的证书?

HCIE&#xff08;华为认证互联网专家&#xff0c;Huawei Certified Internetwork Expert&#xff09;是华为认证体系中的最高等级证书。它要求考生具备在复杂网络环境中规划、设计、部署、运维和优化网络的能力。HCIE认证是华为认证体系中最具挑战性和含金量的认证之一&#xf…

RocketMQ实现分布式事务

RocketMQ的分布式事务消息功能&#xff0c;在普通消息基础上&#xff0c;支持二阶段的提交。将二阶段提交和本地事务绑定&#xff0c;实现全局提交结果的一致性。 1、生产者将消息发送至RocketMQ服务端。 2、RocketMQ服务端将消息持久化成功之后&#xff0c;向生产者返回Ack确…

NDK R25b 交叉编译FFMpeg4,项目集成,附库下载地址

1.准备工作 文件下载&#xff1a; NDK R25b下载地址&#xff1a;Android NDK历史版本下载网址 - 君*邪 - 博客园 (cnblogs.com) FFmpeg4.4.4 下载地址&#xff1a;https://ffmpeg.org/releases/ffmpeg-4.4.4.tar.xz 环境配置&#xff1a; 本次编译环境是在PC虚拟机中使用U…