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

Linux篇——工具

在有了前面的基础知识后,我们现在基本能够使用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,普通用户需提权)

相关文章:

Linux篇——工具

在有了前面的基础知识后,我们现在基本能够使用Linux的相关基本操作了,但我们知道,没有工具我们是无法便捷地实现某些功能的,因此我们这篇内容来谈谈Linux中的工具。 一、软件包管理器yum 我们知道,我们要想获得一个软…...

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 ;}…...

通过fgets获取文件内容

#include <stdio.h> char *fgets(char *s, int size, FILE *stream); 使用fgets获取文件内容 #include <stdio.h> #include <stdlib.h>int main(void) {char str[100] {0};FILE *fp NULL;fp fopen("./test_file", "r");if (NULL …...

STaR(Self-Taught Reasoner)方法:让语言模型自学推理能力(代码实现)

STaR&#xff08;Self-Taught Reasoner&#xff09;方法&#xff1a;让语言模型自学推理能力 在大型语言模型&#xff08;LLM&#xff09;的推理能力优化中&#xff0c;STaR&#xff08;Self-Taught Reasoner&#xff09; 是一种引人注目的技术&#xff0c;属于“修改提议分布…...

[创业之路-329]:华为铁三角实施的步骤

一、通用过程 华为铁三角实施的步骤主要包括以下几个关键阶段&#xff1a; 1、明确角色与职责 确定铁三角成员&#xff1a;组建由客户经理&#xff08;AR&#xff09;、解决方案经理&#xff08;SR&#xff09;和交付经理&#xff08;FR&#xff09;组成的铁三角团队。制定岗…...

在 Ubuntu 下通过 Docker 部署 Caddy 和 PHP-FPM 服务器

引言 大家好&#xff0c;今天我们要聊的主题是如何在 Ubuntu 上通过 Docker 部署 Caddy 和 PHP-FPM 服务器。Caddy 是一个现代化的 web 服务器&#xff0c;支持 HTTPS&#xff0c;配置简单&#xff1b;而 PHP-FPM 是 PHP 的 FastCGI 进程管理器&#xff0c;能够高效处理 PHP 请…...

工程化与框架系列(10)--微前端架构

微前端架构 &#x1f3d7;️ 微前端是一种将前端应用分解成更小、更易管理的独立部分的架构模式。本文将详细介绍微前端的核心概念、实现方案和最佳实践。 微前端概述 &#x1f31f; &#x1f4a1; 小知识&#xff1a;微前端的核心理念是将前端应用分解成一系列独立部署、松耦…...

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

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

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

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

51c自动驾驶~合集22

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

使用Docker方式一键部署MySQL和Redis数据库详解

一、前言 数据库是现代应用开发中不可或缺的一部分&#xff0c;MySQL和Redis作为两种广泛使用的数据库系统&#xff0c;分别用于关系型数据库和键值存储。本文旨在通过Docker和Docker Compose的方式&#xff0c;提供一个简洁明了的一键部署方案&#xff0c;确保数据库服务的稳…...

Vue3 + Vite + TS,使用 Pinia

安装pinia pnpm add piniaPinia 官网 传送门 main.js引入 import { createApp } from vue import App from ./App.vue import { createPinia } pinia const app createApp(App); app.use(createPinia()) app.mount("#app")创建一个pinia,scr/stores/index impor…...

算法之刷题汇总

剑指 Offer 剑指 Offer 题解 | CS-Notes 面试笔记 Leetcode Leetcode 题解 | CS-Notes 面试笔记 GitCode - 全球开发者的开源社区,开源代码托管平台...

支持向量机(Support Vector Machine,SVM)详细解释(带示例)

目录 基本概念 线性可分情况 线性不可分情况 工作原理 示例 Python 案例 代码解释 基本概念 支持向量机是一种有监督的机器学习算法&#xff0c;可用于分类和回归任务。在分类问题中&#xff0c;SVM 的目标是找到一个最优的超平面&#xff0c;将不同类别的样本分隔开来…...

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

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

Http、tcp、https、socket、tomcat、长短连接等总结回顾

&#xff08;1&#xff09;关于http、tcp的长短连接问题 tcp是没有所谓长连接的概念的。tcp经过三次握手就已经建立了一个连接&#xff0c;这个所谓建立了一个连接就是两边操作系统层面都已经建立了socket&#xff0c;都准备好了相应的缓冲区等。socket是啥呢&#xff1f;sock…...

010 rocketmq批量消息

文章目录 批量消息BatchProducer.javaBatchConsumer.java 批量消息 批量发送可以提⾼发送性能&#xff0c;但有⼀定的限制&#xff1a; topic 相同 waitStoreMsgOK 相同 &#xff08;⾸先我们建设消息的iswaitstoremsgoktrue(默认为true), 如果没有异常,我们将始终收到"O…...

【Qt】MVC设计模式

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

doris:Hudi Catalog

使用限制​ Hudi 表支持的查询类型如下&#xff1a; 表类型支持的查询类型Copy On WriteSnapshot Query, Time Travel, Icremental ReadMerge On ReadSnapshot Queries, Read Optimized Queries, Time Travel, Icremental Read 目前支持 Hive Metastore 和兼容 Hive Metasto…...

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

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

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

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

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

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

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

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

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;不需要…...

JAVA面试常见题_基础部分_mybatis面试题

1、什么是 MyBatis&#xff1f; 答&#xff1a;MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。 2、讲下 MyBatis 的缓存答 &#xff1a;MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓存放在它的命名空间里,默认是不打…...

PostgreSQL中的外键与主键

在 PostgreSQL 中&#xff0c;外键&#xff08;Foreign Key&#xff09; 是一种用于建立表间关联的数据库约束机制&#xff0c;其核心作用与主键&#xff08;Primary Key&#xff09;有显著区别。以下是详细解析&#xff1a; 一、外键的定义与作用 定义 外键是表中的一个或多个…...