Linux常用工具

news2024/11/25 14:21:50

文章目录

  • 前言
  • 一、Linux编辑器-vim使用
    • 1.vim的基本概念
    • 2. vim的基本操作
    • 3. vim命令集
      • 1. 正常模式
        • 1. 模式切换和光标移动
        • 2. 删除文字及复制
        • 3. 其他操作
      • 2. 底行模式
  • 二、Linux编译器-gcc/g++使用
    • 1. 命令和选项
    • 2. 预处理
    • 3. 编译
    • 4. 汇编(生成机器可识别代码)
    • 5. 连接(生成可执行文件或库文件)
  • 三、Linux调试器-gdb使用
  • 四、Linux项目自动化构建工具-make/Makefile

前言

在Linux下我们有一些非常好用的工具,他们可以显著的提升我们的效率,这篇将介绍这些工具,来帮助我们完成Linux编程操作。

一、Linux编辑器-vim使用

1.vim的基本概念

作为初期,我们只需要学习vim三种模式就可以了:
分别是 命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode)
命令模式(command mode): 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode
插入模式(Insert mode): 只有在Insert mode下,才可以做文字输入,[ESC]键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。
末行模式(last line mode): 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift + : 即可进入该模式。

2. vim的基本操作

命令模式切换至插入模式

输入a
输入i
输入o

插入模式切换至命令模式

按ESC

命令模式切换至底行模式

shift +

退出vim及保存文件,在底行模式退出:

w 保存当前文件
wq :保存并退出vim)
w! 强制保存
q! 强制退出

在这里插入图片描述

3. vim命令集

1. 正常模式

1. 模式切换和光标移动

i :切换进入插入模式,按“i”进入插入模式后是从光标当前位置开始输入文件;
a :进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;
o :进入插入模式后,是插入新的一行,从行首开始输入文字。
vim是用小写英文字母h、j、k、l,分别控制光标左、下、上、右移一格,当然也可以用上下左右
G :移动到文章的最后
$ :移动到光标所在行的“行尾”
^ :移动到光标所在行的“行首”
w :光标跳到下个字的开头
e :光标跳到下个字的字尾
b :光标回到上个字的开头
nl :光标移到该行的第n个位置,如:10l
gg :进入到文本开始
shift + g :进入文本末端
ctrl + b :屏幕往“后”移动一页
ctrl + f :屏幕往“前”移动一页
ctrl + u :屏幕往“后”移动半页
ctrl + d :屏幕往“前”移动半页

2. 删除文字及复制

x :每按一次,删除光标所在位置的一个字符
nx :5x表示删除光标所在位置的“后面(包含自己在内)”5个字符
X :大写的X,每按一次,删除光标所在位置的“前面”一个字符
nX :5X表示删除光标所在位置的“前面”5个字符
dd :删除光标所在行,相当于剪切
ndd :从光标所在行开始删除n行
yy :复制光标所在行到缓冲区。
nyy :例如,5yy表示拷贝从光标所在的该行“往下数”5行文字。
p :将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。

3. 其他操作

r :替换光标所在处的字符
R :替换光标所到之处的字符,直到按下「ESC」键为止。
u :如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。
ctrl + r : 撤销的恢复
cw:更改光标所在处的字到字尾处
cnw :更改n个字
ctrl + g :列出光标所在行的行号。
nG :表示移动光标至文章的第n行行首。

2. 底行模式

set nu :会在文件中的每一行前面列出行号。
n :就会跳到文章的第n行。
/ 关键字 : 先按/键,再输入寻找的字符,如果第一次找的关键字不是您想要的,可以一直按n会往后寻找到您要的关键字为止。
w :保存
q :退出
wq :保存退出。

二、Linux编译器-gcc/g++使用

1. 命令和选项

格式: gcc [选项] 要编译的文件 [选项] [目标文件]
常用选项:

