Linux工具使用

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会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。

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

  2. 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

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

相关推荐
frank00600711 分钟前
linux 使用mdadm 创建raid0 nvme 磁盘
linux·运维
绿白尼3 分钟前
进程与线程
linux
iangyu4 分钟前
linux命令之pwdx
linux·运维·服务器
C语言扫地僧25 分钟前
Docker 镜像制作(Dockerfile)
linux·服务器·docker·容器
Xinan_____33 分钟前
Linux——高流量 高并发(访问场景) 高可用(架构要求)
linux·运维·架构
HPC_fac1305206781634 分钟前
RTX 4090 系列即将停产,RTX 5090 系列蓄势待发
服务器·人工智能·gpu算力
周伯通*42 分钟前
Windows上,使用远程桌面连接Ubuntu
linux·windows·ubuntu
苹果醋31 小时前
react 路由 react-router/react-router-dom
运维·nginx
Spring-wind1 小时前
【linux】 date命令
linux
稳联技术1 小时前
汽车焊机数据通信:Profinet转Canopen网关的神奇连接
服务器·网络·汽车