Linux工具使用

news2024/11/13 10:40:13

Linux编辑器-vim使用

1.vim的基本概念

在vim中,主要的三种模式分别是命令模式,插入模式和底行模式。

正常/普通/命令模式(Normal mode) 控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode

插入模式(Insert mode) 只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。该模式是我们后面用的最频繁的编辑模式。

末行模式(last line mode) 文件保存或退出,也可以进行文件替换,找字符串,列出行号等操作。 在命令模式下,shift+: 即可进入该模式。:

总结:

2.vim的基本操作

进入vim,在系统提示符号输入vim之后,是出于Normal mode,我们需要切换到Insert mode才能输入文字

[root@VM-16-4-centos ~]# vim test.c

退出vim及保存文件,需要进入底行模式;

  • w (保存当前文件)
  • wq (输入wq,存盘并退出)
  • q! (输入q!,不存盘强制退出vim) 

3.vim正常模式命令集

插入模式

按【i】切换到插入模式,按【i】键进入插入模式后是从光标当前位置开始输入文件

按【a】进入插入模式后,是目前光标所在位置的下一个位置开始输入文字

按【o】进入插入模式后,是插入新的一行,从行首开始输入文字。

移动光标

首先,vim可以使用键盘上的上下左右来控制,但是正规的vim是用小写字母【h】【j】【k】【l】,来分别控制左,下,上,右。

按【G】:移动到文章的最后

按【$】:移动到光标所在行的”行尾“

按【^】:移动到光标所在行的”行首“

按【w】:光标跳到下个字的开头

按【e】:光标跳到下个字的字尾

按【b】:光标回到上个字的开头

按【gg】:进入文本开始

按【shift+g】:进入文本末端

删除文字

「x」:每按一次,删除光标所在位置的一个字符

「#x」:例如,「6x」表示删除光标所在位置的“后面(包含自己在内)”6个字符

「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符

「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符

「dd」:删除光标所在行

「#dd」:从光标所在行开始删除#行

复制

「yw」:将光标所在之处到字尾的字符复制到缓冲区中。

「#yw」:复制#个字到缓冲区

「yy」:复制光标所在行到缓冲区。

「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。

「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完 成复制与粘贴功能。

替换

【r】:替换光标所在处的字符

【R】:替换光标所到之处的字符,直到按下【Esc】键为止

撤销上一次操作

【u】:撤销最近的一次操作,按多次将会执行多次恢复。

【ctrl+r】:撤销的恢复

更改

【cw】:更改光标所在处的字到字尾处

【c#w】:表示更改#个字

跳到指定行

【ctrl】+【g】列出光标所在行的行号

【#G】:#代表某个数字,表示移动光标至文章的第#行行首。

4.vim末行模式命令集

  • 列出行号 : 【set nu】,输入之后会在文件中的每一行前面列出行号
  • 跳到文件中的某一行: 【#】号表示一个数字,在冒号后面输入一个数字,再按回车键就会跳到该行。
  • 查找字符 【/关键字】,先按/,再按回车,如果第一次找的关键字,不是我们想要的,可以一直按【n】会往后寻找我们想要的关键字
  • 【?关键字】:先按【?】键,再输入我们想要的字符,如果第一次找的关键字,不是我们想要的,可以一直按【n】会往前寻找我们想要的关键字
  • 保存文件 【w】在冒号后面输入字符【w】就可以将文件保存起来
  • 离开vim :【q】,按q键就是退出,如果无法离开就在【q】后跟一个!,强制退出。 【wq】是在退出时进行存盘。

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

1.背景

gcc是用来编译C语言代码的,g++是用来编译C++代码的,这两个编译器再指令和编译过程中几乎是一样的。所以还是以g++为主进行介绍。

2.gcc如何完成

2.1预处理(头文件和宏的替换)

在预处理过程中,会将我们代码中的宏定义进行替换,同时将头文件写入到我们的代码前面,同时会删除我们写的注释。下面是我们的操作指令。

g++ -E #.cpp -o #.i

 g++是指我们想要使用的编译器是g++,“-E”是代表让编译器在预处理结束之后停止编译过程。“#.cpp”则是我们写好的c++代码文件。“-o”是指利用前面处理过的内容生成一个目标文件,"#.i"是我们的目标文件的名字,".i"是文件的后缀。

2.2编译(生成汇编代码)

在编译阶段,编译器会将预处理过的C++文件翻译成汇编语言的文件

g++ -s #.i -o #.s

 2.3汇编(生成二进制文件)

在汇编阶段,编译器会将编译后的汇编文件翻译成为二进制文件

g++ -c #.s -o #.o

2.4链接(生成可执行文件)

 1.作用

