本指南基于 Bash Shell,这是 Ubuntu 系统的默认命令行环境。它将帮助你掌握在 Ubuntu 中进行高效操作的核心命令。理解 Shell 不仅是执行命令,更是学习如何将命令组合起来,自动化完成复杂任务。
1. 基础:文件与目录操作
这是与系统交互的基础,所有操作都始于对文件和目录的管理。
| 任务 | 命令示例 | 说明 |
| 查看当前路径 | pwd |
显示当前工作目录的绝对路径。 |
| 列出目录内容 | lsls -la |
-l 显示详细信息,-a 显示所有文件(包括隐藏文件)。 |
| 切换目录 | cd /home/usercd ..cd ~ |
.. 表示上级目录,~ 表示当前用户的家目录。 |
| 创建目录 | mkdir new_foldermkdir -p path/to/new/folder |
-p 可以一次性创建多级目录。 |
| 删除空目录 | rmdir empty_folder |
只能删除空目录。 |
| 删除文件或目录 | rm file.txtrm -r folderrm -rf folder |
-r 递归删除目录及其内容,-f 强制删除,不提示。请谨慎使用 rm -rf。 |
| 复制文件/目录 | cp source.txt dest.txtcp -r source_dir dest_dir |
-r 递归复制目录。 |
| 移动/重命名 | mv old_name.txt new_name.txtmv file.txt /path/to/dest/ |
移动文件和重命名的命令是同一个。 |
2. 查看与编辑文件
快速查看文件内容或进行简单编辑是日常高频操作。
| 任务 | 命令示例 | 说明 |
| 查看完整文件 | cat file.txt |
将整个文件内容输出到屏幕。适合查看短文件。 |
| 分页查看 | less file.txt |
可以上下翻页,按 q 退出。是查看长文件的最佳选择。 |
| 查看文件头部 | head -n 20 file.txt |
显示文件的前 20 行。 |
| 查看文件尾部 | tail -n 50 file.txttail -f file.txt |
显示文件的后 50 行。-f 会实时追踪文件新增内容,常用于查看日志。 |
| 文本编辑 | nano file.txt |
一个简单易用的命令行文本编辑器。初学者推荐。 |
| 文本编辑 | vim file.txt |
功能强大的编辑器,学习曲线较陡,但熟练后效率极高。 |
3. 系统信息查询
了解系统状态和硬件信息是管理和排查问题的基础。
| 任务 | 命令示例 | 说明 |
| 查看系统信息 | uname -a |
显示内核名称、主机名、内核版本等所有系统信息。 |
| 查看CPU信息 | lscpu |
显示CPU架构、核心数、型号等详细信息。 |
| 查看内存使用 | free -h |
-h 以人类可读的格式(如G、M)显示内存和交换分区使用情况。 |
| 查看磁盘空间 | df -h |
查看文件系统的磁盘空间占用情况。 |
| 查看目录大小 | du -sh /home/user |
查看指定目录的总大小。-s 汇总,-h 人类可读。 |
| 查看运行进程 | ps aux |
显示系统当前所有运行的进程的详细信息。 |
| 实时系统监控 | top 或 htop |
动态显示进程活动和系统负载。htop 界面更友好,可能需要安装。 |
4. 权限管理
Linux 的权限系统非常精细,理解它是保证系统安全的关键。
| 任务 | 命令示例 | 说明 |
| 查看权限 | ls -l |
输出的第一列(如 -rw-r--r--)即文件或目录的权限。 |
| 修改权限 | chmod +x script.sh |
为脚本添加可执行权限。 |
chmod 755 file.txt |
用数字方式设置权限(7=读写执行,5=读执行)。 | |
| 修改所有者 | chown user:group file.txt |
改变文件的所有者和所属组。需要 sudo 权限。 |
5. 软件包管理 (apt)
Ubuntu 使用 apt 命令来管理软件包(安装、更新、删除)。
| 任务 | 命令示例 | 说明 |
| 更新软件源 | sudo apt update |
从仓库获取最新的软件包列表。 |
| 升级所有软件 | sudo apt upgrade |
根据更新的列表,升级所有已安装的软件包。 |
| 搜索软件 | apt search nginx |
在仓库中搜索软件包。 |
| 安装软件 | sudo apt install nginx |
安装指定的软件包。 |
| 删除软件 | sudo apt remove nginxsudo apt purge nginx |
remove 只删除软件,purge 会同时删除配置文件。 |
| 清理无用包 | sudo apt autoremove |
自动删除不再需要的依赖包。 |
6. 文件搜索与内容查找技巧
这是你特别关注的部分,掌握这些命令能极大地提高查找效率。
6.1 按文件名搜索
find 命令是 Linux 下最强大的文件搜索工具。
| 需求 | 命令示例 | 说明 |
| 查找特定文件名 | find /home -name "*.zip" |
在 /home 目录下查找所有文件名中带 abc 的 zip 文件:find /home -name "*abc*.zip" |
| 按类型查找 | find / -type f -name "*.log" |
-type f 表示只查找文件(d 为目录)。 |
| 按时间查找 | find . -name "*.txt" -mtime -3 |
查找当前目录下最近 3天内 生成或修改过的 .txt 文件。-mtime 按修改时间,-3 表示3天以内。 |
find . -name "*.txt" -mtime +7 |
查找 7天前 修改过的 .txt 文件。 |
|
| 按大小查找 | find / -size +100M |
查找系统中大于 100M 的文件。 |
6.2 按文件内容搜索
grep 命令用于在文件中搜索匹配的文本模式。
| 需求 | 命令示例 | 说明 |
| 在文件中搜索字符串 | grep "abc123456" /home/user/file.txt |
在单个文件中查找 abc123456。 |
| 在目录下所有文件中搜索 | grep -r "abc123456" /home/ |
-r 递归搜索 /home/ 目录下所有文件。输出会显示文件名和匹配的行。 |
| 找出所有包含特定字符串的 .txt 文件 | grep -r --include="*.txt" "abc123456" /home/ |
在 /home/ 目录下,只搜索所有 .txt 文件,找出包含 abc123456 的行。 |
| 只显示匹配的文件名 | grep -r -l "abc123456" /home/ |
-l 参数使 grep 只输出包含匹配内容的文件名,而不是具体行。 |
7. 进程与端口管理
当你运行一个服务(如Web服务器)时,需要知道如何找到它并管理它。
| 需求 | 命令示例 | 说明 |
| 查看端口对应的进程 | sudo lsof -i :8080 |
最直接。lsof 列出打开的文件,-i :端口号 显示使用该端口的进程。 |
sudo netstat -tlnp | grep :8080 |
经典方法。-tlnp 显示所有监听中的TCP端口,grep 过滤出8080端口。最后一列会显示PID/进程名。 |
|
sudo ss -tlnp | grep :8080 |
ss 是 netstat 的现代替代品,速度更快,用法类似。 |
|
| 杀掉指定进程 | kill <PID> |
正常终止进程(让进程有机会清理临时文件)。<PID> 是进程ID。 |
kill -9 <PID> |
强制、立即杀死进程。应作为最后手段使用。 | |
pkill <进程名> |
按进程名杀死进程。例如 pkill nginx。 |
8. 远程连接与文件传输
管理远程服务器是系统管理员的核心技能。
8.1 SSH 远程登录
| 需求 | 命令示例 | 说明 |
| 登录远程服务器 | ssh user@remote_server_ip |
使用用户名 user 登录到 IP 为 remote_server_ip 的服务器。首次连接会提示确认密钥指纹。 |
| 使用非默认端口 | ssh -p 2222 user@remote_server_ip |
如果 SSH 服务运行在 2222 端口(默认为22),需要用 -p 指定。 |
8.2 SCP 文件传输
scp (Secure Copy) 基于 SSH 协议,用于在本地和远程主机之间安全地复制文件。
| 需求 | 命令示例 | 说明 |
| 本地 -> 远程 | scp /local/file.txt user@remote_ip:/home/user/ |
将本地的 file.txt 复制到远程服务器的 /home/user/ 目录下。 |
| 远程 -> 本地 | scp user@remote_ip:/home/user/remote_file.txt /local/ |
将远程服务器上的 remote_file.txt 复制到本地的 /local/ 目录。 |
| 复制整个目录 | scp -r /local/folder user@remote_ip:/home/user/ |
-r 选项递归复制整个目录。 |
| 使用非默认端口 | scp -P 2222 file.txt user@remote_ip:/home/user/ |
注意:scp 指定端口用的是大写 -P,与 ssh 的小写 -p 不同。 |