Linux篇——工具

news2025/3/3 5:34:31

在有了前面的基础知识后,我们现在基本能够使用Linux的相关基本操作了,但我们知道,没有工具我们是无法便捷地实现某些功能的,因此我们这篇内容来谈谈Linux中的工具。

一、软件包管理器yum

我们知道,我们要想获得一个软件,需要下载安装包并安装,其实Linux中各种工具就是一个个软件,需要我们下载安装才能使用。其中Linux的常见软件安装方式有1.yum/apt2.rpm安装包安装3.源码安装。我们先来看一下yum。一开始我们想获取软件都是通过源码安装,也就是先下载代码然后编译,但是太麻烦了,所以开发软件的人写了代码以后进行了编译,形成了软件包然后把他放在云服务器上供大家下载使用,那我们的服务器想下载得有下载工具啊,yum就是下载工具(类似于windows上的应用商店),下载后软件包就到我们的服务器上了。

那我们怎么用yum下载软件呢?语法:yum install 软件包名称(需要以root用户执行或提权),然后会弹出是否安装(y/n)输入y即可安装。也可以在install前或后加-y免去确认直接安装。如果卸载软件直接把install换成remove即可。

二、多模式编辑器vim

vim就相当于windows里的记事本,可以写东西,其有三种模式,命令,插入,底行。我们先创建一个.c文件并以root身份执行vim是如下画面(语法:vim 文件名)

此时刚进入的时候是命令模式,在此模式下我们输入的文字都会被看成命令,如果不是命令就会报错。同时我们也可以输入i切换到插入模式(可以正常写代码了)

想退回到命令模式按一下esc键即可,如果想切换到底行必须先从插入退回到命令然后shift+“:”,底行想切换到命令也只需按esc即可。此时再输入wq(底行模式)即可完成一次编写(退出vim)。

如果想显示行数,就切换到底行模式输入set nu即可。接下来我们来进入命令模式看看有哪些命令

三、vim中命令模式下的命令

1.光标所在行

复制(yy)粘贴(p)撤销命令(u)剪切(dd),也可以配合数字使用,比如5yy就是在光标所在行及下五行全部复制。

u:撤销命令 如果想取消撤销用ctrl+r,即对u的撤销。

2.光标快速定位

shift+g=G,光标定位到结尾

gg 定位到最开始

n+shift+g:定位到第n行

shift +4=$ 光标移动到行尾,shift+6=^光标移动到行头

x:光标所在位置逐字符删除,shift x:向前删除

shift ~:光标位置大小写切换

r+任意字符:把当前位置替换成目标字符。

在命令模式下按shift+r即可切换到替换模式,此时输入会覆盖之前位置的字符,esc即可退出。

查找字符的功能需要我们先切换到插入模式然后用/字符来查找位置。如果有多个就用n来切换不同的位置

vs:vim多窗口对比查看,光标之间的移动我们用ctrl+ww。用法为vs+文件名。

四、vim的第四种模式

假设我们现在写完了代码并想注释一下,但我们如果像windows一样一行行的去注释太浪费时间了,所以第四种模式就是用于批量化操作,在vim中按ctrl+v即可切换模式(visual block)。

对于注释,首先切换模式,然后用hjkl(上下左右)光标定位你要操作的行和列,然后shift+i,输入//然后按esc即可。

对于去注释,我们还是切换模式,定位光标,然后按d即可删除。

五、vim的配置

我们在一开始使用的vim中是没有任何其他附带功能的(比如vim文件自动显示行数等),需要我们进入底行模式手动写入命令才能实现,但实际上我们可以自己配置,使其刚使用就有一些新的功能,我们需要在用户的家目录中找到一个.vimrc的文件并vim它,进去以后我们就可以把想带入的功能的命令写进去了(最好是普通用户下配置),但当我们切换到其他用户时就会发现又没有了,所以配置vim只是为了我们自己方便即可。

六、普通用户的命令提权

我们在之前讲过,我如果想以普通用户的身份执行root的命令,那么我需要在白名单内才可以使用sudo,那如何把我的账号添加进去呢?首先需要我们切换到root,然后找到/etc/sudoers的文件夹并用vim打开,

找到第100行这个代码然后cv一份,把root的名字改成你的就可以了。

七、gcc

gcc怎么用呢?假设我们现在用vim编写了一段代码,退出后用gcc 文件名即可对这个文件进行编译了,完成后会在当前目录下生成一个a.out的可执行程序,我们用./a.out即可执行该程序了。

