wordpress 订阅号推送乐陵网站优化
作者:IvanCodes
日期:2025年7月29日
专栏:Linux教程
思维导图

 
 
 
一、高效文本编辑:Vim 编辑器
1.1 Vim 简介与核心模式
Vim 是一个功能极其强大的文本编辑器,以其高效的快捷键操作和独特的模式设计而闻名。掌握 Vim 的核心在于理解其不同的工作模式。
- 正常模式: 默认模式。用于移动光标、删除、复制、粘贴文本。所有操作都通过快捷键完成。
 - 插入模式: 用于输入和编辑文本,类似于普通记事本。
 - 命令行模式: 在屏幕底部以冒号 
:开始,用于执行保存、退出、搜索、替换等扩展命令。 - 可视模式: 用于选择文本块,以便进行批量操作。
 
1.2 Vim 基础操作
进入与退出
# 打开或创建一个名为 filename 的文件
vim filename
 
- 进入插入模式: 在正常模式下按 
i(在光标前插入),a(在光标后追加),o(在当前行下方新建一行并插入)。 - 返回正常模式: 在任何其他模式下按 
Esc键。 
正常模式下的光标移动
h,j,k,l: 左、下、上、右移动光标。
w: 移动到下一个单词的开头。
b: 移动到上一个单词的开头。
^或0: 移动到行首。
$: 移动到行尾。
gg: 移动到文件第一行。
G: 移动到文件最后一行。
正常模式下的编辑操作
x: 删除光标所在的单个字符。
dw: 删除从光标开始到单词结尾的内容。
dd: 删除 (剪切) 整行。
yy: 复制 (yank) 整行。
p: 粘贴 (put) 已删除或复制的内容到光标之后。
u: 撤销上一步操作 (undo)。
Ctrl + r: 重做 (redo) 已撤销的操作。
命令行模式下的常用命令
 文件操作
:w: 保存 (write) 文件。
:q: 退出 (quit) 编辑器。如果文件有未保存的修改,会提示错误。
:q!: 强制退出,不保存任何修改。
:wq: 保存并退出。
:x: 保存并退出 (仅当文件被修改时才写入)。
:w new_filename: 另存为new_filename。
:r filename: 读入 (read)filename文件的内容并插入到当前光标后。
:! command: 执行外部 shell 命令。例如:! ls -l。
:r ! command: 导入 (import) 外部命令的执行结果到当前光标后。
行号与跳转
:set nu或:set number: 显示行号。
:set nonu或:set nonumber: 隐藏行号。
:set nu!或:set number!: 切换显示/隐藏行号。
:n: 跳转到第 n 行 (例如:10跳转到第10行)。
查找与替换
:/pattern: 向下查找pattern。按n查找下一个,N查找上一个。
:?pattern: 向上查找pattern。按n查找下一个 (方向与?相反),N查找上一个。
:s/old/new: 替换当前行的第一个old为new。
:s/old/new/g: 替换当前行的所有old为new。
:%s/old/new/g: 替换整个文件的所有old为new(%代表所有行)。
:%s/old/new/gc: 替换整个文件,但每次替换前都会提示确认。
二、文件链接:硬链接与软链接
2.1 硬链接
硬链接可以看作是一个文件的多个有效文件名。它们都指向同一个物理存储位置 (同一个inode)。
特性:
- 删除源文件或任何一个硬链接,文件内容依然存在,直到最后一个链接被删除。
 - 不能对目录创建硬链接。
 - 不能跨越不同的文件系统 (分区)。
 
语法结构: ln 源文件 目标链接名
 代码示例:
# 创建一个名为 original_file.txt 的文件
echo "This is the original file." > original_file.txt# 为 original_file.txt 创建一个硬链接 hard_link.txt
ln original_file.txt hard_link.txt# 查看它们的 inode 号,会发现它们是相同的
ls -i original_file.txt hard_link.txt
 
2.2 软链接
软链接是一个特殊的文件,其内容是另一个文件的路径。它类似于Windows的快捷方式。
特性:
- 拥有自己独立的inode。
 - 可以对目录创建软链接。
 - 可以跨越不同的文件系统。
 - 如果源文件被删除,软链接会失效 (变成“悬空链接”或“死链接”)。
 