-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
-S 编译到汇编语言不进行汇编和链接
-c 编译到目标代码
-o 文件输出到 文件
-static 此选项对生成的文件采用静态链接
-g 生成调试信息。GNU 调试器可利用该信息。
-shared 此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-O0
-O1
-O2
-O3 编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-w  不生成任何警告信息。
-Wall 生成所有警告信息。

2. 预处理

gcc –E 文件 –o 文件.i 预处理要生成 .i文件
在这里插入图片描述
预处理功能主要包括宏定义,文件包含,条件编译,去注释等

3. 编译

gcc –S 文件 –o 文件.s 编译要生成 .s文件
在这里插入图片描述
在这个阶段中,gcc 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc 把代码翻译成汇编语言

4. 汇编(生成机器可识别代码)

gcc –c文件 –o 文件.o 汇编要生成 .o文件
在这里插入图片描述
汇编阶段是把编译阶段生成的“.s”文件转成目标文件

5. 连接(生成可执行文件或库文件)

gcc –c文件 –o 文件
在这里插入图片描述
不指定名字gcc会默认命名为a.out

三、Linux调试器-gdb使用

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项
常用选项:

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
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

四、Linux项目自动化构建工具-make/Makefile

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。
在这里插入图片描述

在这里插入图片描述
一般我们这种clean的目标文件,我们将它设置为伪目标,用 .PHONY 修饰,伪目标的特性是,总是被执行的。

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

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

相关文章

工业相机镜头选型相关内容参数(1)

工业相机镜头选型相关内容参数(1)https://www.bilibili.com/video/BV1PF411r7Yy/?spm_id_from333.999.0.0

C#通过重写Panel改变边框颜色与宽度的方法

在C#中,Panel控件是一个容器控件,用于在窗体或用户控件中创建一个可用于容纳其他控件的面板。Panel提供了一种将相关控件组合在一起并进行布局的方式。以下是Panel控件的详细使用方法: 在窗体上放置 Panel 控件: 在 Visual Studio 的窗体设计器中,从工具箱中拖动并放置一…

接口测试以及接口测试用例设计

1. 测试点 功能测试 单接口功能: 手工测试中的单个业务模块,一般对应一个接口 登录业务---->登录接口加入购物车业务---->加入购物车接口订单业务---->订单业务接口支付业务--->支付业务接口借助工具、代码以此绕开前端界面,组织接口所需要…

MySQL数据库简介+库表管理操作+数据库用户管理

Mysql Part 1 一、数据库的基本概念1.1 使用数据库的必要性1.2 数据库基本概念1.2.1 数据(Data)1.2.2 表1.2.3 数据库1.2.4 数据库管理系统(DBMS)1.2.5 数据库系统 1.3 数据库的分类1.3.1 关系数据库 SQL1.3.2 非关系数据库 NoSQL…

MySQL主从数据库搭建

1 背景 最近工作需要对比几种数据库技术方案,主从读写分离集群也是其中之一。现将该集群搭建过程记录下来,以便后面查看回忆。 2 主从集群 2.1 原理 主从复制的原理如下图所示: 2.2 集群划分 我在搭建主从集群时已经使用用虚拟机安装了do…

【数据结构】树的存储结构;树的遍历;哈夫曼树;并查集

欢~迎~光~临~^_^ 目录 1、树的存储结构 1.1双亲表示法 1.2孩子表示法 1.3孩子兄弟表示法 2、树与二叉树的转换 3、树和森林的遍历 3.1树的遍历 3.1.1先根遍历 3.1.2后根遍历 3.2森林的遍历 3.2.1先序遍历森林 3.2.2中序遍历森林 4、树与二叉树的应用 4.1哈夫曼树…

redis桌面连接工具Another Redis Desktop Manager使用介绍

Another Redis Desktop Manager是一种类似于navicat的数据库连接工具,专门用来连接redis,使用起来非常简单方便,在这里推荐给大家。 没有用过这个软件的,首先通过下面的网盘链接下载Another Redis Desktop Manager 百度网盘redi…

SQL死锁进程内容查询语句

