Unix/Linux 命令行基础
核心概念
- Shell: 你与操作系统交互的终端界面,常见的 Shell 有 Bash (Linux/macOS 默认)、Zsh 等。
- 命令: 你输入的指令,如
ls。 - 选项/标志: 修改命令行为的单字符,通常以 开头,如
-l(long listing)。 - 参数/路径: 命令操作的对象,通常是文件或目录的路径,如
Documents/report.txt。 - 绝对路径: 从根目录 开始的完整路径,如
/home/user/Documents/report.txt。 - 相对路径: 从当前目录开始的路径,如
./Documents/report.txt或../parent_dir。
文件和目录操作
这是最常用的一组命令。

| 命令 | 全称 | 描述 | 示例 |
|---|---|---|---|
ls |
list | 列出当前目录下的文件和目录。 | ls -l (长格式显示)ls -a (显示隐藏文件,以开头)ls -h (人类可读的文件大小,如 1K, 234M) |
cd |
change directory | 切换当前工作目录。 | cd /home/user (切换到绝对路径)cd .. (切换到上级目录)cd ~ (切换到用户主目录)cd - (切换到上一个目录) |
pwd |
print working directory | 显示当前所在的完整路径。 | pwd |
mkdir |
make directory | 创建一个新目录。 | mkdir new_foldermkdir -p parent/child (递归创建多级目录) |
touch |
- | 创建一个空文件,或更新文件的时间戳。 | touch new_file.txt |
cp |
copy | 复制文件或目录。 | cp file1.txt file2.txt (复制文件)cp -r dir1/ dir2/ (递归复制目录,-r 或 -R 必须有) |
mv |
move | 移动文件/目录,或重命名。 | mv old_name.txt new_name.txt (重命名)mv file.txt /path/to/destination/ (移动文件) |
rm |
remove | 删除文件或目录。⚠️ 警告:此命令危险,删除后无法恢复! | rm file.txt (删除文件)rm -r dir/ (递归删除目录)rm -f file.txt (强制删除,不提示) |
cat |
concatenate | 查看文件的全部内容并输出到终端,适合短文件。 | cat file.txt |
less |
- | 分页查看文件内容,可以上下翻页、搜索,适合长文件。 | less long_file.log (按 q 退出) |
head |
- | 查看文件的开头部分,默认前10行。 | head -n 20 file.txt (查看前20行) |
tail |
- | 查看文件的结尾部分,默认后10行。 | tail -n 20 file.txt (查看后20行)tail -f log.txt (实时追踪文件变化,常用于看日志) |
nano / vim |
- | 文本编辑器。nano 简单易用,vim 功能强大但需要学习。 |
nano file.txtvim file.txt |
文件权限和所有权
Unix/Linux 的核心特性之一就是权限管理。
| 命令 | 描述 | 示例 |
|---|---|---|
chmod |
Change Mode:修改文件或目录的权限。 | chmod +x script.sh (给脚本添加可执行权限)chmod 755 mydir (设置权限为 rwxr-xr-x)权限码: r=4, w=2, x=1 |
chown |
Change Owner:修改文件或所有者,通常需要 sudo。 |
sudo chown user:group file.txt (同时修改用户和用户组) |
chgrp |
Change Group:修改文件的用户组。 | sudo chgrp developers project_file |
权限说明:
r(read): 读取w(write): 写入x(execute): 执行d(directory): 目录- (regular file): 普通文件
l(link): 符号链接
权限分为三组:所有者、所属组、其他人。drwxr-xr-x。
搜索和查找
| 命令 | 描述 | 示例 |
|---|---|---|
find |
在整个文件系统中查找文件,功能强大,语法稍复杂。 | find . -name "*.txt" (在当前目录及子目录下查找所有 .txt 文件)find /home -type f -size +10M (在 /home 下查找大于10MB的普通文件) |
grep |
Global Regular Expression Print:在文件中搜索匹配的文本行。 | grep "error" log.txt (在 log.txt 中搜索包含 "error" 的行)grep -r "TODO" ./src (递归地在 ./src 目录下搜索 "TODO")grep -i "hello" file.txt (忽略大小写) |
压缩和打包
| 命令 | 描述 | 示例 |
|---|---|---|
tar |
Tape Archive:用于打包文件,常与压缩工具结合使用。 | tar -czvf archive.tar.gz dir/ (打包并 gzip 压缩)tar -xzvf archive.tar.gz (解压 gzip 压缩的包)参数: c(创建), x(解压), v(显示过程), f(指定文件名), z(gzip), j(bzip2) |
zip / unzip |
创建和解压 .zip 格式的压缩包。 |
zip -r archive.zip dir/ (打包目录)unzip archive.zip (解压) |
系统信息和管理
| 命令 | 描述 | 示例 |
|---|---|---|
top / htop |
显示系统中运行的进程,并按资源使用排序。htop 是 top 的增强版,更直观。 |
top (按 q 退出)常用交互键: M(按内存排序), P(按CPU排序), k(结束进程) |
ps |
Process Status:显示当前运行的进程快照。 | ps aux (显示所有用户的详细进程列表)ps -ef (另一种显示所有进程的方式) |
kill / killall |
结束一个正在运行的进程。 | kill -9 1234 (强制结束PID为1234的进程)killall firefox (结束所有名为 firefox 的进程) |
df |
Disk Free:显示文件系统的磁盘空间使用情况。 | df -h (以人类可读方式显示,如 1K, 234M) |
du |
Disk Usage:显示目录或文件的磁盘使用量。 | du -sh /home/user (显示 /home/user 的总大小)参数: s(汇总), h(人类可读) |
free |
显示系统内存的使用情况。 | free -h (以人类可读方式显示内存) |
uname |
显示系统信息。 | uname -a (显示所有可用信息,包括内核版本、主机名等) |
history |
显示用户输入过的命令历史。 | history!123 (执行历史记录中编号为123的命令) |
网络工具
| 命令 | 全称 | 描述 | 示例 |
|---|---|---|---|
ping |
- | 测试与另一台主机的网络连接。 | ping google.com |
ssh |
Secure Shell | 安全地登录到远程主机。 | ssh user@remote_server_ip |
scp |
Secure Copy | 通过 SSH 在本地和远程主机之间安全地复制文件。 | scp file.txt user@remote:/path/to/destination/ |
wget / curl |
- | 从网络下载文件。curl 功能更全面,常用于API交互。 |
wget https://example.com/file.zipcurl -I https://example.com (获取HTTP头信息) |
netstat / ss |
- | 显示网络连接、路由表、接口统计等。ss 是 netstat 的现代替代品。 |
ss -tuln (显示所有监听的TCP和UDP端口) |
用户和权限管理 (通常需要 sudo)
| 命令 | 描述 | 示例 |
|---|---|---|
sudo |
Superuser do:以超级用户或另一个用户的身份执行命令。 | sudo apt update (在 Debian/Ubuntu 上更新软件列表)sudo yum install httpd (在 CentOS/RHEL 上安装Apache) |
su |
Switch User:切换到另一个用户。 | su - (切换到root用户,并加载其环境变量)su - username (切换到指定用户) |
useradd / userdel |
添加或删除用户。 | sudo useradd -m newuser (创建新用户并创建主目录)sudo userdel newuser (删除用户) |
passwd |
修改用户密码。 | passwd (修改当前用户密码)sudo passwd newuser (修改其他用户密码) |
文本处理 (三剑客)
这三个命令是 Unix/Linux 文本处理的利器,经常通过管道 组合使用。