语法结构: ln -s 源文件或目录 目标链接名
 代码示例:
# 为 original_file.txt 创建一个软链接 soft_link.txt
ln -s original_file.txt soft_link.txt# 为 /var/log 目录创建一个名为 logs_shortcut 的软链接
ln -s /var/log logs_shortcut# 查看它们的 inode 号,会发现是不同的
ls -i original_file.txt soft_link.txt
 
2.3 硬链接 vs. 软链接 核心区别
| 特性 | 硬链接 (Hard Link) | 软链接 (Symbolic Link) | 
|---|---|---|
| Inode | 与源文件相同 | 独立的新 inode | 
| 类型 | 文件的一个别名 | 指向路径的指针文件 | 
| 跨文件系统 | 不可以 | 可以 | 
| 链接到目录 | 不可以 | 可以 | 
| 删除源文件 | 链接依然有效 | 链接失效 (悬空) | 
三、远程连接与文件传输 (SSH)
3.1 SSH 远程登录
SSH (Secure Shell) 是一个加密的网络协议,用于在不安全的网络上安全地执行远程命令和管理服务器。
语法结构: ssh [用户名]@[主机名或IP地址]
 代码示例:
# 使用用户 auser 登录到主机 192.168.121.151
ssh auser@192.168.121.151# 如果本地用户名与远程用户名相同,可以省略用户名
# 假设本地用户也是 auser
ssh 192.168.121.151# 登录到指定端口 2222 的服务器
ssh -p 2222 auser@remote.server.com
 
3.2 SCP 安全文件传输
scp (Secure Copy) 是一个基于SSH的文件传输工具。
语法结构:
- 上传: 
scp [选项] 本地文件 用户@主机:远程路径 - 下载: 
scp [选项] 用户@主机:远程文件 本地路径
常用选项:
-r: 递归复制整个目录。 
代码示例:
# 上传本地文件 local_file.txt 到远程主机的 /home/auser/ 目录下
scp local_file.txt auser@192.168.121.151:/home/auser/# 下载远程主机的 /var/log/syslog 文件到当前目录
scp auser@192.168.121.151:/var/log/syslog .# 上传整个本地目录 local_dir/ 到远程主机的 /tmp/ 目录下
scp -r local_dir/ auser@192.168.121.151:/tmp/# 下载远程主机的 /etc/nginx/ 目录到本地的 nginx_backup/ 目录
scp -r auser@192.168.121.151:/etc/nginx/ nginx_backup/
 
3.3 SSH 密钥对免密登录
通过设置SSH密钥对 (公钥和私钥),可以实现无需输入密码的安全登录,这对于自动化脚本和提高效率至关重要。
设置步骤:
- 在客户端生成密钥对 (
ssh-keygen)
在你的本地机器 (客户端) 上执行。 
ssh-keygen -t rsa
# 按照提示,可以一直按回车使用默认设置
# 会在 ~/.ssh/ 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)
 
- 将公钥复制到服务器 (
ssh-copy-id)
这是最推荐的方法,它会自动处理服务器端的文件和权限问题。 
ssh-copy-id auser@192.168.121.151
# 输入一次 auser 的密码
# 该命令会将本地的 id_rsa.pub 内容追加到远程主机的 ~/.ssh/authorized_keys 文件中
 
- 测试免密登录
 
ssh auser@192.168.121.151
# 如果设置成功,这次将不再提示输入密码,直接登录
 
