四、Linux核心工具:Vim, 文件链接与SSH

本文涉及的产品
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
函数计算FC,每月15万CU 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 要想在Linux世界里游刃有余,光会“走路”还不够,还得配上几样“高级装备”。首先是Vim编辑器,它像一把瑞士军刀,让你能在命令行里高效地修改文件。然后要懂“软硬链接”,软链接像个快捷方式,硬链接则是给文件起了个别名。最后,SSH是你的“传送门”,不仅能让你安全地远程登录服务器,还能用scp轻松传输文件,设置好密钥更能实现免-密登录,极大提升效率。

思维导图

image.png
image.png
image.png
image.png

一、高效文本编辑: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: 替换当前行第一个 oldnew
:s/old/new/g: 替换当前行所有 oldnew
:%s/old/new/g: 替换整个文件所有 oldnew ( % 代表所有行)。
:%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密钥对 (公钥和私钥),可以实现无需输入密码安全登录,这对于自动化脚本提高效率至关重要。

设置步骤:

  1. 在客户端生成密钥对 (ssh-keygen)
    你的本地机器 (客户端) 上执行。

    ssh-keygen -t rsa
    # 按照提示,可以一直按回车使用默认设置
    # 会在 ~/.ssh/ 目录下生成 id_rsa (私钥) 和 id_rsa.pub (公钥)
    
  2. 将公钥复制到服务器 (ssh-copy-id)
    这是最推荐的方法,它会自动处理服务器端的文件和权限问题。

    ssh-copy-id auser@192.168.121.151
    # 输入一次 auser 的密码
    # 该命令会将本地的 id_rsa.pub 内容追加到远程主机的 ~/.ssh/authorized_keys 文件中
    
  3. 测试免密登录

    ssh auser@192.168.121.151
    # 如果设置成功,这次将不再提示输入密码,直接登录
    

四、总结

本章深入探讨了Linux系统中三个至关重要的工具:Vim编辑器文件链接机制以及SSH远程管理。Vim是高效文本处理利器;理解软硬链接区别有助于灵活地组织文件系统;而SSH及其相关工具现代系统运维和远程协作基石。熟练掌握这些命令和概念,将使您在Linux环境中的操作更加专业、高效和安全


练习题

请在您的Linux环境中完成以下操作,并写出所使用的命令。

题目:

  1. 使用 Vim 打开一个名为 my_script.sh 的新文件。
  2. my_script.sh 中,进入插入模式并输入 #!/bin/bashecho "Script is running" 两行内容。
  3. 不退出 Vim,使用命令行模式保存 my_script.sh 文件。
  4. my_script.sh 中,使用命令行模式显示行号。
  5. my_script.sh 中,使用命令行模式将 running 替换为 working
  6. my_script.sh 中,使用命令行模式将 /etc/hosts 文件的内容读入 (导入) 到文件末尾。
  7. 创建一个名为 data_file.txt 的文件,并为它创建一个名为 data_hardlink 的硬链接。
  8. data_file.txt 文件创建一个名为 data_softlink 的软链接。
  9. 删除 data_file.txt,然后分别使用 ls -l 命令检查 data_hardlinkdata_softlink 的状态。
  10. 在你的家目录下创建一个名为 app 的目录,然后为这个目录创建一个名为 app_link 的软链接。
  11. 使用 ssh 命令以用户 admin 的身份登录到 IP 地址为 10.0.0.10 的远程服务器,并使用非标准的端口 22022
  12. 将你本地家目录下的 my_script.sh 文件上传到 10.0.0.10 服务器上 admin/opt/scripts/ 目录中。
  13. 10.0.0.10 服务器上的 /var/log/ 整个目录下载到你本地的 server_logs/ 目录 (假设本地 server_logs 已存在)。
  14. 在你的本地机器上生成一对新的 SSH 密钥对,并将其安全地复制到 10.0.0.10 服务器的 admin 账户,以实现免密登录。
  15. 在 Vim 中,不退出文件,如何快速跳转到文件的最后一行?
