Linux常用工具的使用

我们使用Linux开发的时候会高频率使用一些工具,这些工具也是需要我们去学习如何使用!

yum的使用

yum命令是安装软件的命令

yum list | grep  软件名     查找所有包含软件名的软件
yum -y install 软件名       直接安装软件  不需要再进行交互了
yum -y remove 软件名        直接卸载软件

vim的使用

vim是Linux下的一款多模式编辑器,一般系统自带,我们常用的模式3~5种。

  • 命令模式(vim进入默认)
  • 插入模式
  • 底行模式
  • 替换模式
  • 视图模式

命令模式输入i进入插入模式

命令模式输入shift+:进入底行模式

任何模式退出到命令模式按esc键

保存vim写入的内容并退出:进入底行模式,输入wq

vim指令集

底行模式下,调出和去掉行号:set nu/set nonu

大部分命令都是在命令模式下进行的

yy/nyy:复制当前行或者复制当前行在内的指定若干行

p/np:粘贴一行或者多行相同的内容到当前光标所在行之下

u:撤销刚才的操作

CTRL + r:对撤销进行撤销

dd/ndd:对当前行或者当前行在内的n行的内容进行剪切 如果只dd/ndd,不进行p/np就是删除

shift g:将光标定位到文档的最结尾

gg:将光标定位到文档的最开始

n shift g:将光标定位到文档的指定行

shift 4($):将光标定位到文档行的结尾

shift 6(^):将光标定位到文档的最开始

n w,n b:将光标按照单词为单位,进行前后移动,w是前,b是后

shift ~:快速大小写切换

n r:替换光标所在的字符

nx:行内删除 左侧->右侧

nX:行内删除 右侧->左侧

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

底行命令:

调出和去掉行号:set nu/set nonu

替换字符:%s/(要被替换的字符串)/(要替换的字符串)/g

/(要搜索的字符串)

!command (可以直接在vim中执行指令)

vs file(直接创建分屏文件,但是没有w不会保存)

vim分屏模式下,光标在那个文件就会操作哪个文件,切换文件 CTRL ww

强制保存退出 :wq!

强制退出:q!

vim配置

手动配置

vim在启动的时候,会自动在当前用户的目录下,寻找配置文件(vimrc),需要在这个文件里面添加配置信息。

自动配置:

在普通用户下执行下面指令,一键配置

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh
推荐使用自动配置

gcc/g++编译器

gcc是C语言的编译器,g++是c++的编译器,命令操作是相同的

我们从写好代码到生成可执行程序,需要经过四个步骤:

  1. 预处理(头文件展开,条件编译,宏替换,去注释等)
  2. 编译(C语言转换成汇编语言)
  3. 汇编(可重定位目标二进制文件,不可以被执行,bin.obj)
  4. 链接(将我们自己形成的.obj文件和库文件合并,形成可执行程序)

从.c文件生成a.out的可执行程序,之前用gcc .c文件名生成,如果我们指定可执行程序的文件名应该加命令选项-o,例如编译myfile.c文件,生成可执行程序myfile,被指定的文件名是跟在-o后面的。

gcc -o myfile myfile.c或者gcc myfile.c -o myfile

gcc -o会直接生成可执行程序,从1到4一步到位,想让程序做完预处理或者编译或者汇编之后直接停下,也有对应的命令选项:

  • 让程序做完预处理直接停下,用-E选项,例如:gcc -E myfile.c -o myfile.i,如果不加-o选项,预处理文件会直接打印到命令行。
  • 让程序做完编译操作直接停下,用-S选项,例如:gcc -S myfile.i -o myfile.s,然后程序会生成.s的汇编代码文件
  • 让程序做完汇编操作直接停下,用-c选项,例如:gcc -c myfile.s -o myfile.o,生成的.o文件里面都是二进制的内容了。
  • 做完汇编操作后,.o文件还不是可执行程序,还需要gcc编译,例如:gcc myfile.o -o myfile,最后生成的myfile文件才是可执行的。

链接

在程序还没有还是运行的时候,编译器里面的链接器就会提前准备好链接供程序调用,在链接阶段如果程序需要调用库函数,那么链接器会给程序一个链接去访问库,从而使程序能够调用库里面的函数,而库分为动态库和静态库,动态库是由动态链接去访问的,静态库是由静态链接去访问的,系统默认调用动态库。

  • 静态库的优点:调用静态库时,会把调用库函数的代码直接拷贝到程序中,静态链接成功,不依赖任何库,自己可以独立运行。
  • 静态库的缺点:自身拷贝问题,会浪费空间。
  • 动态库的优点:可以被所有人共享,因为动态链接成功的时候会把地址放到程序内部,不需要拷贝代码,更有效的节省空间
  • 动态库的缺点:一旦动态库出现问题,程序无法运行。

系统默认是调用动态库,如果想调用静态库,用命令选项-static,例如:gcc myfile.c -o myfile-static -static

如果没有安装静态库,命令yum install glibc-static libstdc++ -static -y

make/makefile

我们在编写程序的时候,有时候需要多次编译源文件,多次编写gcc/g++指令,有时候指令很繁琐且重复率很高,这时候make能大大提升效率。

make是一条指令,makefile是一个文件。makefile是一个围绕依赖关系和依赖方法构建的一个自动化工具。

使用:

在makefile中编写一些对应的指令,例如:

//test依赖于test.c,这是依赖关系
test:test.c
	gcc -o test test.c     //依赖方法                                                       
.PHONY:clean    //被.PHONY声明过后可以多次执行    
clean:      	//依赖关系可以为空,生成伪目标
	rm -f test

在命令行中直接写make默认会调用第一条的依赖关系和依赖方法,并且打印出相对应的指令,如果调用clean或者其他的指令,make clean,例如:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eTqQ0L6b-1676016477775)(C:\Users\JRG\AppData\Roaming\Typora\typora-user-images\image-20230123160452954.png)]

但是我们重复执行make,也就是重复编译.c文件,默认是不可以的,因为test可执行程序文件是最新的。判断条件:test这个可执行文件最后一次的修改时间是在test.c的最后一次修改时间之后,说明这个test文件是最新的,反之,如果test.c文件的修改时间在test修改时间之后,说明test.c在生成可执行文件之后又一次做了修改,test就不是最新的,这时候才可以再编译。

在这里插入图片描述

除非被.PHONY修饰

在这里插入图片描述

sudo命令

在普通用户下,如果指令操作权限不够,sudo可以进行提权,无视权限,相当于root,默认普通用户不能用sudo,因为创建的普通用户没有添加到被系统信任的名单中,添加时需要先转换到root身份,找到/etc/sudoers这个文件,进行修改添加

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OjS4fpf4-1676016477778)(C:\Users\JRG\AppData\Roaming\Typora\typora-user-images\image-20230123162449020.png)]

git

git是一个版本管理工具

常用的git命令:

git --version //显示git版本编号
git clone 仓库地址  //克隆远端仓库到本地
git add . //添加仓库目录下没有被添加到暂存区的文件
git commit -m "提交说明,不要随便瞎写"  //把暂存区的文件提交到本地仓库
git push  //提交本地仓库内变更的内容到远端仓库
git log  //查看历史提交记录

gdb调试器

gdb是一个程序调试器,可以帮助程序员确定bug的位置。

gdb命令:

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值