| 命令 | 描述 | 示例 |
|---|---|---|
cat |
Concatenate,但常用于将文件内容通过管道传递给其他命令。 |
cat file.txt \| grep "error" |
grep |
Global Regular Expression Print,过滤行。 |
ps aux \| grep "nginx" |
awk |
Aho, Weinberger, and Kernighan,按列处理文本。 |
cat /etc/passwd \| awk -F':' '{print $1}' (以冒号为分隔符,打印第一列,即用户名) |
sed |
Stream Editor,用于流编辑文本,如替换、删除。 | echo "hello world" \| sed 's/world/universe/' (将 "world" 替换为 "universe") |
管道 : 将一个命令的输出作为另一个命令的输入。
重定向 > 和 >>:
>: 将输出写入文件,覆盖。>>: 将输出追加到文件末尾,不覆盖。
进程控制
| 命令 | 描述 | 示例 |
|---|---|---|
& |
在命令末尾加上 &,可以让命令在后台运行。 |
sleep 100 & |
Ctrl + Z |
暂停当前正在运行的进程,并将其放到后台。 | (运行一个命令后,按 Ctrl+Z) |
jobs |
显示当前 shell 会话中后台运行的任务。 | jobs |
fg / bg |
fg 将后台任务调回前台,bg 让后台任务继续运行。 |
fg %1 (将任务1调回前台)bg %1 (让任务1在后台继续运行) |
学习建议
- 动手实践: 不要只看不练,打开你的终端,尝试每一个命令。
- 从简单开始: 先掌握
ls,cd,pwd,mkdir,touch,cp,mv,rm。 - 理解
man页面: 每个命令都有详细的man(manual) 页面,输入man ls查看帮助,学会使用man是成为 Unix 高手的关键一步。 - 善用
--help: 很多命令也支持command --help来显示常用选项。 - 组合使用: 学会使用管道 和重定向
>>>,你会发现命令行的强大之处。
希望这份指南对你有帮助!Unix/Linux 的世界非常广阔,命令行是其精髓所在,祝你学习愉快!

