Linux 软件包管理器 yum
截至2021年,Yum(全称为"Yellowdog Updater, Modified")是一个用于管理RPM(Red Hat Package Manager)软件包的软件包管理器。它最初是由Duke University的Linux用户社区开发的,并且现在被广泛用于许多基于RPM的Linux发行版,如Red Hat Enterprise Linux(RHEL)、CentOS和Fedora。
Yum的主要功能是自动下载、安装、更新和删除软件包,使系统管理员和用户能够轻松地管理他们的Linux系统上的软件。它通过连接到预配置的软件源(repository)来获取软件包和其依赖项。这些软件源可以是官方的发行版仓库,也可以是由第三方维护的社区仓库。
使用Yum管理软件包非常简单,用户只需在终端中运行适当的Yum命令来执行所需的操作。以下是一些常用的Yum命令:
1. 安装软件包:
yum install 软件包名称
2. 更新已安装的软件包:
yum update
3. 更新特定软件包:
yum update 软件包名称
4. 删除软件包:
yum remove 软件包名称
5. 搜索软件包:
yum search 关键词
需要注意的是,由于软件源的不同,某些特定的软件包可能只在特定的发行版或版本中可用。因此,在使用Yum时,最好了解系统上所连接的软件源和软件包的可用性。
另外,值得一提的是,随着时间的推移,Linux发行版可能会采用其他的软件包管理器,比如在RHEL 8及更新版本中,它已经转向使用dnf(Dandified Yum)作为默认的软件包管理器,dnf在功能上与Yum类似。因此,在未来的情况下,可能会有新的变化。
关于 rzsz
rz和sz是用于在Linux和Unix系统上进行文件传输的命令行工具。它们通常用于通过终端连接(如SSH)在本地计算机和远程计算机之间传输文件。
- rz:rz用于从本地计算机向远程计算机上传文件。它使得将本地文件传输到远程计算机变得非常简单。通常,在SSH会话中,你可以使用rz来选择要上传的文件,然后将文件从本地计算机发送到远程计算机。
- sz:sz用于从远程计算机向本地计算机下载文件。当你在SSH会话中需要从远程计算机获取文件时,可以使用sz命令将文件从远程计算机下载到本地计算机。
这些命令通常与终端仿真器一起使用,例如在使用SSH连接到远程服务器时。在执行这些命令之前,确保本地和远程计算机都已安装rz和sz工具,通常它们属于rzsz软件包。
以下是使用rz和sz的基本示例:
1. 将本地文件file.txt上传到远程服务器:
rz file.txt
2. 从远程服务器下载文件remote_file.txt到本地:
sz remote_file.txt
需要注意的是,rz和sz不是标准的Linux命令,可能需要在一些系统上额外安装。在某些系统中,特定的终端仿真器可能已经默认支持这些命令。
另外,rz和sz还可以通过Zmodem协议进行文件传输,这种协议具有自动纠错和断点续传等功能,因此在不稳定的网络环境下,它们可能是更好的选择。
Linux开发工具
Linux编辑器-vim使用
vim的基本概念
Vim(Vi IMproved)是一个功能强大且高度可定制的文本编辑器,它在Linux和其他类Unix系统中得到广泛使用。Vim 是 Unix 系统上的一个改进版本,最初是基于 Vi(Visual Editor)开发的。以下是 Vim 的一些基本概念和特点:
模式(Modes):
Vim 有不同的工作模式,包括 Normal 模式、插入模式、Visual 模式和命令行模式。
- Normal 模式:默认进入 Vim 的模式,用于导航、删除、复制等非插入操作。
- 插入模式:用于编辑文本内容,可以输入和修改文本。
- Visual 模式:用于选中文本块,方便复制、删除或替换选中的内容。
- 命令行模式:用于执行命令,如保存、退出、搜索等。
Vim 的强大之处在于其高度可定制性和丰富的命令和快捷键,使得用户可以高效地编辑和处理文本。它可能需要一些时间来学习和适应,但一旦掌握了基本概念,它会成为一个非常强大且高效的编辑器。
vim的基本操作
1. 打开文件:
vim 文件名
2. 进入编辑模式(插入文本):
在 Normal 模式下按下 `i` 键或 `a` 键,或者使用 `I` 键在行首插入,`A` 键在行尾插入。
3. 退出编辑模式:
在编辑模式下按下 `Esc` 键,回到 Normal 模式。
4. 保存文件:
在 Normal 模式下,输入 `:w` 并按下 `Enter` 键。
5. 保存并退出:
在 Normal 模式下,输入 `:wq` 或 `ZZ` 并按下 `Enter` 键,保存文件并退出 Vim。
6. 不保存并退出:
在 Normal 模式下,输入 `:q!` 并按下 `Enter` 键。
7. 移动光标:
在 Normal 模式下,使用方向键、`h`(左)、`j`(下)、`k`(上)、`l`(右)移动光标。
8. 删除文本:
在 Normal 模式下,使用 `x` 删除光标所在位置的字符,使用 `dd` 删除整行。
9. 复制和粘贴文本:
在 Normal 模式下,使用 `yy` 复制整行,使用 `p` 粘贴剪切板内容。
10. 撤销和重做操作:
在 Normal 模式下,使用 `u` 撤销上一步操作,使用 `Ctrl + r` 重做操作。
11. 搜索文本:
在 Normal 模式下,输入 `/关键词` 并按下 `Enter` 键进行向下搜索,输入 `?关键词` 并按下 `Enter` 键进行向上搜索。使用 `n` 跳转到下一个匹配,使用 `N` 跳转到上一个匹配。
12. 替换文本:
在 Normal 模式下,输入 `:s/旧词/新词/g` 并按下 `Enter` 键,将当前行中所有匹配的旧词替换为新词。加上 `g` 参数表示替换所有匹配,不加则只替换每行第一个匹配。
13. 撤销多个操作:
在 Normal 模式下,输入 `:undo [次数]` 并按下 `Enter` 键,撤销指定次数的操作。
14. 跳转到指定行:
在 Normal 模式下,输入 `:行号` 并按下 `Enter` 键,将光标跳转到指定行号。
15. 在当前行的末尾添加新行:
在 Normal 模式下,输入 `o` 键,将会在当前行的下方添加新行并进入插入模式。
16. 在当前行的前面添加新行:
在 Normal 模式下,输入 `O` 键,将会在当前行的上方添加新行并进入插入模式。
17. 删除光标处到行尾的内容:
在 Normal 模式下,输入 `D` 键,将会删除光标处到行尾的内容。
18. 删除光标处到行首的内容:
在 Normal 模式下,输入 `d0` 键,将会删除光标处到行首的内容。
19. 删除整行并进入插入模式:
在 Normal 模式下,输入 `S` 键,将会删除整行内容并进入插入模式。
20. 复制光标处到行尾的内容:
在 Normal 模式下,输入 `Y` 键,将会复制光标处到行尾的内容。
21. 保存所有打开的文件:
在 Normal 模式下,输入 `:wa` 并按下 `Enter` 键,保存所有打开的文件。
22. 快速跳转到文件开头或结尾:
在 Normal 模式下,输入 `gg` 跳转到文件开头,输入 `G` 跳转到文件结尾。
23. 复制当前行并粘贴到指定行:
在 Normal 模式下,使用 `yy` 复制当前行,然后移动到目标行,使用 `p` 粘贴内容。
24. 复制当前行并粘贴到指定行的前面:
在 Normal 模式下,使用 `yy` 复制当前行,然后移动到目标行,使用 `P` 粘贴内容。
25. 删除光标处到单词末尾的内容:
在 Normal 模式下,使用 `dw` 删除光标处到单词末尾的内容。
26. 删除光标处到单词开头的内容:
在 Normal 模式下,使用 `db` 删除光标处到单词开头的内容。
27. 在 Visual 模式下复制选中的文本块:
在 Visual 模式下选中文本块后,按下 `y` 复制选中的文本。
28. 在 Visual 模式下剪切选中的文本块:
在 Visual 模式下选中文本块后,按下 `d` 剪切选中的文本。
29. 取消选择(取消高亮):
在 Normal 模式下按下 `:noh` 并按下 `Enter` 键,取消当前搜索结果的高亮。
30. 打开多个文件:
在 Normal 模式下,输入 `:e 文件名` 并按下 `Enter` 键打开一个新文件。
使用 `:n` 或 `:next` 切换到下一个文件,使用 `:N` 或 `:prev` 切换到上一个文件。
31. 在 Normal 模式下复制当前行到指定行:
输入 `:行号 y` 并按下 `Enter` 键,将会复制当前行的内容到指定行号处。
32. 在 Normal 模式下移动当前行到指定行:
输入 `:行号 m .` 并按下 `Enter` 键,将会移动当前行到指定行号处。
33. 在 Normal 模式下删除光标处到行末的内容:
输入 `d$` 或 `D` 键,将会删除光标处到行末的内容。
34. 在 Normal 模式下删除光标处到行首的内容:
输入 `d^` 键,将会删除光标处到行首的内容。
35. 在 Normal 模式下删除光标所在的单词:
输入 `dw` 或 `daw` 键,将会删除光标所在的单词。
36. 在 Normal 模式下删除光标所在的单词并进入插入模式:
输入 `ciw` 键,将会删除光标所在的单词并进入插入模式。
37. 在 Normal 模式下重复上一次的修改操作:
输入 `.` 键,将会重复上一次的修改操作。
38. 在 Normal 模式下跳转到匹配的括号:
将光标放在括号上,然后输入 `%` 键,将会跳转到匹配的括号。
39. 在 Normal 模式下设置行号显示:
输入 `:set number` 并按下 `Enter` 键,将会在左侧显示行号。
40. 在 Normal 模式下取消行号显示:
输入 `:set nonumber` 并按下 `Enter` 键,将会取消显示行号。
41. 在 Normal 模式下切换搜索时忽略大小写:
输入 `:set ignorecase` 并按下 `Enter` 键,将会忽略搜索时的大小写。
42. 在 Normal 模式下切换搜索时区分大小写:
输入 `:set noignorecase` 并按下 `Enter` 键,将会区分搜索时的大小写。
43. 在 Normal 模式下切换相对行号和绝对行号显示:
输入 `:set relativenumber` 或 `:set rnu` 切换为相对行号显示,
输入 `:set number` 或 `:set nu` 切换为绝对行号显示。
简单vim配置
简单的 Vim 配置可以帮助你提高编辑效率和改善编辑体验。下面是一个简单的 Vim 配置示例,你可以将以下内容添加到 `~/.vimrc` 文件中(如果文件不存在,则可以创建一个新文件并将内容复制进去):
" 启用语法高亮
syntax enable
" 设置行号显示
set number
" 设置自动缩进
set autoindent
set smartindent
set tabstop=4
set shiftwidth=4
" 设置搜索时忽略大小写
set ignorecase
set smartcase
" 启用备份文件
set backup
set backupdir=~/.vim/backup
" 显示匹配的括号
set showmatch
" 启用自动补全括号
inoremap ( ()<Left>
inoremap [ []<Left>
inoremap { {}<Left>
inoremap " ""<Left>
inoremap ' ''<Left>
" 设置颜色主题(可选)
"colorscheme desert
" 启用行内替换
set incsearch
" 启用鼠标支持(在图形界面中)
"set mouse=a
" 设置自动换行
set wrap
" 设置搜索高亮时的背景色
highlight Search ctermbg=yellow
" 设置保存时自动去除行尾空格
autocmd BufWritePre * %s/\s\+$//e
" 设置快速保存文件(F2键)
noremap <F2> :w<CR>
保存配置后,重启 Vim 或执行 `:source ~/.vimrc` 使配置生效。现在,你的 Vim 编辑器将按照你的配置进行工作。
Linux编译器-gcc/g++使用
GCC(GNU Compiler Collection)是一个强大的编译器套件,包含多个编程语言的编译器,其中 g++ 是 GCC 中用于编译 C++ 代码的工具。以下是在 Linux 中使用 gcc/g++ 编译器的基本用法:
1. 安装 gcc/g++ 编译器:
如果你的 Linux 系统没有安装 gcc/g++ 编译器,可以使用包管理器来安装。对于 Ubuntu 或 Debian 系统,可以执行以下命令:
```
sudo apt-get update
sudo apt-get install gcc g++
```
对于其他 Linux 发行版,请参考相应的包管理器命令进行安装。
2. 编写 C 或 C++ 源代码文件:
创建一个以 .c 结尾的 C 源代码文件或以 .cpp 结尾的 C++ 源代码文件,比如 hello.c 或 hello.cpp。
3. 使用 gcc 编译 C 源代码:
```
gcc -o 可执行文件名 源代码文件.c
```
例如,编译 hello.c 并生成可执行文件 hello:
```
gcc -o hello hello.c
```
4. 使用 g++ 编译 C++ 源代码:
```
g++ -o 可执行文件名 源代码文件.cpp
```
例如,编译 hello.cpp 并生成可执行文件 hello:
```
g++ -o hello hello.cpp
```
5. 运行编译后的可执行文件:
```
./可执行文件名
```
例如,运行编译后的 hello 可执行文件:
```
./hello
```
6. 编译时指定 C/C++ 版本:
如果你的代码使用了较新的 C/C++ 特性,可能需要指定编译器的版本来确保代码能够正确编译。可以使用 `-std` 参数指定 C/C++ 的版本。例如,指定使用 C++11 标准来编译:
```
g++ -std=c++11 -o 可执行文件名 源代码文件.cpp
```
7. 调试信息和优化选项:
在开发阶段,你可能希望在编译时包含调试信息以便进行调试。可以使用 `-g` 参数来启用调试信息。另外,你可以使用优化选项来提高生成的可执行文件的性能。常见的优化选项有 `-O1`、`-O2`、`-O3` 等。
Linux调试器-gdb使用
GDB(GNU Debugger)是Linux下的一个强大调试器,用于帮助程序员调试C、C++以及其他编程语言的程序。它可以帮助你在程序运行时进行跟踪、查看变量的值、定位错误和找到程序崩溃的原因。以下是GDB的基本使用方法:
1. 编译程序时添加调试信息:首先,你需要在编译程序时添加调试信息。使用gcc或g++编译器时,可以加上`-g`选项来生成包含调试信息的可执行文件。
例如,编译C程序:
```
gcc -g -o program_name source_file.c
```
编译C++程序:
```
g++ -g -o program_name source_file.cpp
```
2. 启动GDB:在终端中运行`gdb`命令,然后在GDB中启动你的程序:
```
gdb program_name
```
3. 在GDB中运行程序:在GDB中使用`run`命令来运行你的程序:
```
(gdb) run
```
4. 设置断点:你可以使用`break`命令在代码中设置断点,让程序在指定位置停下来,方便你查看变量和调试程序。
```
(gdb) break function_name
```
或者在指定行设置断点:
```
(gdb) break filename:line_number
```
5. 单步执行:你可以使用`step`命令来逐行执行代码并进入函数内部,`next`命令用于逐行执行代码但不进入函数内部。
```
(gdb) step
(gdb) next
```
6. 查看变量的值:使用`print`命令来查看变量的值。
```
(gdb) print variable_name
```
7. 继续执行:当程序在断点处停下来后,你可以使用`continue`命令来继续执行程序直到下一个断点或程序结束。
```
(gdb) continue
```
8. 退出GDB:在调试完成后,使用`quit`命令退出GDB。
```
(gdb) quit
```
以上是GDB的基本使用方法。调试复杂的程序可能需要更多的调试命令和技巧。GDB提供了丰富的调试功能,包括查看内存、寄存器、堆栈跟踪等,帮助你定位和解决程序中的问题。
Linux构建工具-make/Makefile
Make是Linux下的一个常用自动化构建工具,用于管理项目的编译和构建过程。Make通过解析Makefile文件来确定构建过程中需要执行的命令,从而实现自动化构建。Makefile是一个文本文件,其中包含了构建规则和依赖关系,以及执行命令的步骤。
下面详细介绍Make和Makefile的基本概念:
1. Makefile基本结构:
Makefile由一系列规则组成,每个规则包含目标、依赖和命令。规则的基本结构如下:
target: dependencies
command
- `target`:指定构建的目标,可以是一个可执行文件、库文件或其他中间文件。
- `dependencies`:指定目标所依赖的文件,当这些文件有更新时,目标需要重新构建。
- `command`:指定构建目标的命令,可以是编译、链接或其他任何Shell命令。
2. Make工作原理:
当执行`make`命令时,Make会读取当前目录下的Makefile文件,并根据文件中的规则来确定需要构建哪些目标。如果目标的依赖发生了变化,或者目标不存在,则Make会执行相应的命令来构建目标。
3. Makefile示例:
假设我们有一个C++项目,项目结构如下:
project/
|-- src/
| |-- main.cpp
| |-- utils.cpp
| |-- utils.h
|-- Makefile
下面是一个简单的Makefile示例:
# 编译器设置
CC = g++
CFLAGS = -Wall -g
# 目标文件
TARGET = my_program
# 源文件和头文件
SRCS = src/main.cpp src/utils.cpp
HEADERS = src/utils.h
# 构建目标
$(TARGET): $(SRCS) $(HEADERS)
$(CC) $(CFLAGS) $(SRCS) -o $(TARGET)
# 清理目标
clean:
rm -f $(TARGET)
在这个Makefile中,我们首先设置了编译器和编译选项。然后定义了目标文件(可执行文件名为`my_program`)和源文件、头文件的路径。接着定义了构建目标的规则,其中目标为`$(TARGET)`,依赖为`$(SRCS)`和`$(HEADERS)`,执行的命令为`$(CC) $(CFLAGS) $(SRCS) -o $(TARGET)`,表示用`g++`编译源文件并生成`my_program`可执行文件。最后,我们还定义了一个用于清理目标文件的规则,通过执行`make clean`命令可以删除生成的可执行文件。
使用`make`命令执行该Makefile时,会根据文件中的规则自动构建`my_program`目标文件。执行`make clean`命令可以删除生成的可执行文件。
通过Make和Makefile的配合,我们可以方便地管理复杂项目的编译和构建过程,提高开发效率。请注意,实际项目可能会更加复杂,涉及更多的编译选项、目录结构和依赖关系。不过通过学习和实践,你将逐渐掌握Make的高级用法,更好地应用于实际项目中。
Linux使用 git 命令行
在Linux中,你可以使用Git命令行工具来管理版本控制,跟踪文件的变化,协作开发等。下面是一些常用的Git命令行操作:
1. 初始化仓库:
```
git init
```
这会在当前目录下创建一个新的Git仓库。
2. 克隆仓库:
```
git clone <repository_url>
```
这会将远程仓库克隆到本地,你可以通过URL指定仓库地址。
3. 添加文件到暂存区:
```
git add <file>
```
这会将文件添加到Git的暂存区,准备提交到版本库。
4. 提交更改:
```
git commit -m "commit message"
```
这会将暂存区的更改提交到版本库,并附带一条提交信息。
5. 查看仓库状态:
```
git status
```
这会显示当前仓库的状态,包括修改、添加和删除的文件。
6. 查看提交历史:
```
git log
```
这会显示提交历史,包括提交ID、作者、日期和提交信息。
7. 创建分支:
```
git branch <branch_name>
```
这会在当前提交的基础上创建一个新的分支。
8. 切换分支:
```
git checkout <branch_name>
```
这会切换到指定的分支。
9. 合并分支:
```
git merge <branch_name>
```
这会将指定分支合并到当前分支。
10. 推送到远程仓库:
```
git push origin <branch_name>
```
这会将本地的指定分支推送到远程仓库。
11. 从远程仓库拉取更新:
```
git pull
```
这会从远程仓库拉取更新,并合并到当前分支。
12. 查看远程仓库信息:
```
git remote -v
```
这会显示远程仓库的详细信息。
以上是一些常用的Git命令行操作,还有更多其他的Git命令和选项可以帮助你更好地管理代码。通过使用Git命令行,你可以轻松地进行版本控制和协作开发,确保代码的安全和稳定性。
就是这些了。