在预处理阶段,编译器会将头文件中的内容拷贝到我们写的代码文件中,但是我们的头文件中只包含了函数的声明,仅仅是告诉编译器我们在文件中确实存在某个函数,但是没有告诉编译器我们如何实现的函数,而链接就是将函数具体实现的过程与我们的代码进行联系,从而生成一个可执行的文件。

2.静态链接和动态链接

写有具体的函数实现方法的库文件分为两类,一类是静态库,一类是动态库。

对于静态链接,编译q器就会将静态库中的代码实现拷贝到我们的代码中,优点是,如果我们的静态库丢失,代码文件也可以独立运行,缺点是,由于我们需要拷贝大量的代码,所以我们会浪费很多空间。  

对于动态链接,并不会将代码实现进行拷贝,而是和动态库建立一种联系,让编译器了解到函数的具体实现,优点是能够节约大量的空间,但是一旦丢失,则文件将无法运行 。

Linux项目自动化构建工具-make/makefile

1.介绍

make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,Delphi的make,Visual C++的nmake,Linux下GNU的make。

make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

2.使用make/mkefile来构建项目

make是如何工作的,在默认的方式下,也就是我们只输入make命令。

1. make会在当前目录下找名字叫“Makefile”或“makefile”的文件。

2. 如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“hello”这个文件, 并把这个文件作为最终的目标文件。

3. 如果hello文件不存在,或是hello所依赖的后面的hello.o文件的文件修改时间要比hello这个文件新(可 以用touch测试),那么,他就会执行后面所定义的命令来生成hello这个文件。

4. 如果hello所依赖的hello.o文件不存在,那么make会在当前文件中找目标为hello.o文件的依赖性,如果 找到则再根据那一个规则生成hello.o文件。(这有点像一个堆栈的过程)

5. 当然,你的C文件和H文件是存在的啦,于是make会生成 hello.o 文件,然后再用 hello.o 文件声明 make的终极任务,也就是执行文件hello了。

6. 这就是整个make的依赖性,make会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

7. 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。

8. make只管文件的依赖性,即,如果在我找了依赖关系之后,冒号后面的文件还是不在,那么对不起, 我就不工作啦。

3.项目清理

工程是需要被清理的,像clean这种,没有被第一个目标文件直接或间接关联,那么它后面所定义的命令将不会被自动执行,不过,我们可以显示make执行。make clean, 以此来清除所有的目标文件,以便重编译。但是一般我们这种clean的目标文件,我们将它设置为伪目标,用.PHONY修饰,伪目标的特性是总能被执行。

使用git命令行

1.安装git

首先使用命令安装git

yum install git

2.创建项目

我们需要登录自己的码云,在上面创建一个仓库。

3.下载项目到本地

创建好一个放置代码的目录

git clone [url]

url需要上面我们创建好的项目的链接。 

4.提交项目到云端使用方法

1.git add 

git add [文件名]

将代码放到刚才下载好的目录中,需要用git管理的文件告知git

2.git commit

提交改动到本地

git commit ""

 提交的时候应该注明提交日志,描述改动的详细内容

3.git push

同步到远端服务器上

git push

此时,我们再打开我们的码云,刷新一下,就能看到代码的改动了。

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

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

相关文章

【软件工程】软件生命周期(生存周期)

考点3 软件生命周期(生存周期) 一、定义 软件产品或软件系统从设计、投入使用到被淘汰的全过程。 二、3周期 题目 一、判断题 二、选择题

冲击大厂算法面试=>链表专题【链表反转】

