命令行文本编辑器(交互式修改)
Nano(新手推荐)
- 安装与启动
sudo apt install nano # Debian/Ubuntu sudo yum install nano # CentOS/RHEL nano 文件名 # 打开文件
- 基础操作
- 编辑文本:直接输入内容
- 保存:
Ctrl + O
→ 回车确认 - 退出:
Ctrl + X
- 搜索:
Ctrl + W
,输入关键词后回车
- 适用场景:快速编辑配置文件(如
/etc/ssh/sshd_config
)。
Vim(高效专业)
- 启动与模式切换
vim 文件名 # 打开文件
- 普通模式(默认):移动光标、删除字符(
dd
删除整行) - 插入模式:按
i
进入编辑,Esc
返回普通模式 - 命令模式:普通模式下按 ,输入命令后回车
- 普通模式(默认):移动光标、删除字符(
- 常用命令
- 保存:
:w
- 退出:
:q
- 强制保存退出:
:wq!
- 搜索: → 回车,
n
跳转到下一个匹配项
- 保存:
- 适用场景:复杂代码编辑或远程服务器维护。
非交互式命令(脚本自动化)
重定向符覆盖/追加内容
- 覆盖文件(清空原内容后写入):
echo "新内容" > 文件名
- (保留原内容):
echo "追加内容" >> 文件名
- 示例:
echo "127.0.0.1 localhost" > /etc/hosts # 重置hosts文件 echo "192.168.1.5 server" >> /etc/hosts # 追加新条目
Sed 流编辑器(批量替换)
- 替换文件内容:
sed -i 's/旧文本/新文本/g' 文件名
-i
:直接修改文件(不加则仅预览)s/.../.../g
:全局替换
- 示例:
sed -i 's/foo/bar/g' file.txt # 将file.txt中所有foo替换为bar sed -i '2d' file.txt # 删除第2行
Awk(处理结构化文本)
- 修改指定列:
awk '{if ($1=="old") $2="new"; print}' 文件名 > 临时文件 && mv 临时文件 文件名
- 示例:将
data.txt
中第1列为”John”的第3列改为”Engineer”:awk '{$1=="John" ? $3="Engineer" : $3; print}' data.txt > tmp && mv tmp data.txt
关键注意事项
- 权限管理
- 修改系统文件需
sudo
提权(如sudo nano /etc/fstab
)。 - 检查权限:
ls -l 文件名
,用chmod
调整(如chmod 644 文件
)。
- 修改系统文件需
- 备份原则
- 重要文件修改前备份:
cp 原文件 原文件.bak
- 使用版本控制工具(如Git)管理配置文件。
- 重要文件修改前备份:
- 避免数据损坏
- 用
sync
命令确保写入磁盘(尤其远程操作)。 - 测试脚本:非交互式命令先用
>
输出到临时文件验证。
- 用
方法选择建议
场景 | 推荐工具 |
---|---|
简单编辑(新手友好) | Nano |
代码/复杂编辑 | Vim |
脚本自动化替换 | Sed |
追加日志或配置 | >> 重定向 |
结构化数据修改 | Awk |
引用说明
- Linux命令行工具遵循POSIX标准,操作参考GNU Coreutils文档。
- Vim操作指南详见官方手册。
- 权限管理依据Linux Filesystem Hierarchy Standard(FHS)。
重要提示:生产环境操作前务必验证命令并备份数据,本文内容基于Linux 5.x内核及主流发行版(Ubuntu 22.04/CentOS 8)测试验证。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/4725.html