答案与解析:
  1. 打开 Vim:

    vim my_script.sh
    

    解析: vim 命令后跟文件名,如果文件不存在则会创建一个新的缓冲区。

  2. 进入插入模式并输入:

    1. i (或 a, o) 进入插入模式。
    2. 输入内容。
    3. Esc 返回正常模式。
      解析: i 是进入插入模式最常用的按键之一。
  3. 保存文件:

    :w
    

    解析: 在正常模式下输入 : 进入命令行模式,w 表示保存 (write)。

  4. 显示行号:

    :set nu
    

    解析: set nuset number 的缩写,用于显示行号。

  5. 替换文本:

    :%s/running/working/g
    

    解析: : 进入命令行模式。% 表示整个文件,s 表示替换,/old/new/ 是替换格式,g 表示全局 (global),即替换行内所有匹配项。

  6. 读入文件内容:

    1. G 跳转到文件末尾。
    2. o 新建一行并进入插入模式,再按 Esc 返回正常模式 (可选,确保插入位置正确)。
    3. 输入 :r /etc/hosts
      解析: :r filename 命令会将指定文件的内容读入并插入到当前光标所在行的下方。
  7. 创建硬链接:

    touch data_file.txt
    ln data_file.txt data_hardlink
    

    解析: ln 命令默认创建硬链接。

  8. 创建软链接:

    ln -s data_file.txt data_softlink
    

    解析: ln-s 选项表示创建符号链接 (soft link)。

  9. 检查链接状态:

    rm data_file.txt
    ls -l data_hardlink     # 正常显示,链接数减少
    ls -l data_softlink     # 会看到链接名标红,指向一个不存在的路径
    

    解析: 删除源文件后,硬链接因指向相同的 inode 而不受影响。软链接因其指向的路径已失效而变成悬空链接。

  10. 为目录创建软链接:

    mkdir ~/app
    ln -s ~/app ~/app_link
    

    解析: 软链接可以指向目录,这是硬链接无法做到的。

  11. SSH 指定端口登录:

    ssh -p 22022 admin@10.0.0.10
    

    解析: ssh-p 选项用于指定非默认的端口号。

  12. SCP 上传到指定目录:

    scp ~/my_script.sh admin@10.0.0.10:/opt/scripts/
    

    解析: scp 的目标路径是 user@host:path,这里的 path 是服务器上的绝对或相对路径。

  13. SCP 下载目录:

    scp -r admin@10.0.0.10:/var/log/ server_logs/
    

    解析: -r 选项用于递归复制整个目录。

  14. 生成并复制公钥:

    • 生成:
      ssh-keygen
      
    • 复制:
      ssh-copy-id admin@10.0.0.10
      
      解析: ssh-keygen 生成密钥对,ssh-copy-id 是最安全、最便捷的复制公钥的方法。
  15. Vim 跳转到最后一行:
    在正常模式下,按 G (大写)。
    解析: G 是Vim中跳转到文件最后一行的快捷键。gg 则是跳转到第一行。

目录
相关文章
|
6月前
|
Linux 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
安全 Linux iOS开发
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
177 0
SonarQube Server 2025 Release 5 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
|
2月前
|
Unix Linux 程序员
Linux文本搜索工具grep命令使用指南
以上就是对Linux环境下强大工具 `grep` 的基础到进阶功能介绍。它不仅能够执行简单文字查询任务还能够处理复杂文字处理任务,并且支持强大而灵活地正则表达规范来增加查询精度与效率。无论您是程序员、数据分析师还是系统管理员,在日常工作中熟练运用该命令都将极大提升您处理和分析数据效率。
258 16
|
4月前
|
缓存 监控 Linux
Linux系统性能调优技巧和相关工具
Linux 作为一种应用应展和系统服务的优选操作系统,在处理性能和端到端点评估上持有出色表现。但是,在处理进程或系统处于低效状态时,性能调优就显得十分重要。本文将探讨一些 Linux 系统性能调优的常用技巧,并介绍相关工具
147 0
Linux系统性能调优技巧和相关工具
|
4月前
|
Linux 数据安全/隐私保护 iOS开发
推荐Linux环境下效能优良的双向文件同步工具
综合上述条件,对于Linux环境下的双向文件同步需求,Unison 和 Syncthing 是两个非常出色的选择。它们都有良好的社区支持和文档资源,适用于不同规模的环境,从个人使用到商业部署。Unison 特别适合那些需要手动干预同步过程、需要处理文件冲突解决的场景。而 Syncthing 更加现代化,适合需要自动、实时的数据同步与备份的环境。对于选择哪一个,这将取决于个人的使用场景和具体需求。
499 16
|
3月前
|
数据采集 编解码 运维
一文讲完说懂 WowKey -- WowKey 是一款 Linux 类设备的命令行(CLT)运维工具
WowKey 是一款面向 Linux 类设备的命令行运维工具,支持自动登录、批量执行及标准化维护,适用于企业、团队或个人管理多台设备,显著提升运维效率与质量。
|
6月前
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
372 32
|
8月前
|
自然语言处理 数据库 iOS开发
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
586 12
DBeaver Ultimate Edtion 25.0 Multilingual (macOS, Linux, Windows) - 通用数据库工具
|
7月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。