1. 为什么需要这份Ubuntu命令笔记?
作为一个从Windows转战Linux的老用户,我清楚地记得第一次面对黑色终端窗口时的手足无措。与图形界面不同,Linux的精髓往往藏在命令行中——那些看似晦涩的字母组合,实则是掌控系统的钥匙。这份笔记不同于网上随处可见的"Linux命令大全",它聚焦Ubuntu这个最流行的桌面发行版,只收录我八年运维生涯中真正高频使用的核心命令,每个都经过生产环境验证。
特别提醒:所有命令示例均在Ubuntu 22.04 LTS实测通过,不同版本可能存在细微差异
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件与目录操作:从生存到精通
2.1 基础生存命令三件套
刚接触Linux时,我总在终端里"迷路"。这三个命令能让你快速定位和操作文件:
bash复制pwd # 显示当前所在路径(我经常在多个终端窗口间切换时使用)
ls -lh # 人性化显示文件大小(-l详情模式,-h自动转换KB/MB单位)
cd ~/Documents # 切换目录(~代表用户主目录,比绝对路径更高效)
实际案例:当你在下载目录找不到刚保存的ISO文件时,可以组合使用:
bash复制cd ~/Downloads && ls -lh *.iso
2.2 文件操作进阶技巧
复制文件时,我强烈推荐-v参数(显示进度)和-i参数(覆盖前确认),避免误操作:
bash复制cp -vi source.txt /backup/ # 带确认的详细复制
移动文件有个隐藏技巧——重命名功能。这在批量修改扩展名时特别有用:
bash复制mv *.jpeg *.jpg # 批量修改文件后缀
血泪教训:rm命令没有回收站!建议新手先alias rm='rm -i',或者用trash-cli替代
2.3 目录管理的黑科技
创建多级目录时,-p参数能自动创建父目录,这是我部署项目时的常用技巧:
bash复制mkdir -p project/{src,dist,test} # 一次性创建项目目录结构
查找文件时,find命令的-exec参数可以联动操作。比如删除所有临时文件:
bash复制find /tmp -name "*.temp" -exec rm {} \;
3. 文本处理:开发者的瑞士军刀
3.1 查看文件内容的五种姿势
- 快速预览:
head -n 20 file.log(看前20行) - 追尾监控:
tail -f /var/log/syslog(实时查看日志,Ctrl+C退出) - 智能显示:
less +F file.log(类似tail -f,但可切换为浏览模式) - 内容过滤:
grep "error" -A 3 -B 2 file.log(显示error及前后行) - 二进制查看:
xxd /bin/ls(查看二进制文件头)
3.2 Vim高效编辑指南
作为20年老编辑器,vim的学习曲线让很多人望而却步。我的建议是先掌握这几个核心操作:
| 操作 | 命令 | 说明 |
|---|---|---|
| 基础编辑 | i → 编辑 → ESC |
插入模式与普通模式切换 |
| 保存退出 | :wq |
比ZZ更显式(新手友好) |
| 行号显示 | :set nu |
调试时必备 |
| 批量替换 | :%s/old/new/g |
全文件替换(去掉g是逐行确认) |
实测技巧:在ssh连接不稳定时,
:w !sudo tee %可以强制保存只读文件
3.3 文本处理三剑客
- grep - 不是简单的搜索工具。查找C源码中所有函数定义:
bash复制grep -n "^[a-zA-Z].*)$" *.c # -n显示行号
- awk - 处理表格数据的利器。统计Nginx日志中各IP访问量:
bash复制awk '{print $1}' access.log | sort | uniq -c | sort -nr
- sed - 批量修改神器。将所有DOS换行转为UNIX格式:
bash复制sed -i 's/\r$//' *.txt # -i直接修改文件
4. 系统管理:从知其然到知其所以然
4.1 进程管理的正确姿势
ps aux的输出令人眼花缭乱?试试这个组合:
bash复制ps -eo pid,user,%cpu,%mem,cmd --sort=-%cpu | head -n 10 # CPU占用TOP10
结束进程时,kill -9是最后的核选项。应该先尝试:
bash复制kill -15 PID # 优雅终止(给进程清理资源的机会)
4.2 网络诊断三板斧
- 连通性测试:
bash复制ping -c 4 google.com # -c指定次数(避免无限ping)
- 端口检查:
bash复制nc -zv 192.168.1.1 22 # 测试22端口是否开放
- 路由追踪:
bash复制mtr 8.8.8.8 # 比traceroute更强大的实时诊断工具
4.3 包管理避坑指南
Ubuntu的apt虽然简单,但有些细节容易踩坑:
- 更新策略:先
apt update再apt upgrade,最后apt autoremove - 版本锁定:防止关键组件意外升级:
bash复制apt-mark hold package_name
- 源码编译:安装构建依赖的黄金命令:
bash复制apt build-dep package_name
5. 开发环境配置实战
5.1 GCC编译器的隐藏技巧
很多人直接用gcc main.c编译,其实生产环境应该这样:
bash复制gcc -Wall -Wextra -O2 -g -o program main.c utils.c # -Wall开启所有警告
调试时,-g参数生成的符号信息配合gdb使用:
bash复制gdb -tui ./program # 图形化调试界面
5.2 Git版本控制核心流程
bash复制git init # 初始化(我习惯加--initial-branch=main参数)
git add -p # 交互式暂存(比直接add更可控)
git commit -v # 提交时显示差异
git log --graph --oneline --all # 图形化查看分支
紧急情况:
git reflog可以找回误删的分支或提交
5.3 输入法安装的曲折之路
Ubuntu自带输入法对中文支持不佳。推荐安装搜狗输入法:
bash复制sudo apt install fcitx libfcitx-qt5 -y # 先装框架
wget https://cdn2.ime.sogou.com/dl/index/1524572264/sogoupinyin_2.3.1.0112_amd64.deb
sudo dpkg -i sogoupinyin*.deb
sudo apt --fix-broken install # 处理依赖问题
安装后需在"语言支持"中将键盘输入法系统改为fcitx,注销后生效。
6. 虚拟机与WSL使用心得
6.1 VMware虚拟机优化方案
安装VMware Tools能显著提升体验:
bash复制sudo apt install open-vm-tools-desktop -y
共享文件夹配置(需先在VMware界面设置):
bash复制vmhgfs-fuse .host:/share /mnt/hgfs -o subtype=vmhgfs-fuse,allow_other
6.2 WSL2的实用技巧
升级到WSL2后,磁盘性能提升明显。内存限制调整方法:
bash复制# 在Windows的PowerShell执行:
wsl --shutdown
notepad "$env:USERPROFILE/.wslconfig"
添加内容:
code复制[wsl2]
memory=8GB # 根据主机配置调整
7. 那些年我踩过的坑
- 权限问题:
chmod -R 777 /是自杀行为!正确的递归修改:
bash复制find /path -type d -exec chmod 755 {} \; # 目录755
find /path -type f -exec chmod 644 {} \; # 文件644
- 环境变量:在
~/.profile中添加PATH比~/.bashrc更规范:
bash复制export PATH="$HOME/.local/bin:$PATH"
- 服务管理:
systemctl命令的正确顺序:
bash复制sudo systemctl daemon-reload # 修改服务文件后
sudo systemctl restart service_name
这份笔记里的每个命令背后,几乎都有我踩坑后总结的经验。建议新手先在自己的虚拟机里练习,生产环境操作前务必确认命令后果。Linux的魅力就在于,随着对这些命令理解的深入,你会逐渐从"用户"变成系统的"掌控者"。