目录标题 最基础的反转链表上代码题解呀实在不会的时候记住 最基础的反转链表 上代码 class Solution {public ListNode reverseList(ListNode head) {ListNode pre null;ListNode cur head;while(cur ! null){ListNode nextNode cur.next;cur.next pre;pre cur;cur nex…

[HZNUCTF 2023 preliminary]flask

[HZNUCTF 2023 preliminary]flask 点开之后页面如图所示: 猜测是SSTI模板注入,先输入{7*7},发现模板是倒序输入的: 然后我们输入}}‘7’*7{{返回777777,这是jinja2模板: 我们需要让用户输入一个字符串,对其…

计算机视觉基础. 1 学习导论

1 .引言 学习的目的是从过去的经验中吸取教训,以解决未来的问题。通常,这涉及搜索解决问题过去实例的算法。然后,该算法可以应用于该问题的未来实例。 过去和未来不一定指日历日期;相反,它们指的是学习者之前看到的内…

Windows下devecostudio-windows-3.1.0.501的下载与安装教程

Windows下devecostudio-windows-3.1.0.501的下载与安装教程 1.华为开发者联盟 2.Deveco Studio下载 一、注册华为账号 进入华为开发者联盟,注册华为账号(如果有手机华为账号,这里通用) 二、下载Deveco Studio3.1.0.501 链接&am…

C++入门基础知识39——【关于C++ 运算符——位运算符】

成长路上不孤单😊【14后,C爱好者,持续分享所学,如有需要欢迎收藏转发😊😊😊😊😊😊😊!!!!&#xff…

GitHub的AI未来:CEO Thomas Dohmke深入解析

在近期的一次深入访谈中,GitHub的首席执行官Thomas Dohmke分享了他对AI在编程领域未来的看法,GitHub Copilot的成就,以及在微软生态下保持独立性的重要性。以下是对这次讨论的精华总结。 GitHub在AI领域的定位 Thomas Dohmke认为,AI技术需要竞争来推动发展。他指出,GitH…

类与ES6类之间的继承

前言 ● 下面是之前学习ES6 classes的代码 class PersonCl {constructor(fullName, birthYear) {this.fullName fullName;this.birthYear birthYear;}calcAge() {console.log(2037 - this.birthYear);}greet() {console.log(你好${this.fullName});}get age() {return 2037…

JVM 锁的种类

优质博文:IT-BLOG-CN 一、JVM 锁【偏向锁|轻量级锁|重量级锁】 对象头[每个对象都具有对象头] Mark:对象头的标记(32位),描述对象的hash、锁信息、垃圾回收标记、年龄;内容包括:①、指向锁记录…

OpenShift 与 Rancher

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Nacos2.4.1安装

Nacos官网| Nacos 配置中心 | Nacos 下载| Nacos 官方社区 | Nacos 官网 下载后解压 进入解压目录/bin window启动命令 startup.cmd -m standalone 用的JDK环境17 遇到报错 第一个办法 退回2.4.0哈哈哈 nacos配置为JDK1.8,而JDK17开始使用按模块引入包语法…

阀控多功能智能水表是什么?

阀控多功能智能水表是一种集成了多种先进技术和功能的新型水表,主要用于精确计量和控制水流量。这类水表不仅能够提供准确的数据记录,还具备远程控制、故障报警、数据分析等多种智能功能,适用于住宅、商业和工业等多种应用场景。本文将深入探…

泽众P-One性能测试平台中的环境管理与施压集群分配

P-One是泽众软件自主研发的一站式性能测试平台,在软件性能测试中发挥着重要作用。其中,环境管理和施压集群分配是P-One的关键功能,对于确保测试的准确性和有效性至关重要。 一、环境部署 P-One可以对已安装的压力机进行集中管理,…

240828-Gradio结合Html+Css+Javascript制作年历

A. 最终效果 需求描述 html javascript css 按年生成2016年至2116年的日历,要求如下: 二行六例,每个单元是一个月,且每个单元包含周次信息通过背景为红色的圆圈高亮显示当前的日期第一页显示今年,鼠标左边或键盘左键…

电梯按钮检测检测系统源码分享 # [一条龙教学YOLOV8标注好的数据集一键训练_70+全套改进创新点发刊_Web前端展示]

电梯按钮检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

RKNPU入门与实践 ---- 混合量化

目录 前言 一、混合量化 1.1 概念介绍 1.1.1 hybrid_quantization_step1 1.1.2 hybrid_quantization_step2 二、实际编写程序 2.1混合量化第一阶段 2.2 混合量化第二阶段 三、混合量化第一步接口参数proposal 前言 为什么要进行混合量化? 答案&#x…

Zookeeper未授权访问的漏洞处理

echo envi |nc 192.168.0.1 2181 这个命令可以用于获取Zookeepr(下面有zk代替)目标服务器的环境信息、部署路径、版本等敏感信息。如果这些信息被恶意利用,确实可能导致安全漏洞,进而对网络和服务器安全构成威胁。 1.执行zkCli.…

XSS LABS - Level 17 过关思路

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 进入靶场,空空如也,右击页面,查看网页源码,找找可疑点: 可以看到,靶场默认传参,都传…

初赛试题-2022年CSP-J2

目录 先言 二、阅读程序(判断题1.5分,选择题3分,共40分) (1) 16. 17. 18. 19. 20. 21. (2) 22. 23. 24. 25. 26. 27. (3) 28. 29. 30. 3…

18.神经网络 - 非线性激活

神经网络 - 非线性激活 使用到的pytorch网站: Padding Layers(对输入图像进行填充的各种方式) 几乎用不到,nn.ZeroPad2d(在输入tensor数据类型周围用0填充) nn.ConstantPad2d(用常数填充) 在 …