1.方式1 SELECT object_name(A.resource_associated_entity_id) as TABLENAME, A.request_session_id AS SPID,DB_NAME(B.dbid) AS DBName,B.blocked,B.dbid,B.program_name,B.waitresource,B.lastwaittype,B.loginame,B.hostname,B.login_time,B.last_batch--,B.* FROM sy…

Qt5开发及实例V2.0-第四章Qt基本对话框

Qt5开发及实例V2.0-第四章Qt基本对话框 第4章 Qt 5基本对话框4.1 标准文件对话框类4.1.1 函数说明4.1.2 创建步骤 4.2 标准颜色对话框类4.2.1 函数说明4.2.2 创建步骤 4.3 标准字体对话框类4.3.1 函数说明4.3.2 创建步骤 4.4 标准输入对话框类4.4.1 标准字符串输入对话框4.4.2 …

全是模板的数据分析工具有哪些?

当一个全是模板的数据分析工具,一个以点击、拖拉拽就能制作报表的工具摆在眼前,人人都能随需分析,自定义分析,在极短的时间内实现智能数据可视化分析挖掘。SpeedBI数据分析云就是这样的一个全是模板且点击、拖拉拽做分析报表的数据…

【SpringMVC】基础部分

SpringMvc Spring MVC 是Spring提供的一个实现了Web MVC设计模式的轻量级Web框架。 MVC(Model View Controller),一种用于设计创建Web应用程序表现层的模式 Model(模型):数据模型,用于封装数据…

服务网格的面临挑战:探讨服务网格实施中可能遇到的问题和解决方案

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Ubuntu 20.04中Nightingale二进制部署

参考博客《【夜莺监控】初识夜莺,强!》 lsb_release -r可以看到操作系统版本是20.04,uname -r可以看到内核版本是5.5.19。 sudo apt-get update进行更新镜像源。 完成之后,如下图: sudo apt-get upgrade更新软件…

JSplitPane与JTabledPane

Swing提供了一些具有特殊功能的容器 , 这些特殊容器可以用于创建一些更复杂的用户界面。 使用JSplitPane JSplitPane 用于创建一个分割面板,它可以将 一个组件(通常是一个容器)分割成两个部分,并提供一个分割条 , 用户可以拖动该分割条来调…

springboot和vue:五、RESTful服务+HTTP状态码+swagger配置

RESTful RESTful的特点 每一个URI代表一种资源客户端使用GET、POST、PUT、DELETE四种表示操作方式的动词对服务端资源进行操作:POST用于新建资源(也可以用于更新资源),PUT用于更新资源资源的表现形式是JSON或者HTML。客户端与服…

Cilium 1.11:服务网格的未来已来

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

1个G的视频能压缩到几M?视频过大这样压缩

一个G的视频能压缩到几M,具体取决于视频的质量、编码方式,以及压缩软件使用的算法。一般来说,高质量的视频压缩需要更高的比特率,这就意味着更大的文件大小。另一方面使用有效的压缩算法或降低视频的分辨率等,也可以减…

MySQL BufferPool缓存与Redo日志是如何提升事务性能的

文章目录 引言一、BufferPool缓存的作用与优势1.1 BufferPool缓存的定义与作用1.2 BufferPool缓存的作用1.3 Change Buffer 作用 二、BufferPool缓存的优势2.1 减少磁盘IO操作的次数2.2 提高数据的读取速度2.3 减轻磁盘负载,提升整体系统性能 三、BufferPool缓存的工…

全国职业技能大赛云计算--高职组赛题卷③(私有云)

全国职业技能大赛云计算--高职组赛题卷③(私有云) 第一场次题目:OpenStack平台部署与运维任务1 基础运维任务(5分)任务2 OpenStack搭建任务(15分)任务3 OpenStack云平台运维(15分&am…

R语言画图

简单记录一下 plot(lad_profile_relative$lad, lad_profile_relative$height, type"l", lwd1.5, xlabexpression(paste("LAD ", "(", m^2, m^-3, ")" )), ylab"Height (m)")X轴数据, Y轴数据 type, 标记类型 lw…