yum
-管理软件包的工具Yum(Yellowdog Updater Modified):
Yum是Linux系统中用于管理软件包的工具,类似于手机上的应用商店。是基于 RPM(Red Hat Package Manager)的系统,用于管理 RPM 软件包 ,它提供了一种方便的方式来搜索、下载、安装和卸载软件包,使得软件的管理变得简单而高效。
安装软件的方式:
注意:
yum
在安装软件时需要从服务器上下载RPM包,并且在同一时刻只能允许一个yum
进程进行安装操作。这是因为yum
在安装过程中可能会修改系统的配置和文件,如果同时有多个yum
进程进行操作,可能会导致不可预测的结果和系统不稳定性。yum
需要通过网络访问软件源来下载安装软件包 +--------------------------+ +----------------------+
| | | |
| 软件包服务器(软件源) | ---------> | 本地系统、云服务器 |
| | 下载软件包 | |
+--------------------------+ +----------------------+
我们删除,下载时是需要有root权限的。
选项:
-y
或 --assumeyes
:在提示时自动回答"yes"。-q
或 --quiet
:安静模式,减少输出信息以下是使用yum的常用操作(这里只介绍部分了):
更新软件包列表:
sudo yum update
这将更新可用软件包的列表,以确保您系统上的所有软件包都是最新的。
搜索软件包:
yum search package_name
使用此命令搜索特定软件包。例如,如果要搜索Apache软件包,可以使用yum search apache
。
安装软件包:
sudo yum install package_name
使用此命令安装特定的软件包。例如,要安装Apache服务器,可以使用yum install httpd
。
更新软件包:
sudo yum update package_name
使用此命令更新特定的软件包。例如,要更新Apache服务器,可以使用yum update httpd
。
删除软件包:
sudo yum remove package_name
使用此命令删除特定的软件包。例如,要删除Apache服务器,可以使用yum remove httpd
。
列出已安装的软件包:
yum list installed
使用此命令列出所有已安装的软件包。
清理缓存:
sudo yum clean all
使用此命令清理Yum缓存,以释放磁盘空间。
各种各样的软件和包服务器由不同的组织、个人或机构提供。这些服务器可以分为两类:基础软件源和拓展软件源。
我们可以通过:来安装拓展软件源
yum install -y epel-release
使用:yum list | grep vim
该命令用于在 yum 软件包列表中查找包含 “vim” 关键字的软件包。这样做可以过滤出与 Vim 相关的软件包信息,使结果更易于阅读和理解。
yum list
:列出所有可用的软件包。|
:管道符号,将 yum list
的输出作为 grep
命令的输入。grep vim
:使用 grep 工具搜索包含 “vim” 关键字的行。第一列:
x86_64
后缀表示64位系统的安装包, “i686” 后缀表示32位系统安装包. 选择包时要和系统匹配第二列:软件包的版本号 第三列:软件包的存储库来源
vim
-多模式的文本编辑器vim(Vi IMproved)是一个功能强大的文本编辑器,常用于在终端中编辑文本文件。它是 Unix 系统下的一个经典编辑器,具有丰富的功能和灵活的配置选项 vim 提供了多种编辑模式,包括普通模式、插入模式、命令行模式(进入默认这个)等,让用户可以高效地进行编辑操作
我们使用: vim 文件名 即可直接进入到文件中 退出vim及保存文件,在[正常模式]下,按一下「:」冒号键进入「Last line mode」,例如:
w (保存当前文件)
wq(保存并退出)
当前处于什么模式,在进入vim后,左下角能看到
三种模式之间的切换
在 Vim 中,命令模式(Normal Mode)是默认的模式,在这个模式下你可以执行各种编辑文本的操作。
以下是一些常用的命令模式下的操作:
这些操作都是在 Vim 的命令模式(Normal Mode)下使用的。在命令模式下,你可以通过按下不同的键来执行各种编辑文本的操作。这里详细说明一下你提到的一些常用操作:
i
键进入插入模式,光标将定位到当前位置之前,可以开始插入文字。a
键进入插入模式,光标将定位到当前位置之后,可以开始插入文字。o
键进入插入模式,在当前行的下方插入一个新的空行,光标将定位到新行的起始位置。h
、j
、k
、l
分别向左、下、上、右移动光标。w
和 b
分别跳到下一个单词的开头和上一个单词的开头。^
跳到当前行的第一个非空字符处。$
跳到当前行的最后一个字符处。gg
跳到文件的开头,G
跳到文件的末尾。x
删除光标所在位置的字符,X
删除光标前一个字符。dd
删除当前行,ndd
删除当前行及其后的 n-1 行。yw
复制光标所在位置到单词末尾的内容,yy
复制整行。p
粘贴已经复制或删除的内容到光标位置后。r
替换光标所在位置的字符。u
撤销上一步操作,Ctrl + r
重做上一步操作的撤销。cw
更改光标所在位置到单词末尾的内容,c#w
更改指定数量的单词。:n
跳转至第 n 行,例如 :15
跳转至第 15 行。在 Vim 编辑器中,插入模式(Insert Mode)是用于输入和编辑文本的模式。在插入模式下,你可以直接在文本中插入、编辑和删除字符,就像在普通的文本编辑器中一样。
在插入模式下,你可以自由地编辑文本,直到按下 Esc
键退出插入模式,回到普通模式(Normal Mode)为止。插入模式是 Vim 编辑器中最常用的模式之一,能够有效地提高文本编辑的效率。
在使用末行模式之前,请确保您已经处于正常模式,按下「ESC」键,然后按下冒号「:」键即可进入末行模式。
要在文件中的每一行前面显示行号,可以使用以下命令:
:set nu
执行上述命令后,编辑器会在每一行前面显示行号。
要跳到文件的特定行,可以在冒号后输入行号,然后按回车键。例如,要跳到第 15 行,可以执行以下命令:
:15
执行上述命令后,编辑器会跳到文件的第 15 行。
Vim 提供了两种查找字符的方式:
/
进行向后查找。?
进行向前查找。例如,要向后查找某个关键字,可以执行以下命令:
/关键字
执行上述命令后,编辑器会开始向后查找包含指定关键字的文本。
如果要向前查找关键字,可以执行以下命令:
?关键字
执行上述命令后,编辑器会开始向前查找包含指定关键字的文本。
要保存文件,可以执行以下命令:
:w
执行上述命令后,编辑器会将文件保存到磁盘上,但不会退出编辑器。
要退出 Vim 编辑器,可以执行以下命令:
:q
执行上述命令后,如果文件未做过修改,编辑器会立即退出。如果文件已经做过修改,编辑器会提示保存文件或者放弃修改。
如果要强制退出而不保存修改,可以执行以下命令:
:q!
执行上述命令后,编辑器会立即退出,且不会保存任何修改。
如果想在退出之前保存文件,可以执行以下命令:
:wq
执行上述命令后,编辑器会保存文件并退出。
这些是一些常用的末行命令,可以帮助您更有效地编辑和管理文件。
批量注释:
Ctrl + v
进入可视块模式。hjkl
键选择要注释的区域,按 j
键向下移动选择。Shift + i
进入插入模式,并按下 =
符号添加注释符号。//
(或其他符号),然后按下 Esc
键退出插入模式。批量去注释:
Ctrl + v
进入可视块模式。hjkl
键选择已注释的区域。d
键删除选择的注释行。Esc
键退出可视块模式。Ctrl + v
进入可视块模式。hjkl
键选择要注释的区域,按 j
键向下移动选择。d
就可删除选中的区域gcc/g++
–Linux编译器gcc和g++是在Linux系统中常用的编译器,用于编译C和C++程序。
这两个编译器提供了丰富的功能和选项,可以将源代码文件编译成可执行文件。编译器可以处理多个源文件,并生成相应的目标文件,最后将目标文件链接在一起生成可执行文件。
这里二者用法几乎一样,我举例子用gcc
举例
格式: gcc [选项] 要编译的文件 [选项] [目标文件]
常用的选项:
编译过程通常包括以下四个阶段:
预处理(Preprocessing):
#include
)、宏替换(#define
)、条件编译(#ifdef
、#ifndef
等)等。所谓的头文件展开,本质是在预处理的时候,将头文件内容拷贝至源文件
gcc –E hello.c –o hello.i
选项-E
,该选项的作用是让 gcc 在预处理结束后停止编译过程。
选项-o
是指目标文件,.i
文件为已经过预处理的C原始程序
编译(Compiling):
gcc –S hello.i –o hello.s
选项-S
进行编译而不进行汇编,生成汇编代码
汇编(Assembling):
gcc –c hello.s –o hello.o
选项-c
就可看到汇编代码已转化为.o
的二进制目标代码了
连接(Linking):
gcc hello.o –o hello
注意这里是hello.o
的二进制代码文件
本质都是文件
.a
为后缀),其中包含了函数和数据,可以被多个程序使用。
.so
为后缀),其中包含了函数和数据,可以被多个程序使用。
在Linux里,gcc默认是进行动态链接的,使用动态库。想要使用静态链接,可以用:
gcc test.c -static
make
是一个用于自动化构建项目的工具,通常配合一个名为 Makefile
的文件使用。Makefile
文件包含了一系列规则和命令,描述了项目中各个文件之间的依赖关系以及如何构建和编译项目。
以下是 Makefile
文件的基本结构:
target: dependencies
command
target
是一个需要构建的目标文件名,可以是可执行文件、目标文件或者是伪目标(如 clean
等)。dependencies
是构建 target
所依赖的文件列表。command
是构建 target
所执行的命令。例如,下面是一个简单的 Makefile
文件示例:
test_make:test.c
gcc -o test_make test.c
clean:
rm -f test_make
在Makefile中,依赖关系表示目标文件依赖于哪些其他文件,而依赖方法表示如何生成目标文件
上面的例子里: 在这个简单的Makefile中,存在一个目标文件
test_make
和一个伪目标文件clean
。下面是它们的依赖关系和依赖方法的解释:
test_make
的依赖关系是源文件 test.c
。这意味着在生成 test_make
目标文件之前,必须先生成 test.c
文件。test_make
是一个可执行文件,它依赖于 test.c
文件的存在和正确性。如果 test.c
发生了变化(例如,被修改或重命名),则需要重新生成 test_make
。test_make
,依赖方法是通过 gcc
编译器将 test.c
源文件编译为可执行文件 test_make
。clean
并没有实际的依赖关系,因此它不会触发任何依赖方法。rm -f test_make
是用来清理目标文件的命令。当执行 make clean
命令时,它将删除名为 test_make
的文件。make
工具构建目标文件的文件。当你执行 make
命令时,make
工具会查找当前目录下的名为 Makefile
或 makefile
的文件,并按顺序执行其中定义的目标。make
工具会从上到下扫描Makefile文件,并构建第一个目标。这意味着,如果你在Makefile中定义了多个目标,只有第一个目标会被构建。make
命令时,make
工具会比较每个目标文件和它所依赖的源文件的修改时间。如果源文件的修改时间比目标文件的修改时间更晚,或者目标文件不存在,make
工具会执行构建该目标文件的命令。否则,如果目标文件的修改时间比源文件的修改时间更晚,make
工具认为该目标文件是最新的,不需要重新构建。make
工具也会比较可执行文件和它所依赖的源文件的修改时间。如果可执行文件的修改时间比源文件的修改时间更晚,或者源文件的修改时间比最新的可执行文件的修改时间更晚,那么 make
工具会重新构建可执行文件。伪目标是 Makefile
中的一种特殊类型的目标,它不表示一个真实的文件,而是表示一个命令序列或操作。使用伪目标可以告诉 make
工具,该目标不对应任何实际文件,因此总是需要执行其后定义的命令。这在执行一些通用操作,比如清理、打包等情况下非常有用。
在 Makefile
中,使用 .PHONY
来声明一个目标为伪目标。这样,当 make
命令执行时,就会忽略目标对应文件的存在与否,直接执行后续定义的命令。
.PHONY: clean
clean:
rm -f *.o
clean
是一个伪目标,它不代表任何实际文件。无论是否存在名为clean
的文件,执行make clean
命令时,都会执行rm -f *.o
命令来清理所有.o
文件。
@ 和 ^ 是 make 中的自动化变量,用于表示目标和依赖的列表。具体含义如下:
$@
表示目标文件的名称。$^
表示所有依赖文件的列表。这些自动化变量通常用于构建命令中,以方便地引用目标和依赖文件。例如:
test: test.c
gcc -o $@ $^
@ 会被替换为目标文件 test,^ 会被替换为所有依赖文件列表,即 test.c。因此,执行 make test 命令时,相当于执行 gcc -o test test.c,将 test.c 编译成可执行文件 test。
make
命令时,make
工具会在当前目录下查找名为 Makefile
或 makefile
的文件。Makefile
文件,make
将会查找文件中的第一个目标(target),并把它作为最终的目标文件。make
将会执行后面定义的命令来生成目标文件。make
将会在当前文件中查找目标文件的依赖性,并根据规则生成缺失的依赖文件。make
会按照依赖关系逐层构建,直到生成最终的目标文件。make
会直接退出并报。但对于生成目标文件时出现的错误,或编译不成功的情况,make
不会立即退出,而是继续执行后续的规则。make
工具只关心文件之间的依赖关系,如果依赖关系满足,就会执行后续的命令来生成目标文件。如果依赖关系不满足,make
将不会进行后续操作。好啦这次就先到这里了,下次会给大家带来进程相关的知识啦!!