此外,我们还可以对生成的程序任意命名,操作为gcc -o 重命名 要编译的文件(或gcc 要编译的文件 -o 重命名)

八、动态库与静态库

我们知道,一个程序想执行,需要经过预处理、编译、汇编、链接。其中我们刚才的gcc -o选项就是直接使其完成所有的过程,当然不同的选项也可以使其进行到不同的阶段,其中在链接的过程中,我们通过c语言知道,是代码和那些函数库进行链接,比如我们想使用printf函数就需要引入stdio.h。那么在Linux中我们也有对应的函数库,其中有动态库和静态库。动态库在Linux中通常以.so结尾。在windows中以.dll结尾。静态库.a(linux),.lib(windows)。

那动态库静态库与链接有什么关系呢?

比如我有一个可执行程序想在某操作系统上运行,此时我需要一个编译器,但是我只有编译器的话,有一些函数如果我没有自己定义和声明是无法成功运行的,此时,我需要去动态库中寻找这些函数的定义与声明使我的程序能够成功运行。这个过程就是动态链接(编译器告诉程序要去动态库中寻找函数)。

那静态链接就是把库中的函数实现拷贝到可执行程序中并使用,动态链接记住的仅仅是函数的地址。

动态库比较节省资源,可执行的程序体积小,但同时也有缺点,一旦动态库缺失,所有程序都无法运行。静态库虽然体积较大,但其不依赖其他库,即使丢失也无所谓,程序都能运行。

那我们如何查看一个文件是静态链接还是动态链接呢?我们可以使用命令file 文件,如果出现dynamically linked就是动态链接,statically linked就是静态。同时我们也可以用指令让文件以静态链接的方式运行,即gcc -o 重命名文件 原文件 -static。 此外,gcc默认都是动态链,如果要求gcc必须进行静态链接就用上面的指令。但如果我们直接使用这个指令会报错,是因为云服务器没有安装c/c++的静态库,需要我们手动安装(yum install -y glibc-static,普通用户需提权)

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

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

相关文章

leetcode第77题组合

原题出于leetcode第77题https://leetcode.cn/problems/combinations/ 1.树型结构 2.回溯三部曲 递归函数的参数和返回值 确定终止条件 单层递归逻辑 3.代码 二维数组result 一维数组path void backtracking(n,k,startindex){if(path.sizek){result.append(path);return ;}…

Nacos + Dubbo3 实现微服务的Rpc调用

文章目录 概念整理基本概念概念助记前提RPC与HTTP类比RPC接口类的一些理解 实例代码主体结构父项目公共接口项目提供者项目项目结构POM文件实现配置文件实现公共接口实现程序入口配置启动项目检查是否可以注入到Nacos 消费者项目项目结构POM文件实现配置文件实现注册RPC服务类实…

算法-数据结构(图)-弗洛伊德算法复现(Floyd)

弗洛伊德算法(Floyd-Warshall算法)是一种用于求解所有节点对最短路径的动态规划算法,适用于有向图或无向图,且能处理带有负权边的图(但不能有负权环)。该算法的时间复杂度为 O(V3)O(V3),其中 VV…

51c自动驾驶~合集22

我自己的原文哦~ https://blog.51cto.com/whaosoft/11870502 #自动驾驶数据闭环最前沿论文 近几年,自动驾驶技术的发展日新月异。从ECCV 2020的NeRF问世再到SIGGRAPH 2023的3DGS,三维重建走上了快速发展的道路!再到自动驾驶端到端技术的…

基于javaweb的SpringBoot在线动漫信息平台系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【Qt】MVC设计模式

目录 一、搭建MVC框架 二、创建数据库连接单例类SingleDB 三、数据库业务操作类model设计 四、control层,关于model管理类设计 五、view层即为窗口UI类 一、搭建MVC框架 里面的bin、lib、database文件夹以及sqlite3.h与工程后缀为.pro文件的配置与上次发的文章…

ARM 处理器平台 eMMC Flash 存储磨损测试示例

By Toradex秦海 1). 简介 目前工业嵌入式 ARM 平台最常用的存储器件就是 eMMC Nand Flash 存储,而由于工业设备一般生命周期都比较长,eMMC 存储器件的磨损寿命对于整个设备来说至关重要,因此本文就基于 NXP i.MX8M Mini ARM 处理器平台演示…

本地部署DeepSeek-R1(Dify发件邮箱、找回密码、空间名称修改)

Dify配置发件邮箱 DIfy默认邮箱配置为空,在邀请团队成员注册时是不会发送邀请链接的,只能通过手动复制生成的注册链接发送给对应的人去注册设置密码。 这样很麻烦,并且在找回密码时也接收不了邮件,无法重置密码。 找到本地部署…

