• linux的基本工具【yum和vim】



    前言

    什么是工具呢?
    工具本质也是指令。同理,我们也可以把ls,pwd…指令称之为工具

    一、Linux 软件包管理器 yum

    我们前面已经接触过yum了,实际上就是已经见过猪跑了

    1、什么是软件包

    ·在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序.
    ·但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成windows上的安装程序)放在一个服务器上, 通过包管理器可以很方便的获取到这个编译好的软件包, 直接进行安装.
    ·软件包和软件包管理器, 就好比 “App” 和 “应用商店” 这样的关系.
    ·yum(Yellow dog Updater, Modified)是Linux下非常常用的一种包管理器. 主要应用在Fedora, RedHat, Centos等发行版上.

    2、关于rzsz

    这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件。安装完毕之后可以通过拖拽的方式将文件上传过去.

    3、查看软件包

    yum list | prep lrzsz(这里的lrzsz可以换成我们要下载的软件名,甚至是软件名的一部分,都会列举出来)
    
    • 1

    结果:

    lrzsz.x86_64 0.12.20-36.el7 @base 
    
    • 1

    注意事项:

    软件包名称: 主版本号.次版本号.源程序发行号-软件包的发行号.主机平台.cpu架构.
    “x86_64” 后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配.
    “el7” 表示操作系统发行版的版本. “el7” 表示的是 centos7/redhat7. “el6” 表示 centos6/redhat6.
    最后一列, base 表示的是 “软件源” 的名称, 类似于 “小米应用商店”, “华为应用商店” 这样的概念.

    在这里插入图片描述

    注意事项:
    关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!

    可以通过 ping 指令验证

    ping www.baidu.com
    
    • 1

    4、如何安装软件

    通过 yum, 我们可以通过很简单的一条命令完成 gcc 的安装

    sudo yum install lrzsz
    
    • 1

    yum 会自动找到都有哪些软件包需要下载, 这时候敲 “y” 确认安装。
    出现 “complete” 字样, 说明安装完成.

    注意事项:

    1、安装软件时由于需要向系统目录中写入内容, 一般需要 sudo 或者切到 root 账户下才能完成.
    2、yum安装软件只能一个装完了再装另一个. 正在yum安装一个软件的过程中, 如果再尝试用yum安装另外一个软件, yum会报错.
    3、如果 yum 报错, 请自行百度.

    5、如何卸载软件

    仍然是一条命令:

    sudo yum remove lrzsz
    
    • 1
    安装指令: yum install
    删除指令: yum remove
    
    • 1
    • 2

    二、Linux编辑器-vim使用

    vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、windows

    1、vi与vim

    vi/vim 是 Linux 系统内置的不可或缺的文本编辑命令。VIM 是 vi 的加强版本,兼容 vi 的所有指令,不仅能编辑文本,而且还具有 shell 程序编辑的功能,可以不同颜色的字体来辨别语法的正确性,以及许多方面的强化,极大方便了程序的设计和编辑性

    2、vim的三种模式

    这里可不是说vim只有三种模式。vim一共有12种模式(six BASIC modes和six ADDITIONAL modes.),只不过我们最常用的只有三种:
    1、命令模式(Normal mode),也叫做正常/普通/默认模式
    2、插入模式(Insert mode)
    3、末行模式(last line mode),也叫做底行模式

    a、命令模式

    当我们vim进入文件内部的时候,默认就是命令模式,这个模式我们是不能够进行敲代码操作的,只能进行命令操作。由于linux环境不支持鼠标操作,我们可以通过键盘上下左右方向键控制光标移动,
    当然,还有其他移动光标方法,我们会讲到的

    • 光标定位

    • shift + 4(也就是$):直接将光标移动到行的最右边
    • shift + 6(也就是^):直接将光标移动到行的最左边
    • shift + g(也就是G):直接将光标移动到最底部
    • gg(也就是按两下g):直接将光标移动到最顶部
    • n+shift + g(也就是行号+G):直接将光标移动到指定行,n表示行号
    • nl :光标移到该行的第n个位置,如:5l,56l

    • 光标移动
    除了我们熟知的上下左右键可以移动光标以外,还有一种方法也可以移动光标,这种方法我们以后可能会用到:

    在这里插入图片描述

    这是年代较为久远的键盘,这上面可以看到hjkl按键有着对应的箭头

    • h :向左
    • j :向下
    • k :向上
    • l :向右

    • 文件复制相关操作

    前提:光标所在行
    yy :复制该行(n+yy : 一次性复制光标开始到第n行,n过大就从光标复制到最后一行内容截止)
    p :粘贴(n+p : 对复制的内容进行n次粘贴)
    dd :删除光标所在行内容(n+dd : 对光标开始到下面的n行进行整体删除)
    n+dd + p : 剪切

    • 文件编辑相关操作

    • 文本行大小写转换:shift + ~ (切换之后光标会自动走向下一个字符)
    • shift + r (也就是R) : 批量化替换
    • r : 替换光标所在的每一个字符(可以n+r)
    • x :每按一次,删除光标所在位置的一个字符
    • X :大写的X,每按一次,删除光标所在位置的“前面”一个字符(同样支持nx和nX,支持p粘贴)
    • cw :更改光标所在处的字到字尾处。例如,「c3w」表示更改3个字,同时切换到插入模式

    • 撤销操作

    • u :撤销到上一步
    ctrl + r : 撤销所撤销的操作(撤销的恢复,取消u操作)

    采用命令模式的意义就是:提高编辑效率
    windows下如果内容大到几百万行,光光靠一个鼠标是很难解决的,采用命令更加简单方便

    b、插入模式

    插入模式就是我们正常的文本编辑模式,就是我们写代码用的模式,我们可以正常在文件中输入信息

    想要切换到插入模式,在命令模式下按:i (a,o)等操作都可以,前提是命令模式下

    在这里插入图片描述
    从插入模式切换回命令模式,按esc即可

    c、底行模式

    也是在命令模式的前提下,按==shift + ;(即:)==就可以切换到底行模式了

    在这里插入图片描述
    底行模式也是有许多功能的,我们现在学几个简单好玩的:

    • 行号的显示与取消

    set nu : 显示行号
    set nonu :取消显示行号

    • 写入与退出
    在底行模式前提下

    保存文件内容 :w
    退出vim :q
    保存并退出 :wq
    强制操作 :!
    强制保存文件内容 :w!
    强制退出vim :q!
    强制保存文件内容并退出vim :wq!

    • 分屏

    vs + 文件名
    
    • 1

    vs + 文件名就可以分出我们想要的屏幕了,并且可以进行多次分屏操作(但是屏幕可以有很多,光标只有一个,光标在哪一个屏幕上面,我们的操作就对应在该屏幕上面)

    我们只需要按下:ctrl + ww就可以将光标移动到另一个屏幕上,光标在哪一个屏幕上面,我们的操作就对应在该屏幕上面

    • 在底行模式执行替换命令

    格式:%s/需要替换的/替换后的/g

    将全部的cout转换成print

    替换前
    在这里插入图片描述

    替换后
    在这里插入图片描述

    3、三种模式总结(内含替换模式)

    在这里插入图片描述

    vim学习


    三、sudo配置步骤

    步骤1:切换到root用户,登陆我们的root账号

    步骤2:查看是否有/etc/sudoers(一定有)

    步骤3:通过vim打开sudoers
    在大概100行左右找到

    root			ALL=(ALL)         ALL
    
    • 1

    我们复制,在这一行下面粘贴,任何把root改成我们的普通用户

    root			ALL=(ALL)         ALL
    我们的用户名         ALL=(ALL)         ALL
    
    • 1
    • 2

    这样就行了


    四、gdb的使用

    1、debug和release

    我们之前在windows下面使用vs的时候提到过releasedebug两个版本。
    其中,debug版本是给程序员用的,包含调试信息,程序员可以根据调试结果进行修改完善代码
    而release版本是给用户用的,不包含调试信息

    程序的发布方式有两种,debug模式和release模式
    Linux gcc/g++出来的二进制程序,默认是release模式
    要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

    测试代码:

    #include 
    #include 
    
    void Print(int sum)
    {
        long long  timestamp = time(NULL);
        printf("result = %d, timestamp: %lld\n", sum, timestamp);
    }
    
    int AddToVal(int from, int to)
    {
        int sum = 0;
        for(int i = from; i < to; i++)
        {
            sum += i;
        }
    
        return sum;
    }
    
    
    int main()
    {
        int sum = AddToVal(0, 100);
        printf("hello a\n");
        printf("hello b\n");
        printf("hello c\n");
        printf("hello d\n");
        printf("hello e\n");
        printf("hello f\n");
        Print(sum);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    这里看到release版本没有调试信息
    在这里插入图片描述
    通过观察发现debug和release版本不管在哪里都是有区别的

    2、gdb的使用

    gdb的安装:

    sudo yum install -y gdb
    
    • 1

    gdb调试时常用的选项:

    gdb binFile退出: ctrl + d 或 quit 调试命令
    list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
    list/l 函数名:列出某个函数的源代码。
    r或run:运行程序。
    n 或 next:单条执行。
    s或step:进入函数调用
    break(b) 行号:在某一行设置断点
    break 函数名:在某个函数开头设置断点
    info break :查看断点信息。
    finish:执行到当前函数返回,然后挺下来等待命令
    print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
    p 变量:打印变量值。
    set var:修改变量的值
    continue(或c):从当前位置开始连续而非单步执行程序
    run(或r):从开始连续而非单步执行程序
    delete breakpoints:删除所有断点
    delete breakpoints n:删除序号为n的断点
    disable breakpoints:禁用断点
    enable breakpoints:启用断点
    info(或i) breakpoints:参看当前设置了哪些断点
    display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    undisplay:取消对先前设置的那些变量的跟踪
    until X行号:跳至X行
    breaktrace(或bt):查看各级函数调用及参数
    info(i) locals:查看当前栈帧局部变量的值
    quit:退出gdb

    样例:
    l :显示源代码(可以+数字来表示从多少行代码开始显示)
    在这里插入图片描述
    r:运行程序
    在这里插入图片描述
    b+行号 :打断点
    info+b :查看断点
    d + 断点编号 : 删除断点
    在这里插入图片描述
    r:运行调试
    在这里插入图片描述
    n:逐过程调试
    s:逐语句调试
    在这里插入图片描述
    c :运行到下一个断点
    在这里插入图片描述
    bt :查看堆栈
    在这里插入图片描述
    p + 变量 :查看变量值
    display :跟踪查看变量
    undisplay + 变量编号:取消跟踪
    在这里插入图片描述
    finish :直接运行完函数
    在这里插入图片描述

  • 相关阅读:
    MQTT服务采用nginx 代理TLS配置
    LeetCode 125.验证回文串
    python中的code object
    深度学习——词汇表征
    【Azure上云项目实战】 合规性的身份验证与访问控制:在 Azure 中实现符合 PCI DSS 要求的架构设计
    【前端】vscode快捷键和实用Api整理
    Python爬虫技术之Beautiful Soup相关最全详细技术
    抛弃 IaaS PaaS SaaS 架构的云操作系统 sealos - 像使用 PC 一样用云
    GDB 源码分析系列文章五:动态库延迟断点实现机制
    第11章——网络编程
  • 原文地址:https://blog.csdn.net/kdjjdjdjjejje128/article/details/127577503