这份手册专为 Linux 新手设计,用最直白的语言覆盖日常操作必备的基础命令。不需要死记硬背——先理解逻辑,再动手练习,遇到记不住的随时翻这份手册就行。
目录
- 十三、文本处理三剑客:grep / awk / sed
〇、写在前面:命令长什么样?
Linux 命令的基本格式:
command [-options] [parameter]
| | |
|---|
command | | ls |
-options | | -l |
parameter | | /home |
选项前面带 一个短横线-l 是短选项,两个短横线--long 是长选项。多个短选项可以合写,比如 ls -alh 等于 ls -a -l -h。
内部命令 vs 外部命令
- 内部命令Shell 自带,启动即可用,速度快。如
cd、echo、export。 - 外部命令独立程序,从磁盘加载,功能更强大。如
ls、grep、find。
用 type 命令名 可以判断一个命令是内部还是外部的:
type cd # cd is a shell builtintype ls # ls is aliased to 'ls --color=auto'
一、获取帮助
记不住命令参数是正常的,Linux 提供了三种查帮助的方式:
| | |
|---|
help | help cd | |
man | man ls | |
--help | ls --help | |
man 手册常用快捷键:
💡 小技巧:大多数命令都支持 命令名 --help,比 man 更简短直接,适合快速查参数。
二、文件与目录操作
这是你每天都会用到的命令,优先掌握。
2.1 ls — 列出目录内容
ls # 列出当前目录ls -l # 长格式(权限、大小、时间)ls -a # 显示隐藏文件(以 . 开头的)ls -lh # 长格式 + 人性化大小(KB/MB)ls -lt # 按修改时间排序(最新在前)ls -R # 递归显示子目录内容ls -alh # 最常用组合:全部文件 + 详细 + 人性化
输出示例:
-rw-r--r-- 1 user user 2.3K 3月 29 10:00 readme.mddrwxr-xr-x 3 user user 4.0K 3月 29 09:50 src/
第一列字母含义:d 目录、- 普通文件、l 符号链接。
2.2 cd — 切换目录
cd # 回到用户主目录(等同于 cd ~)cd .. # 返回上一级目录cd /etc # 进入绝对路径cd Documents # 进入相对路径(当前目录下的 Documents)cd - # 回到上一次所在的目录(很实用!)
2.3 pwd — 显示当前路径
pwd # 输出当前所在的完整路径
2.4 mkdir — 创建目录
mkdir project # 创建单个目录mkdir -p project/src/main/java # 递归创建多级目录mkdir dir1 dir2 dir3 # 一次创建多个目录
2.5 touch — 创建空文件
touch file.txt # 创建空文件(如已存在则更新时间戳)touch a.txt b.txt c.txt # 一次创建多个
2.6 cp — 复制文件或目录
cp file.txt /home/backup/ # 复制文件到指定目录cp -r src/ /home/backup/ # 复制目录(必须加 -r)cp -i file.txt /home/backup/ # 覆盖前提示确认cp -u file.txt /home/backup/ # 仅当源文件更新时才复制cp -v file.txt /home/backup/ # 显示复制过程
2.7 mv — 移动或重命名
mv file.txt /home/new_folder/ # 移动文件mv old_name.txt new_name.txt # 重命名mv -i file.txt /home/new_folder/ # 覆盖前提示
2.8 rm — 删除文件或目录
rm file.txt # 删除文件rm -i file.txt # 删除前确认rm -r folder/ # 删除目录及其内容rm -rf folder/ # 强制删除,不提示(⚠️ 高危操作!)
⚠️ rm 没有回收站,删了就是真删了。新手建议始终加 -i 参数,或者用 trash-put(需安装 trash-cli)代替 rm。
2.9 ln — 创建链接
ln -s /path/to/target link_name # 创建软链接(类似快捷方式)ln /path/to/target link_name # 创建硬链接
软链接最常用,记住 ln -s 目标 链接名 就行。
三、文件查看与编辑
3.1 cat — 查看文件全部内容
cat file.txt # 输出全部内容cat -n file.txt # 带行号输出cat file1 file2 > merged.txt # 合并多个文件
3.2 less — 分页查看(推荐)
less large_file.log
💡 less 比 more 功能强得多(支持上翻、搜索),日常优先用 less。
3.3 head / tail — 查看头部或尾部
head -n 20 file.txt # 查看前 20 行tail -n 20 file.txt # 查看后 20 行tail -f access.log # 实时监控文件末尾(看日志神器)tail -f -n 100 access.log # 先显示最后 100 行,再实时跟踪
3.4 nano / vim — 终端文本编辑器
nano(新手友好):
nano file.txt # 打开文件编辑# Ctrl+O 保存,Ctrl+X 退出
vim(功能强大,学习曲线陡):
vim file.txt # 打开文件# 按 i 进入编辑模式# 按 Esc 回到普通模式# 输入 :wq 保存退出,:q! 不保存退出
新手先用 nano,等熟悉命令行之后再学 vim。
3.5 wc — 统计字数/行数
wc file.txt # 行数 词数 字节数wc -l file.txt # 仅统计行数wc -w file.txt # 仅统计词数
3.6 diff — 比较文件差异
diff file1.txt file2.txt # 比较两个文件diff -u file1.txt file2.txt # 统一格式输出(更易读)
四、文件搜索
4.1 find — 按条件搜索文件
# 按名称搜索find /home -name "*.txt" # 搜索所有 .txt 文件find /var/log -iname "syslog" # 忽略大小写# 按类型搜索find /tmp -type d -name "temp*" # 搜索目录find /home -type f -name "*.log" # 搜索普通文件# 按大小搜索find /home -size +100M # 大于 100MB 的文件find /home -size -1k # 小于 1KB 的文件# 按时间搜索find . -mtime -7 # 最近 7 天内修改过的文件find . -mtime +30 # 超过 30 天没修改的文件# 找到后执行操作find /tmp -name "*.tmp" -delete # 找到并删除find . -name "*.log" -exec gzip {} \; # 找到并压缩
4.2 which / whereis — 查找命令位置
which python3 # 查找可执行文件的路径whereis nginx # 查找命令的二进制、源码和手册位置
五、权限管理
5.1 chmod — 修改文件权限
权限分三组:所有者 (u) / 所属组 (g) / 其他人 (o),每组有 读 (r=4) / 写 (w=2) / 执行 (x=1) 三种权限。
数字表示法(最常用):
chmod 755 script.sh # 所有者 rwx,组和其他人 rxchmod 644 file.txt # 所有者 rw,组和其他人只读chmod 600 secret.key # 仅所有者可读写
常用权限速查:
| | |
|---|
755 | rwxr-xr-x | |
644 | rw-r--r-- | |
600 | rw------- | |
777 | rwxrwxrwx | |
字母表示法:
chmod u+x script.sh # 给所有者加执行权限chmod g+w,o-r file.txt # 组加写权限,其他人去读权限chmod a+r file.txt # 所有人加读权限
5.2 chown — 更改所有者
chown user1 file.txt # 更改所有者chown user1:group1 file.txt # 同时更改所有者和所属组chown -R user1:group1 /data/ # 递归更改整个目录
5.3 sudo — 以管理员身份执行
sudo apt update # 以 root 权限运行sudo -i # 切换到 root 用户sudo su - user1 # 切换到其他用户
六、用户与用户组
whoami # 查看当前登录用户id # 查看当前用户的 UID、GID 和所属组id user1 # 查看指定用户信息# 用户管理(需 sudo)sudo useradd -m newuser # 创建新用户(-m 创建主目录)sudo passwd newuser # 设置密码sudo userdel -r olduser # 删除用户(-r 同时删除主目录)sudo usermod -aG docker user1 # 将用户加入 docker 组# 用户组管理sudo groupadd devteam # 创建组sudo groupdel devteam # 删除组groups user1 # 查看用户所属的组
七、进程管理
7.1 ps — 查看进程快照
ps aux # 列出所有进程(最常用)ps -ef # 全格式,含父进程 IDps aux | grep nginx # 查找特定进程
ps aux 输出各列含义:
7.2 top / htop — 实时资源监控
top # 实时查看 CPU、内存、进程htop # 更友好的交互界面(需安装)
top 常用按键:P 按 CPU 排序,M 按内存排序,q 退出。
7.3 kill / killall — 终止进程
kill 1234 # 发送 SIGTERM(正常终止)kill -9 1234 # 发送 SIGKILL(强制杀死)killall nginx # 按进程名终止所有匹配进程
7.4 后台运行
command & # 命令后台运行nohup command & # 后台运行 + 退出终端不停止jobs # 查看当前终端的后台任务fg %1 # 将后台任务调到前台bg %1 # 恢复后台暂停的任务
八、系统信息
uname -a # 内核版本、架构等完整信息hostname # 主机名uptime # 系统运行时间 + 负载date # 当前日期时间cal # 显示日历lsb_release -a # 发行版信息(Ubuntu/Debian)cat /etc/os-release # 通用方式查看发行版信息free -h # 内存使用情况(人性化显示)lscpu # CPU 信息
九、磁盘与存储
df -h # 查看各分区磁盘使用情况du -sh /var/log # 查看某个目录的总大小du -sh * # 查看当前目录下各项的大小du -h --max-depth=1 # 只看一级子目录大小# 排序找出占空间最多的目录du -h --max-depth=1 /home | sort -rh | head -10
十、网络工具
10.1 ping — 测试网络连通性
ping baidu.com # 持续 ping(Ctrl+C 停止)ping -c 4 baidu.com # 只发 4 个包
10.2 curl — HTTP 请求工具
curl https://example.com # 获取网页内容curl -I https://example.com # 只看响应头curl -o file.html https://example.com # 下载保存到文件curl -L https://short.url # 跟随重定向curl -X POST -d "key=value" URL # 发送 POST 请求
10.3 wget — 下载文件
wget https://example.com/file.zip # 下载文件wget -O newname.zip https://example.com/f # 指定保存文件名wget -c https://example.com/big.iso # 断点续传
10.4 其他网络命令
ip addr # 查看网卡和 IP 地址(替代 ifconfig)ss -tlnp # 查看监听端口(替代 netstat)netstat -tlnp # 查看监听端口(经典写法)traceroute baidu.com # 追踪路由路径nslookup baidu.com # DNS 查询host baidu.com # DNS 查询(更简洁)
十一、压缩与解压
11.1 tar — 打包/压缩(最常用)
# 打包并压缩(gzip)tar -czvf project.tar.gz /home/project# 解压到当前目录tar -xzvf project.tar.gz# 解压到指定目录tar -xzvf project.tar.gz -C /home/backup# 仅查看压缩包内容(不解压)tar -tzvf project.tar.gz
参数速记:c 创建、x 解压、z gzip、v 显示过程、f 指定文件名。
11.2 zip / unzip — 跨平台压缩
zip -r project.zip /home/project # 压缩目录unzip project.zip # 解压unzip project.zip -d /home/backup # 解压到指定目录unzip -l project.zip # 查看内容(不解压)
11.3 gzip / gunzip — 单文件压缩
gzip file.txt # 压缩(原文件被替换为 file.txt.gz)gunzip file.txt.gz # 解压gzip -k file.txt # 压缩但保留原文件
十二、软件包管理
Debian / Ubuntu 系列(apt)
sudo apt update # 更新软件包列表sudo apt upgrade # 升级已安装的软件sudo apt install nginx # 安装软件sudo apt remove nginx # 卸载软件(保留配置)sudo apt purge nginx # 彻底卸载(含配置文件)sudo apt autoremove # 清理不再需要的依赖apt search text-editor # 搜索软件包apt show nginx # 查看软件包详细信息
CentOS / RHEL 系列(yum / dnf)
sudo yum update # 更新所有软件sudo yum install nginx # 安装软件sudo yum remove nginx # 卸载软件yum search nginx # 搜索软件包
💡 CentOS 8+ 推荐用 dnf,用法和 yum 基本一样。
十三、文本处理三剑客:grep / awk / sed
这三个命令在日志分析、数据处理中极为常用,是 Linux 的灵魂工具。
13.1 grep — 文本搜索
grep "error" log.txt # 搜索包含 error 的行grep -i "error" log.txt # 忽略大小写grep -n "error" log.txt # 显示行号grep -r "TODO" /home/project # 递归搜索目录grep -v "debug" log.txt # 反向匹配(不含 debug 的行)grep -c "error" log.txt # 统计匹配行数grep -o "error" log.txt # 只输出匹配的部分
常用正则表达式:
grep "^root" /etc/passwd # 以 root 开头的行grep "error$" log.txt # 以 error 结尾的行grep "te.t" file.txt # te 和 t 之间任意一个字符grep -E "error|warn" log.txt # 匹配 error 或 warn(扩展正则)
13.2 awk — 文本分析
awk 擅长按列处理结构化文本(空格或指定分隔符分割)。
awk '{print $1}' file.txt # 打印第一列awk '{print $1, $3}' file.txt # 打印第 1 和第 3 列awk -F "," '{print $1, $2}' data.csv # 以逗号分隔,打印前两列awk 'NR>1 {print $0}' file.txt # 跳过第一行(标题行)awk '{sum+=$2} END {print sum}' score.txt # 累加第二列求和awk 'NF==3 {print}' file.txt # 只打印有 3 个字段的行
核心变量:$0 整行、$1~`$n 第 n 列、NR 行号、NF 列数、FS` 分隔符。
13.3 sed — 流式文本编辑
sed 擅长批量替换、删除、插入文本,逐行处理,默认不修改原文件。
# 替换sed 's/old/new/' file.txt # 替换每行第一个 oldsed 's/old/new/g' file.txt # 全局替换sed -i 's/old/new/g' file.txt # 直接修改原文件sed -i.bak 's/old/new/g' file.txt # 修改前自动备份为 .bak# 删除sed '3d' file.txt # 删除第 3 行sed '1,5d' file.txt # 删除第 1-5 行sed '/error/d' file.txt # 删除包含 error 的行sed '/^$/d' file.txt # 删除空行# 打印(配合 -n 使用)sed -n '3p' file.txt # 只打印第 3 行sed -n '10,20p' file.txt # 打印第 10-20 行sed -n '/test/p' file.txt # 打印包含 test 的行# 插入/追加sed '3a 这是新增的一行' file.txt # 在第 3 行后追加sed '3i 这是插入的一行' file.txt # 在第 3 行前插入
⚠️ 使用 sed -i 修改原文件前,建议先不加 -i 预览输出,确认无误再执行。
十四、输入输出重定向与管道
14.1 输出重定向
echo "hello" > file.txt # 覆盖写入echo "world" >> file.txt # 追加写入ls /nonexist 2> error.log # 将错误信息写入文件ls /nonexist 2>&1 | less # 合并标准输出和错误输出command > output.txt 2>&1 # 所有输出都写入文件
14.2 输入重定向
wc -l < file.txt # 将文件内容作为命令的输入sort < unsorted.txt > sorted.txt # 读入 → 排序 → 输出
14.3 管道 |
管道把前一个命令的输出,作为后一个命令的输入:
ps aux | grep nginx # 找 nginx 进程ls -l | wc -l # 统计当前目录有多少个文件cat access.log | sort | uniq -c | sort -rn | head -10 # 统计访问频率 Top10history | grep "apt" # 搜索历史命令中包含 apt 的dmesg | tail -20 # 查看最近 20 条内核消息
💡 管道可以无限串联,是 Linux 的精髓之一——把简单的命令组合成强大的工作流。
十五、环境变量与别名
15.1 环境变量
echo $PATH # 查看 PATH 变量echo $HOME # 查看主目录env # 查看所有环境变量export MY_VAR="hello" # 设置临时环境变量(当前终端有效)
永久生效:写入 ~/.bashrc(Bash)或 ~/.zshrc(Zsh),然后 source ~/.bashrc。
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrcsource ~/.bashrc
15.2 别名 alias
alias ll='ls -alh' # 创建别名(当前终端有效)alias gs='git status'unalias ll # 取消别名
永久生效:同样写入 ~/.bashrc 或 ~/.zshrc。
十六、SSH 远程连接
ssh user@192.168.1.100 # 远程登录ssh -p 2222 user@host # 指定端口ssh-keygen -t ed25519 # 生成密钥对(推荐 ed25519)ssh-copy-id user@host # 将公钥复制到远程服务器(免密登录)# 文件传输scp file.txt user@host:/path/ # 上传文件scp user@host:/path/file.txt . # 下载文件scp -r dir/ user@host:/path/ # 上传目录
💡 配置 ~/.ssh/config 可以给常用服务器设别名,免得每次输长串:
Host myserver HostName 192.168.1.100 User admin Port 2222
之后直接 ssh myserver 即可。
十七、效率技巧
17.1 Tab 自动补全
输入命令或路径的前几个字符,按 Tab 键自动补全。如果有多个匹配项,按两次 Tab 会列出所有选项。
17.2 历史命令
history # 查看所有历史命令history | grep "docker" # 搜索历史命令!50 # 执行编号为 50 的历史命令!! # 重复上一条命令sudo !! # 用 sudo 重新执行上一条命令(超实用!)
💡 按 Ctrl+R 可以反向搜索历史命令,输入关键词即可匹配。
17.3 快捷键
| |
|---|
Ctrl+C | |
Ctrl+Z | |
Ctrl+D | |
Ctrl+L | |
Ctrl+A | |
Ctrl+E | |
Ctrl+U | |
Ctrl+K | |
Ctrl+W | |
17.4 通配符
ls *.txt # 匹配所有 .txt 文件ls file?.txt # ? 匹配单个字符(file1.txt, fileA.txt)ls file[123].txt # 匹配 file1.txt, file2.txt, file3.txtrm *.log # 删除所有 .log 文件
17.5 xargs — 将输入转为命令参数
find . -name "*.tmp" | xargs rm # 找到所有 .tmp 文件并删除cat urls.txt | xargs -I {} curl {} # 逐行读取 URL 并 curl
十八、新手学习建议
先抓高频,循序渐进:优先掌握 ls、cd、mkdir、rm、cp、mv、cat、grep、ps,这些覆盖了 80% 的日常场景。
动手比背诵重要:搭一个 Linux 环境(虚拟机、云服务器、WSL 都行),每学一个命令就去终端里敲一遍,试不同参数,看输出变化。
善用帮助信息:记不住参数就 man 或 --help,培养自己查文档的习惯比依赖搜索引擎更高效。
结合真实场景练习:模拟日志分析(grep + awk + sed)、文件备份(cp + tar)、进程排查(ps + top + kill),把命令串起来用,才真正记得住。
积累自己的命令手册:把常用的命令组合记下来(比如这份手册),反复用,慢慢就变成肌肉记忆了。
不要怕犯错:Linux 命令行最大的好处就是可以反复试。除了 rm -rf,大部分操作都可以撤回或重来。
附录:高频命令速查表
| | |
|---|
| 目录 | ls | |
| cd | |
| pwd | |
| mkdir -p | |
| 文件 | touch | |
| cp -r | |
| mv | |
| rm -r | |
| ln -s | |
| 查看 | cat | |
| less | |
| head | |
| tail -f | |
| 搜索 | find | |
| grep | |
| which | |
| 权限 | chmod | |
| chown | |
| sudo | |
| 进程 | ps aux | |
| top | |
| kill -9 | |
| 系统 | uname -a | |
| df -h | |
| free -h | |
| 网络 | ping | |
| curl | |
| ssh | |
| scp | |
| 压缩 | tar -czvf | |
| tar -xzvf | |
| zip | |
| 软件 | apt install | |
| apt remove | |
| 文本 | awk | |
| sed | |
| wc | |
| 效率 | Tab | |
| Ctrl+R | |
| !! | |
| sudo !! | |
Linux 命令学习重在长期积累,不可急于求成。遇到问题多思考多尝试,逐步理解,最终灵活运用,做到学以致用。