EasyRTC:支持任意平台设备的嵌入式WebRTC实时音视频通信SDK解决方案

随着互联网技术的飞速发展,实时音视频通信已成为各行各业数字化转型的核心需求之一。无论是远程办公、在线教育、智慧医疗,还是智能安防、直播互动,用户对低延迟、高可靠、跨平台的音视频通信需求日益增长。 一、WebRTC与WebP2P:实…

数据库数据恢复—SQL Server附加数据库报错“错误 823”怎么办?

SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复…

HTMLS基本结构及标签

HTML5是目前制作网页的核心技术&#xff0c;有叫超文本标记语言。 基本结构 声明部分位于文档的最前面&#xff0c;用于向浏览器说明当前文档使用HTML标准规范。 根部标签位于声明部分后&#xff0c;用于告知浏览器这是一个HTML文档。< html>表示文档开始&#xff0c;&l…

IDEA集成DeepSeek,通过离线安装解决无法安装Proxy AI插件问题

文章目录 引言一、安装Proxy AI1.1 在线安装Proxy AI1.2 离线安装Proxy AI 二、Proxy AI中配置DeepSeek2.1 配置本地部署的DeepSeek&#xff08;Ollama方式&#xff09;2.2 通过第三方服务商提供的API进行配置 三、效果测试 引言 许多开发者尝试通过安装Proxy AI等插件将AI能力…

phpstudy安装教程dvwa靶场搭建教程

GitHub - digininja/DVWA: Damn Vulnerable Web Application (DVWA) Dvwa下载地址 Windows版phpstudy下载 - 小皮面板(phpstudy) 小皮下载地址 1选择windows 版本&#xff0c;点击立即下载 下载完成&#xff0c;进行解压&#xff0c;注意不要有中文路径 点击.exe文件进行安装…

【linux】详谈 环境变量

目录 一、基本概念 二、常见的环境变量 取消环境变量 三、获取环境变量 通过代码获取环境变量 环境变量的特性 1. getenv函数:获取指定的环境变量 2. environ获取环境变量 四、本地变量 五、定义环境变量的方法 临时定义&#xff08;仅对当前会话有效&#xff09; 永…

【Linux高级IO】多路转接(poll epoll)

目录 1. poll 2. epoll 2.1 epoll_ctl 2.2 epoll_wait 2.3 epoll原理 2.4 epoll的工作模式 2.5 epoll的惊群效应 使用建议 总结 1. poll poll也是实现 I/O 多路复用的系统调用&#xff0c;可以解决select等待fd上限的问题&#xff0c;将输入输出参数分离&#xff0c;不需要…

供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)

供应链管理系统--升鲜宝门店收银系统功能解析&#xff0c;登录、主界面 会员 UI 设计图&#xff08;一&#xff09;

【Linux系统编程】基础IO--磁盘文件

目录 前言 磁盘的机械构成 盘片介绍 盘片与磁头 数据的存储&#xff08;硬件&#xff09; 磁盘的物理存储 逻辑结构&#xff1a;磁道/柱面、扇面、扇区 磁盘I/O的基本单位与扇区的存储密度 CHS定位法&#xff1a;数据的查找 磁盘的逻辑存储 扇区的抽象结构(数据…

C# .NET Core HttpClient 和 HttpWebRequest 使用

HttpWebRequest 这是.NET创建者最初开发用于使用HTTP请求的标准类。HttpWebRequest是老版本.net下常用的&#xff0c;较为底层且复杂&#xff0c;访问速度及并发也不甚理想&#xff0c;但是使用HttpWebRequest可以让开发者控制请求/响应流程的各个方面&#xff0c;如 timeouts,…

[3/11]C#性能优化-实现 IDisposable 接口-每个细节都有示例代码

[3]C#性能优化-实现 IDisposable 接口-每个细节都有示例代码 前言 在C#开发中&#xff0c;性能优化是提升系统响应速度和资源利用率的关键环节。 当然&#xff0c;同样是所有程序的关键环节。 通过遵循下述建议&#xff0c;可以有效地减少不必要的对象创建&#xff0c;从而减…

1.C语言初识

C语言初识 C语言初识基础知识hello world数据类型变量、常量变量命名变量分类变量的使用变量的作用域 常量字符字符串转义字符 选择语句循环语句 函数&#xff1b;数组函数数组数组下标 操作符操作符算术操作符移位操作符、位操作符赋值操作符单目操作符关系操作符逻辑操作符条…