【linux】基本工具yum、vim和gdb


前言

什么是工具呢?
工具本质也是指令。同理,我们也可以把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可以换成我们要下载的软件名,甚至是软件名的一部分,都会列举出来)

结果:

lrzsz.x86_64 0.12.20-36.el7 @base 

注意事项:

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

在这里插入图片描述

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

可以通过 ping 指令验证

ping www.baidu.com

4、如何安装软件

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

sudo yum install lrzsz

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

注意事项:

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

5、如何卸载软件

仍然是一条命令:

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

二、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 + 文件名

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

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

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

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

将全部的cout转换成print

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

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

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

在这里插入图片描述

vim学习


三、sudo配置步骤

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

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

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

root			ALL=(ALL)         ALL

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

root			ALL=(ALL)         ALL
我们的用户名         ALL=(ALL)         ALL

这样就行了


四、gdb的使用

1、debug和release

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

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

测试代码:

#include <stdio.h>
#include <time.h>

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

在这里插入图片描述

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

2、gdb的使用

gdb的安装:

sudo yum install -y gdb

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 :直接运行完函数
在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值