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,普通用户需提权)

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

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

相关文章

水管路消声器

水管路中存在三个频线的噪声,本消声器针对低频段三个频率设计了水管路消声器,采用三个谐振腔进行吸收。(亥姆霍兹消声原理) 一、搭建模型 二、设置材料 三、设置端口及热粘性声学 四、计算结果 网格划分示意图 传递损失曲线

Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用

文 / 开源智造 Odoo金牌服务 Odoo:功能强大且免费开源的CRM Odoo 引入了一种高效的客户支持管理方式,即将 CRM 线索转换为服务台工单。此功能确保销售和支持团队能够无缝协作,从而提升客户满意度并缩短问题解决时间。通过整合 CRM 模块与服…

计算机毕业设计SpringBoot+Vue.js英语知识应用网站(源码+文档+PPT+讲解)

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

利用STM32TIM自制延迟函数实验

一、实验目的 掌握STM32定时器(TIM)的工作原理及配置方法学习使用HAL库实现微秒级/毫秒级延时函数理解定时器中断服务程序的编写规范 二、实验原理 ​定时器基础: STM32定时器包含向上计数器、向下计数器、中心对齐模式通过预分频器&#x…

配置后端验证功能之validation

哈喽,好久不见。最近项目内网开发导致断更了好久。今天介绍一个简单且有意思的开发技巧吧。之前用过validation后端验证功能但没进一步了解,都只是简单用一下。假如开发中要求传参必须按照规则 不能毫无底线什么都能传,本篇介绍的就是针对此功…

树的直径解释

定义 树上任意两点之间的最长简单路径即为「树的直径」。 性质 树的直径不一定唯一。 举个例子,比如说有这么一棵树: 假设这张图中每一条边边权均为 1 1 1,那么手动推算一下,发现直径有:2 -> 1 -> 4 -> 5…

基于51单片机的智能温控器设计与实现

一、前言 基于51单片机的智能温控器&#xff0c;使用DS18B20温度传感器来测量温度&#xff0c;并通过驱动风扇降温&#xff0c;同时使用LCD1602显示屏显示当前温度和设定温度。 二、51单片机代码 #include <reg52.h> //显示 #include <lcd.h>#define uchar unsi…

不要升级,Flutter Debug 在 iOS 18.4 beta 无法运行,提示 mprotect failed: Permission denied

近期如果有开发者的 iOS 真机升级到 18.4 beta&#xff0c;大概率会发现在 debug 运行时会有 Permission denied 的相关错误提示&#xff0c;其实从 log 可以很直观看出来&#xff0c;就是 Dart VM 在初始化时&#xff0c;对内核文件「解释运行&#xff08;JIT&#xff09;」时…

架构师面试(九):缓存一致性

问题 关于【数据库和缓存】一致性&#xff0c;下面哪几项是在线上生产环境中相对合理的处理方式&#xff1f; A. 对于查询操作&#xff0c;先查缓存&#xff0c;如果为空则查 DB&#xff0c;然后将数据带入缓存&#xff1b; B. 对于插入操作&#xff0c;只写 DB 即可&#…

【CSS—前端快速入门】CSS 选择器

CSS 1. CSS介绍 1.1 什么是CSS? CSS(Cascading Style Sheet)&#xff0c;层叠样式表&#xff0c;用于控制页面的样式&#xff1b; CSS 能够对网页中元素位置的排版进行像素级精确控制&#xff0c;实现美化页面的效果&#xff1b;能够做到页面的样式和 结构分离&#xff1b; 1…

使用DeepSeek+KIMI生成高质量PPT

一、使用DeepSeek DeepSeek官网&#xff1a;DeepSeek 点击“开始对话”&#xff0c;进入交互页面。 在上图中&#xff0c;输入问题&#xff0c;即可获取AI生成的结果。 基础模型&#xff08;V3&#xff09;&#xff1a;通用模型&#xff08;2024.12&#xff09;&#xff0c;高…

学习笔记:IC存储总结(ROM,RAM, EEPROM, Flash, SRAM, DRAM, DDL)

一&#xff0c;概述 半导体存储器是一种可以存储大量二值信息的半导体器件。在电子计算机及一些其他的数字系统的工作过程中&#xff0c;需要对大量的数据进行储存。由于数据处理的数据量和运算速度的要求&#xff0c;因此把存储量和存取速度作为衡量存储器的重要指标。 在电子…

大语言模型学习

大语言模型发展历程 当前国内外主流LLM模型 ‌一、国外主流LLM‌ ‌LLaMA2‌ Meta推出的开源模型&#xff0c;参数规模涵盖70亿至700亿&#xff0c;支持代码生成和多领域任务适配‌57。衍生版本包括Code Llama&#xff08;代码生成优化&#xff09;和Llama Chat&#xff08;对…

【Block总结】EfficientViT中的多尺度线性注意力模块即插即用

论文信息 标题: EfficientViT: Multi-Scale Linear Attention for High-Resolution Dense Prediction作者: Han Cai, Junyan Li, Muyan Hu, Chuang Gan, Song Han&#xff08;MIT/浙江大学/清华大学/MIT-IBM Watson AI Lab&#xff09;[3][7]GitHub: mit-han-lab/efficientvit…

unsloth报错FileNotFoundError: [WinError 3] 系统找不到指定的路径。

运行平台 Windows 报错信息 Traceback (most recent call last): File “C:\Python312\Lib\site-packages\IPython\core\interactiveshell.py”, line 3577, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File “”, line 1, in runfile(‘D:\python_pr…

【清华大学】DeepSeek从入门到精通完整版pdf下载

DeepSeek从入门到精通.pdf 一共104页完整版 下载链接: https://pan.baidu.com/s/1-gnkTTD7EF2i_EKS5sx4vg?pwd1234 提取码: 1234 或 链接&#xff1a;https://pan.quark.cn/s/79118f5ab0fd 一、DeepSeek 概述 背景与定位 DeepSeek 的研发背景 核心功能与技术特点&#xff08…

如何使用ArcGIS Pro制作横向图例:详细步骤与实践指南

ArcGIS Pro&#xff0c;作为Esri公司推出的新一代地理信息系统&#xff08;GIS&#xff09;平台&#xff0c;以其强大的功能和灵活的操作界面&#xff0c;在地理数据处理、地图制作和空间分析等领域发挥着重要作用。 在地图制作过程中&#xff0c;图例作为地图的重要组成部分&…

监督学习单模型—线性模型—LASSO回归、Ridge回归

目标变量通常有很多影响因素&#xff0c;通过各类影响因素构建对目标变量的回归模型&#xff0c;能够实现对目标的预测。但根据稀疏性的假设&#xff0c;即使影响一个变量的因素有很多&#xff0c;其关键因素永远只会是少数。在这种情况下&#xff0c;还用传统的线性回归方法来…

【QT】QLinearGradient 线性渐变类简单使用教程

目录 0.简介 1&#xff09;qtDesigner中 2&#xff09;实际执行 1.功能详述 3.举一反三的样式 0.简介 QLinearGradient 是 Qt 框架中的一个类&#xff0c;用于定义线性渐变效果&#xff08;通过样式表设置&#xff09;。它可以用来填充形状、背景或其他图形元素&#xff0…

攻防世界GFSJ1184_welcome_CAT_CTF

题目 附件&#xff1a; 两个文件client和server Get Flag Exeinfo File分析 file client client: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]6045aa1ba5…