四、总结
本章深入探讨了Linux系统中三个至关重要的工具:Vim编辑器、文件链接机制以及SSH远程管理。Vim是高效文本处理的利器;理解软硬链接的区别有助于灵活地组织文件系统;而SSH及其相关工具是现代系统运维和远程协作的基石。熟练掌握这些命令和概念,将使您在Linux环境中的操作更加专业、高效和安全。
练习题
请在您的Linux环境中完成以下操作,并写出所使用的命令。
题目:
- 使用 Vim 打开一个名为 
my_script.sh的新文件。 - 在 
my_script.sh中,进入插入模式并输入#!/bin/bash和echo "Script is running"两行内容。 - 不退出 Vim,使用命令行模式保存 
my_script.sh文件。 - 在 
my_script.sh中,使用命令行模式显示行号。 - 在 
my_script.sh中,使用命令行模式将running替换为working。 - 在 
my_script.sh中,使用命令行模式将/etc/hosts文件的内容读入 (导入) 到文件末尾。 - 创建一个名为 
data_file.txt的文件,并为它创建一个名为data_hardlink的硬链接。 - 为 
data_file.txt文件创建一个名为data_softlink的软链接。 - 删除 
data_file.txt,然后分别使用ls -l命令检查data_hardlink和data_softlink的状态。 - 在你的家目录下创建一个名为 
app的目录,然后为这个目录创建一个名为app_link的软链接。 - 使用 
ssh命令以用户admin的身份登录到 IP 地址为10.0.0.10的远程服务器,并使用非标准的端口22022。 - 将你本地家目录下的 
my_script.sh文件上传到10.0.0.10服务器上admin的/opt/scripts/目录中。 - 将 
10.0.0.10服务器上的/var/log/整个目录下载到你本地的server_logs/目录 (假设本地server_logs已存在)。 - 在你的本地机器上生成一对新的 SSH 密钥对,并将其安全地复制到 
10.0.0.10服务器的admin账户,以实现免密登录。 - 在 Vim 中,不退出文件,如何快速跳转到文件的最后一行?
 
答案与解析:
- 打开 Vim:
 
vim my_script.sh
 
解析: vim 命令后跟文件名,如果文件不存在则会创建一个新的缓冲区。
-  
进入插入模式并输入:
- 按 
i(或a,o) 进入插入模式。 - 输入内容。
 - 按 
Esc返回正常模式。
解析:i是进入插入模式最常用的按键之一。 
 - 按 
 -  
保存文件:
 
:w
 
解析: 在正常模式下输入 : 进入命令行模式,w 表示保存 (write)。
- 显示行号:
 
:set nu
 
解析: set nu 是 set number 的缩写,用于显示行号。
- 替换文本:
 
:%s/running/working/g
 
解析: : 进入命令行模式。% 表示整个文件,s 表示替换,/old/new/ 是替换格式,g 表示全局 (global),即替换行内所有匹配项。
-  
读入文件内容:
- 按 
G跳转到文件末尾。 - 按 
o新建一行并进入插入模式,再按Esc返回正常模式 (可选,确保插入位置正确)。 - 输入 
:r /etc/hosts。
解析::r filename命令会将指定文件的内容读入并插入到当前光标所在行的下方。 
 - 按 
 -  
创建硬链接:
 
touch data_file.txt
ln data_file.txt data_hardlink
 
解析: ln 命令默认创建硬链接。
- 创建软链接:
 
ln -s data_file.txt data_softlink
 
解析: ln 的 -s 选项表示创建符号链接 (soft link)。
- 检查链接状态:
 
rm data_file.txt
ls -l data_hardlink     # 正常显示,链接数减少
ls -l data_softlink     # 会看到链接名标红,指向一个不存在的路径
 
解析: 删除源文件后,硬链接因指向相同的 inode 而不受影响。软链接因其指向的路径已失效而变成悬空链接。
- 为目录创建软链接:
 
mkdir ~/app
ln -s ~/app ~/app_link
 
解析: 软链接可以指向目录,这是硬链接无法做到的。
- SSH 指定端口登录:
 
ssh -p 22022 admin@10.0.0.10
 
解析: ssh 的 -p 选项用于指定非默认的端口号。
- SCP 上传到指定目录:
 
scp ~/my_script.sh admin@10.0.0.10:/opt/scripts/
 
解析: scp 的目标路径是 user@host:path,这里的 path 是服务器上的绝对或相对路径。
- SCP 下载目录:
 
scp -r admin@10.0.0.10:/var/log/ server_logs/
 
解析: -r 选项用于递归复制整个目录。
- 生成并复制公钥: 
- 生成:
 
 
ssh-keygen
 
- 复制:
 
ssh-copy-id admin@10.0.0.10
 
解析: ssh-keygen 生成密钥对,ssh-copy-id 是最安全、最便捷的复制公钥的方法。
- Vim 跳转到最后一行:
在正常模式下,按G(大写)。
解析:G是Vim中跳转到文件最后一行的快捷键。gg则是跳转到第一行。 
