Linux基本指令
ls 指令详解
1. 什么是 ls
ls(list 的缩写)是 Linux 中最常用的指令,用于列出目录下的文件和子目录。相当于 Windows 里的 dir。
语法:
ls [选项] [文件或目录]
2. 常用选项
| 选项 | 功能 | 说明 |
|---|---|---|
| -l | 长格式显示 | 显示权限、所有者、大小、修改时间等详细信息 |
| -a | 显示所有文件 | 包括以。开头的隐藏文件 |
| -A | 显示所有文件 | 与 -a 类似,但不显示。和 ... |
| -h | 人性化大小 | 与 -l 搭配,文件大小显示为 K/M/G |
| -R | 递归列出 | 连同子目录内容一起列出 |
| -t | 按时间排序 | 最新的在前 |
| -r | 倒序排列 | 常与其他选项组合 |
| -S | 按文件大小排序 | 大的在前 |
| -d | 只显示目录本身 | 不显示目录内内容 |
3. 常见用法示例
ls # 列出当前目录
ls -l # 长格式显示(最常用!)
ls -la # 长格式 + 显示隐藏文件(最高频组合)
ls -lh # 长格式 + 人性化文件大小
ls /etc # 列出指定目录
ls -R /home # 递归列出整个目录树
ls -lt # 按修改时间排序
4. 关于 ls -l 输出解读(进阶知识点)
ls -l 的输出第一列是权限信息,如 -rw-r--r--:
- 第 1 位:文件类型(- 普通文件,d 目录,l 链接)
- 第 2-4 位:所有者(user)权限
- 第 5-7 位:所属组(group)权限
- 第 8-10 位:其他人(other)权限
- 每位含义:r 读、w 写、x 执行
5. 小技巧(写进博客很加分)
- ls 支持通配符:
ls *.txt、ls file?.log - 别名简化:
alias ll='ls -l'(很多系统自带) - ls 默认不显示隐藏文件,必须加 -a
pwd 指令详解
什么是 pwd
pwd(Print Working Directory 的缩写)用于 * 显示当前所在的工作目录(绝对路径) * 。
语法:
pwd [选项]
常见用法示例
pwd # 显示当前目录,如 /home/user
pwd -P # 显示真实物理路径
cd 指令详解
1. 什么是 cd
cd 用于切换当前工作目录,是你在 Linux 里"行走"的基本指令。
语法:
cd [目录路径]
2. 特殊路径写法
| 写法 | 含义 |
|---|---|
| cd / | 切换到根目录 |
| cd ~ | 回到家目录 (等价于 cd) |
| cd | 不带参数,默认回到家目录 |
| cd ... | 返回上一级目录 |
| cd .../... | 向上返回两级 |
| cd - | 回到上一次所在目录 |
| cd /etc | 切换到绝对路径 |
| cd etc | 切换到当前目录下的子目录 (相对路径) |
3. 常见用法示例
cd /home/user/Desktop # 绝对路径进入桌面
cd ... # 退到上级目录
cd - # 来回穿梭于两个目录,超好用!
cd # 直接回家
4. 知识重点
- 绝对路径:以 / 开头,从根目录开始,如 /etc/nginx
- 相对路径:不以 / 开头,从当前目录开始,如 cd nginx/conf
- . 表示当前目录,... 表示上级目录
- 用 pwd 验证是否切换成功
5. 小技巧
- 配合 ls 使用:cd /etc && ls(先切目录再列出)
- 用 Tab 键自动补全路径,避免打错
- 配错目录时用 cd - 快速回到上一个位置
touch 指令详解
1. 什么是 touch
touch 主要用于创建空文件和修改文件时间戳。
语法:
touch [选项] 文件名
2. 两大核心功能
功能一:创建空文件 (新手最常用)
touch test.txt # 创建一个空的 test.txt
touch a.txt b.txt # 一次性创建多个文件
touch "my file.txt" # 文件名含空格要加引号
功能二:更新时间戳(进阶知识点)
- 每个文件都有"最后修改时间"和"最后访问时间"
- 对已存在的文件执行 touch,会把时间更新为当前时间,内容不变
- 常用来让文件"看起来刚改过"
3.常见选项
| 选项 | 功能 |
|---|---|
| -a | 只修改访问时间 |
| -m | 只修改修改时间 |
| -t | 指定时间戳,如 touch -t 202401011200 file |
| -c | 文件不存在时不创建 (不报错) |
4. 常见用法示例
touch newfile.txt # 创建文件
touch -c old.txt # 不创建,仅当存在才更新时间
touch -t 202501010000 log.txt # 把时间设为指定时刻
5. 知识重点
- touch 创建的是空文件(0 字节),可用于占位或测试
- 创建后可用 ls -l 查看,显示大小为 0
- 文件已存在时,touch 不会清空内容,只更新时间
mkdir 指令详解
1. 什么是 mkdir
mkdir(Make Directory 的缩写)用于创建新目录,是文件系统的"建房"指令。
语法:
mkdir [选项] 目录名
2. 常见用法示例
mkdir docs # 创建单个目录
mkdir css js img # 一次创建多个目录
mkdir -p a/b/c # 递归创建多级目录
mkdir -p proj/{src,bin} # 一次创建多个子目录
mkdir "my folder" # 目录名含空格加引号
3. 常用选项
| 选项 | 功能 |
|---|---|
| -p | 递归创建多级目录,不存在就自动逐级创建 (最常用!) |
| -v | 显示创建过程,打印每步信息 |
| -m | 创建时直接指定权限,如 mkdir -m 755 test |
4. 知识重点
- -p 是灵魂选项:mkdir -p a/b/c 会连中间目录一起创建,没有 -p 时上级目录不存在会报错
- 目录名规则:不能和同级已有文件/目录重名
- 用 mkdir -m 设置权限,可配合权限章节学习
5. 小技巧
- 常见建站目录结构:mkdir -p project/{css,js,img}
- 搭配 touch 快速建目录+空文件:mkdir proj && touch proj/readme.md
- 用 ls -l 验证:创建的目录类型是 d,而文件是 -
1. 什么是 rmdir
rmdir(Remove Directory 的缩写)用于删除空目录。注意关键词:只能删空目录。
语法:
rmdir[选项]目录名
2. 常见用法示例
rmdir empty_dir # 删除空目录
rmdir -p a/b/c # 递归删除,连带空的上级目录
rmdir -p a/b/c # a/b/c 都空时,全部删除
3. 常用选项
| 选项 | 功能 |
|---|---|
| -p | 递归删除,连上级空目录一起删 |
| -v | 显示删除过程 |
4. 知识重点
- 目录里只要有文件或子目录就删不掉,会报错 Directory not empty
- 所以 rmdir 用得少,因为它"太挑剔"了
rm 指令详解
1. 什么是 rm
rm(Remove 的缩写)用于删除文件和目录,是 Linux 里最危险的指令之一(没有回收站!)。
语法:
rm [选项] 文件或目录
2. 常见用法示例
rm file.txt # 删除单个文件
rm a.txt b.txt # 删除多个文件
rm -i file.txt # 删除前逐个确认
rm -f file.txt # 强制删除,不询问
rm -r dir/ # 递归删除目录及内容(危险!)
rm -rf dir/ # 递归强制删除(最危险组合!)
3. 常用选项
| 选项 | 功能 |
|---|---|
| -r | 递归删除,删除目录必须加 |
| -f | 强制删除,不提示、不报错 |
| -i | 删除前逐个确认 |
| -v | 显示删除过程 |
| -d | 删除空目录 (类似 rmdir) |
4. 知识重点
- rm 删除的文件无法恢复,Linux 没有回收站概念
- rm -rf / 是著名的"自杀指令",会删光系统,千万别在真机乱试
- 新手建议默认加 -i,或先用 mv 到临时目录代替删除
5. 安全建议(写博客的重要警示)
- 删除前先用 ls 确认路径正确
- 慎用通配符:
rm *.txt可能误删 - 可建别名: alias rm='rm -i' 给自己加保险
man 指令详解
1. 什么是 man
man(Manual 的缩写)用于查看指令的手册,是 Linux 里最重要的"自学工具"。任何指令不会用,man 一下就有答案。
语法:
man [选项] 指令名
2. 常见用法示例
man ls # 查看 ls 的手册
man man # 查看 man 自己的手册(循环了)
man -k time # 关键词搜索,列出相关指令
man -f ls # 只显示 ls 的一行简介
3. 常用选项
| 选项 | 功能 |
|---|---|
| -k | 按关键词搜索手册 |
| -f | 显示指令的一行简介 (同 whatis) |
| -a | 循环显示所有相关手册 |
4. man 手册的 9 个章节(写博客重点)
| 章节 | 内容 |
|---|---|
| 1 | 用户指令 (我们学的 ls、cd 都在这里) |
| 2 | 系统调用 |
| 3 | 库函数 (C 语言) |
| 4 | 设备文件 |
| 5 | 配置文件格式 |
| 6 | 游戏 |
| 7 | 杂项 |
| 8 | 系统管理命令 |
| 9 | 内核例程 |
5. 在 man 页面里的导航键
| 按键 | 功能 |
|---|---|
| 空格 /f | 向下翻一页 |
| b | 向上翻一页 |
| / 关键词 | 向下搜索 |
| q | 退出手册 |
cp 指令详解
1. 什么是 cp
cp(Copy 的缩写)用于复制文件和目录 ,相当于 Windows 的"复制+粘贴"。
语法:
cp [选项] 源文件 目标位置
2. 常见用法示例
cp a.txt b.txt # 复制 a.txt 并重命名为 b.txt
cp a.txt /home/user/ # 复制到目标目录,保持原名
cp -r docs/ backup/ # 递归复制整个目录
cp -i a.txt b.txt # 覆盖前确认
cp -p a.txt b.txt # 保留文件属性(时间、权限)
cp -v a.txt b.txt # 显示复制过程
3. 常用选项
| 选项 | 功能 |
|---|---|
| -r | 递归复制,复制目录必须加 |
| -i | 覆盖前提示确认 |
| -p | 保留原文件的权限、时间等属性 |
| -a | 完整复制 (含属性),常用来做备份 |
| -v | 显示复制过程 |
| -f | 强制覆盖,不提示 |
| -u | 仅当源文件更新时才复制 |
4. 知识重点
- 复制目录必须加 -r,否则报错 omitting directory
- cp a.txt b.txt:目标名不同=复制并改名;目标名相同=覆盖
- 目标是一个已存在目录时,文件会复制进目录并保持原名
- 注意:默认 cp 不保留原文件的时间戳/权限,要保留用 -p 或 -a
mv 指令详解
1. 什么是 mv
mv(Move 的缩写)有两个功能:移动文件/目录 和 重命名 ,相当于 Windows 的"剪切"。
语法:
mv [选项] 源文件 目标位置
2. 常见用法示例
mv a.txt /home/user/ # 移动文件到目标目录
mv a.txt b.txt # 重命名
mv docs/ backup/ # 移动整个目录
mv -i a.txt b.txt # 覆盖前确认
mv -v a.txt b.txt # 显示过程
3. 常用选项
| 选项 | 功能 |
|---|---|
| -i | 覆盖前提示确认 |
| -f | 强制覆盖,不提示 |
| -v | 显示移动过程 |
| -n | 目标已存在则不覆盖 |
4. 知识重点
- mv 移动或重命名后,源文件不再存在(和 cp 的本质区别)
- 重命名:目标不存在时,就是改名
- 移动:目标是已存在目录时,文件被移入该目录
- 移动目录不需要加 -r(rm/cp 才需要)
- mv 在同分区内操作速度极快(只是改路径记录,不复制数据)
5. 写博客的示例图
重命名
mv report.txt report_final.txt
移动
mv report_final.txt /home/user/archive/
移动+改名
mv report.txt /tmp/report_backup.txt
防覆盖
mv -i report.txt /tmp/
6. cp vs mv
| cp | mv | |
|---|---|---|
| 效果 | 复制,源文件保留 | 剪切,源文件消失 |
| 用途 | 备份、复制 | 移动、重命名 |
| 移动目录 | 需加 -r | 不用 |
| 危险提示 | 较少 | 覆盖时注意 |
cat 指令详解
1. 什么是 cat
cat(Concatenate 的缩写)最常用于查看文件内容,也可用来连接文件、创建文件 。它是查看小文件最方便的指令。
语法:
cat [选项] 文件名
2. 常见用法示例
cat a.txt # 查看文件内容
cat a.txt b.txt # 依次显示多个文件内容
cat a.txt b.txt > c.txt # 把两个文件合并成一个
cat > new.txt # 创建文件并输入内容(Ctrl+D 结束)
cat -n a.txt # 显示内容并带行号
3. 常用选项
| 选项 | 功能 |
|---|---|
| -n | 显示行号 |
| -b | 只给非空行编号 |
| -s | 压缩连续空行 |
| -E | 每行末尾显示 $ 符号 |
| -A | 显示所有不可见字符 |
4. 知识重点
- cat 适合看短文件;长文件会瞬间刷屏,用 less / more 更合适
- 重定向符号 >:把输出写入文件
cat a.txt > b.txt # 相当于复制
cat a.txt >> b.txt # 追加到末尾 - cat > 文件 交互式创建:输入内容后按 Ctrl+D 保存
- 配合管道: cat a.txt | grep "关键字"
more 指令详解
1. 什么是 more
more 用于分页查看文件内容,专门解决 cat 刷屏的问题------内容超出一屏时,more 会一页一页显示。
语法:
more [选项] 文件名
2. 常见用法示例
more /etc/passwd # 分页查看文件
more -10 a.txt # 每屏只显示 10 行
more +50 a.txt # 从第 50 行开始显示
more -d a.txt # 底部显示提示"按空格继续"
ps -ef | more # 管道配合,长输出分页看
3. 常用选项
| 选项 | 功能 |
|---|---|
| + 数字 | 从指定行开始显示 |
| - 数字 | 每屏显示多少行 |
| -d | 显示提示信息 (按空格继续 / 按 q 退出) |
4. 在 more 页面里的按键
| 按键 | 功能 |
|---|---|
| 空格 | 向下翻一页 |
| Enter | 向下翻一行 |
| / 关键词 | 搜索内容 |
| b | 向上翻一页 (部分版本支持) |
| q | 退出 |
| : 后跟 f | 显示当前文件名和行数 |
less 指令详解
1. 什么是 less
less 是用于分页查看文件内容的指令,功能比 more 更强大,支持上下双向翻页、搜索、跳转,是查看长文件的首选工具。
语法:
less[选项]文件名
2. 常见用法示例
less /etc/nginx/nginx.conf # 查看配置文件
less -N a.txt # 显示行号
less +50 a.txt # 从第 50 行开始查看
ps aux | less # 管道配合分页查看
3. 常用选项
| 选项 | 功能 |
|---|---|
| -N | 显示行号 |
| + 数字 | 从指定行开始查看 |
| -S | 长行不换行,水平滚动 |
| -i | 搜索时忽略大小写 |
4. 在 less 页面里的按键
| 按键 | 功能 |
|---|---|
| 空格 /f | 向下翻一页 |
| b | 向上翻一页 |
| Enter | 向下翻一行 |
| 上下箭头 /j k | 逐行滚动 |
| / 关键词 | 向下搜索 (n 跳到下一处) |
| ? 关键词 | 向上搜索 |
| g | 跳到文件开头 |
| G | 跳到文件末尾 |
| q | 退出 |
5. more vs less 对比
| more | less | |
|---|---|---|
| 翻页方向 | 基本只能下 | 上下都行 |
| 搜索 | 仅向下 / | 向下 / + 向上? |
| 跳转 | 弱 | 强 (g 到开头、G 到末尾) |
| 打开速度 | 快 | 快 |
| 实际使用 | 较少 | 最常用 |
head 指令详解
1. 什么是 head
head 用于查看文件开头的内容,默认显示前 10 行。适合快速预览文件,而不是看完整内容。
语法:
head [选项] 文件名
2. 常见用法示例
head a.txt # 显示前 10 行
head -n 5 a.txt # 显示前 5 行
head -5 a.txt # 简写,同上
head -c 100 a.txt # 显示前 100 个字节
head -n 20 a.txt b.txt # 多个文件,带文件名分隔
3. 常用选项
| 选项 | 功能 |
|---|---|
| -n 数字 | 显示前 N 行 |
| -c 数字 | 显示前 N 个字节 |
| -q | 多文件时隐藏文件名标题 |
| -v | 总是显示文件名标题 |
4. 知识重点
- head -5 是 head -n 5 的简写
- 默认行数是 10 行
- 常和管道配合,快速查看长输出的开头:
history | head # 看最近执行命令的开头部分
ps aux | head -5 # 只看前 5 行(含标题行) - 负数也能用:head -n -5 显示"除了最后 5 行"之外的全部内容
tail 指令详解
1. 什么是 tail
tail 用于查看文件结尾的内容,默认显示最后 10 行。它的 -f 选项能实时跟踪文件更新,是查看日志的首选工具。
语法:
tail [选项] 文件名
2. 常见用法示例
tail a.txt # 显示最后 10 行
tail -n 5 a.txt # 显示最后 5 行
tail -5 a.txt # 简写,同上
tail -f /var/log/syslog # 实时跟踪日志(经典用法!)
tail -n 100 -f a.txt # 先显示末尾100行,再实时跟踪
3. 常用选项
| 选项 | 功能 |
|---|---|
| -n 数字 | 显示最后 N 行 |
| -f | 实时跟踪文件新增内容 (最常用) |
| -F | 文件被删除重建后仍继续跟踪 |
| -c 数字 | 显示最后 N 个字节 |
. 知识重点
- tail -f(follow)是神器:文件有新内容时自动滚动显示,常用于监控日志
- -F 比 -f 更强:日志文件轮转(被 mv 改名重建)时也能继续跟踪
- 常和管道配合看关键信息:
tail -f app.log | grep "ERROR" # 只实时显示报错行
tail -50 app.log # 出事时先回看最后50行
5. 写博客示例场景
场景:部署服务后看启动日志
tail -f /var/log/nginx/access.log
场景:报错排查,只看错误
tail -f /var/log/app.log | grep -i error
场景:配合 head,取中间某段
head -n 50 file | tail -n 10 # 取第 41-50 行
管道( | )的作用
1. 什么是管道
管道符 | 是 Linux 的*"数据传送带":把前一个指令的输出,直接作为后一个指令的输入。让指令像流水线一样协作。
指令1 | 指令2 | 指令3
2. 核心思想:组合出强大功能
单个指令能力有限,管道把它们串起来就能完成复杂任务。这就是 Linux 的设计哲学:小工具,大协作。
3. 常见示例
ls -l | grep "txt" # 在 ls 输出中筛选含 txt 的行
cat a.txt | head -5 # 只看文件前 5 行
cat a.txt | wc -l # 统计文件行数
ps aux | grep "nginx" # 找 nginx 进程
history | grep "git" # 在历史记录中找 git 命令
cat a.txt | sort | uniq # 排序并去重
dmesg | tail -20 # 只看日志末尾 20 行
4. 实际演示流程
ls /bin # 输出几百个文件名(乱)
ls /bin | wc -l # 管道接 wc -l → 得到文件总数
ls /bin | more # 管道接 more → 分页慢慢看
同一个 ls,接不同的指令就得到不同结果------这就是管道的威力。
5. 三个理解角度
- 数据流向:输出 → 管道 → 输入
- 过滤/加工:第二个指令常做筛选(grep)、统计(wc)、排序(sort)
- 分页保护:输出太长时接 more/less,防止刷屏
6. 进阶知识点
- 管道传输的是文本数据(标准输出流)
- 相关概念:重定向 > 是把输出写到文件,而管道是把输出交给另一个指令
cat a.txt > b.txt # 写入文件
cat a.txt | head # 交给指令处理 - 管道链:可以多级串联,如 ps aux | grep nginx | head -5
date 指令详解
1. 什么是date
date 用于显示或设置系统日期和时间,也可以按自定义格式输出时间。
语法:
date [选项] [+格式]
2. 常见用法示例
date # 显示当前时间
date "+%Y-%m-%d" # 显示 2026-08-28
date "+%H:%M:%S" # 显示 14:30:05
date "+%Y年%m月%d日 %H:%M" # 自定义中文格式
date -d "tomorrow" # 显示明天的日期
date -d "+7 days" # 显示 7 天后的日期
3. 常用格式符(写博客重点表格)
| 格式 | 含义 | 示例 |
|---|---|---|
| %Y | 4 位年份 | 2026 |
| %m | 月份 | 08 |
| %d | 日 | 28 |
| %H | 24 小时制小时 | 14 |
| %M | 分钟 | 30 |
| %S | 秒 | 05 |
| %F | 简写日期 | 2026-08-28 |
| %T | 简写时间 | 14:30:05 |
| %w | 星期几 | 5 |
4. 常用选项
| 选项 | 功能 |
|---|---|
| -d | 显示指定时间,如 -d "yesterday" |
| -s | 设置系统时间 (需 root 权限) |
| -u | 显示 UTC 时间 |
5. 知识重点
- 格式符必须以 + 开头,多个符号用引号包起来
- date 常配合其他指令使用(写博客加分点):
tar czf backup_KaTeX parse error: Expected group after '_' at position 58: ... cp app.log app_̲(date +%F).log # 按日期归档日志 - -d 支持自然语言:"next week"、"3 hours ago" 等
6. 进阶知识点
- 显示当前时间戳(Unix 时间戳,秒数):
date +%s - 从时间戳转换回日期:
date -d @1700000000
cal 指令详解
1. 什么是 cal
cal(Calendar 的缩写)用于在终端显示日历,默认显示当前月份的日历。
语法:
cal [选项] [月份] [年份]
2. 常见用法示例
cal # 显示当前月份日历
cal 2027 # 显示 2027 年整年日历
cal 5 2027 # 显示 2027 年 5 月
cal -3 # 显示上个月/本月/下个月
cal -y # 显示整年
cal -j # 显示一年中的第几天(儒略日)
3. 常用选项
| 选项 | 功能 |
|---|---|
| -y | 显示整年日历 |
| -3 | 显示前后共 3 个月 |
| -m 月份 | 以星期一开始显示 |
| -j | 显示一年中的第几天 |
| -A 数字 | 额外显示后面 N 个月 |
find 指令详解
1. 什么是 find
find 用于在指定目录下查找文件和目录,可以按名称、类型、大小、时间等条件精确搜索。它是 Linux 里最强大的查找工具。
语法:
find [查找路径] [查找条件] [执行操作]
2. 常见用法示例
find /etc -name "nginx.conf" # 按文件名查找
find /home -name "*.txt" # 通配符匹配
find / -type d -name "logs" # 按类型查找目录
find /var -size +100M # 按大小查找
find . -name "*.log" -mtime +7 # 查找7天前修改的日志
find /tmp -type f -user root # 按所有者查找
find . -name "*.tmp" -delete # 找到并删除
3. 常用查找条件
| 条件 | 功能 | 示例 |
|---|---|---|
| -name "名字" | 按文件名 | -name "*.conf" |
| -iname "名字" | 忽略大小写 | -iname "nginx.conf" |
| -type f/d | 按类型 (文件 / 目录) | -type f |
| -size +100M | 按大小 (+,- 表范围) | -size +1G |
| -mtime +7 | 按修改天数 | -mtime -1 (1 天内) |
| -user root | 按所有者 | -user root |
| -perm 644 | 按权限 | -perm 644 |
| -maxdepth 2 | 限制搜索深度 | -maxdepth 1 |
4. 组合与操作
find . -name "*.log" -type f # 多个条件叠加(且)
find . -name "*.txt" -o -name "*.md" # 或的关系
find /tmp -name "*.tmp" -exec rm {} \; # 找到后执行命令
find /etc -name "*.conf" -exec cat {} \; # 找到后逐个查看
find . -type f -exec ls -l {} + # 找到后批量操作
5. 与管道配合
find /home -name "*.log" | xargs grep "ERROR" # 在找到的文件里搜关键词
find . -name "*.jpg" -size +5M | head # 限制输出数量
which 指令详解
1. 什么是 which
which 用于查找命令所在的位置,也就是找出某个指令对应的可执行文件路径。
语法:
which [选项] 指令名
2. 常见用法示例
which ls # 输出 /usr/bin/ls
which python # 找到 Python 的安装路径
which ls which # 一次查多个命令
which -a python # 显示所有匹配路径(可能存在多个)
which pwd # 注意:某些 shell 内置命令查不到
3. 常用选项
| 选项 | 功能 |
|---|---|
| -a | 显示所有匹配的路径 (不止第一个) |
| -i | 忽略大小写查找 |
alias 指令详解
1. 什么是 alias
alias(别名)用于给指令取一个"外号",让你用简短的词代替冗长的命令 。它就是前面 ll = ls -l 的原理所在。
语法:
alias 别名='完整命令'
2. 常见用法示例
alias ll='ls -l' # 定义别名
alias la='ls -a'
alias rm='rm -i' # 给 rm 加"保险"(删除前确认)
alias grep='grep --color=auto' # 让 grep 高亮显示
alias # 不带参数 = 列出所有别名
3. 常用用法(写博客重点)
| 用法 | 功能 |
|---|---|
| alias | 列出当前所有别名 |
| alias 名字 =' 命令' | 定义别名 |
| unalias 名字 | 删除别名 |
| unalias -a | 删除所有别名 |
| type ll | 查看某个别名指向什么 |
4. 知识重点
- 临时生效:命令行直接 alias 定义的别名,关闭终端就失效
- 永久生效:写入配置文件 .bashrc,下次启动自动加载:
echo "alias ll='ls -lh'" >> ~/.bashrc
source ~/.bashrc # 立即生效(重新加载配置) - 别名只在当前 shell 生效,不传给子进程
- 别名仅用于命令名简化,不支持复杂参数逻辑(那要用 shell 函数)
grep 指令详解
1. 什么是 grep
grep(Global Regular Expression Print)用于在文件内容中搜索匹配的关键词/模式,并打印出匹配的行 。它是 Linux 里最常用的文本搜索工具。
语法:
grep [选项] 关键词 文件名
2. 常见用法示例
grep "error" app.log # 在日志中找 error
grep -n "error" app.log # 显示匹配行及行号
grep -i "error" app.log # 忽略大小写
grep -r "root" /etc/ # 递归搜索目录下所有文件
grep -c "error" app.log # 统计匹配行数
grep -v "success" app.log # 反向匹配(不含关键词的行)
3. 常用选项
| 选项 | 功能 |
|---|---|
| -n | 显示行号 |
| -i | 忽略大小写 |
| -r / -R | 递归搜索目录 |
| -c | 只统计匹配行数 |
| -v | 反向匹配,输出不含关键词的行 |
| -w | 整词匹配 (不匹配子串) |
| -l | 只显示包含匹配的文件名 |
| -E | 启用扩展正则 (等价 egrep) |
4. 管道配合(写博客最常用场景)
ps aux | grep nginx # 查 nginx 进程
history | grep "git" # 在命令历史中找
ls -l | grep "^d" # 只看目录(以d开头的行)
cat a.txt | grep "关键" | head -10 # 三级串联
tail -f app.log | grep "ERROR" # 实时监控日志里的报错
5. 正则表达式入门(进阶加分点)
grep "^start" a.txt # ^ 行首:以 start 开头
grep "end$" a.txt # $ 行尾:以 end 结尾
grep "^$" a.txt # 匹配空行
grep "app[0-9]" a.txt # \[\] 字符集合:app 后面跟数字
grep -E "a|b" a.txt # | 或:匹配 a 或 b
grep "colou?r" a.txt # ? 前面的字符可有可无
6. 知识重点
- grep 输出的是匹配的行,不是整个文件
- 默认区分大小写,加 -i 忽略
- 在管道中,grep 是核心过滤器,几乎所有长输出都可以接它筛选
- 相关家族:egrep(扩展)、fgrep(纯文本,不识别正则)
top 指令详解
1. 什么是 top
top 用于实时监控系统运行状态,动态显示 CPU、内存使用情况和所有进程的运行状态。它是 Linux 系统管理员的"仪表盘"。
语法:
top [选项]
2. 常见用法示例
top # 实时监控(默认按 CPU 排序)
top -d 2 # 每 2 秒刷新一次
top -p 1234 # 只监控指定 PID 的进程
top -u root # 只看某用户的进程
zip / unzip 指令详解
1. 什么是 zip / unzip
zip 用于压缩文件/目录成 .zip 格式,unzip 用于解压 .zip 压缩包。zip 是最通用的跨平台压缩格式(Windows 也原生支持)。
语法:
zip [选项] 压缩包名.zip 要压缩的内容
unzip [选项] 压缩包名.zip
2. 常见用法示例
zip backup.zip a.txt b.txt # 压缩多个文件
zip -r project.zip project/ # 递归压缩整个目录
zip -r bak.zip *.txt # 用通配符压缩
unzip backup.zip # 解压到当前目录
unzip backup.zip -d /tmp/ # 解压到指定目录
unzip -l backup.zip # 只查看压缩包内容(不解压)
3. 常用选项(zip)
| 选项 | 功能 |
|---|---|
| -r | 递归压缩,压缩目录必须加 |
| -q | 安静模式,不显示过程 |
| -m | 压缩后删除原文件 |
| -P 密码 | 加密压缩 |
| -e | 加密 (交互输入密码) |
4. 常用选项(unzip)
| 选项 | 功能 |
|---|---|
| -d 目录 | 解压到指定目录 (常用) |
| -l | 列出压缩包内容,不解压 |
| -o | 覆盖已存在的文件 (不询问) |
| -n | 不覆盖已存在的文件 |
| -t | 测试压缩包是否完整 |
tar 指令详解
1. 什么是 tar
tar(Tape Archive)是 Linux 最核心的打包压缩工具。它的工作分两步:先打包(把多个文件合成一个包),再可选压缩(减小体积)。
语法:
tar [选项] 压缩包名.tar.gz 要打包的内容
2. 核心记忆口诀
tar 的选项很好记,记住三个字母组合:
tar czf 包名 源内容 # c=创建 z=gzip压缩 f=文件名 → 打包压缩
tar xzf 包名 # x=解包 z=gzip f=文件名 → 解压
tar tzf 包名 # t=列出包内容 → 查看
3. 常见用法示例
tar czf backup.tar.gz /home/user/docs/ # 打包+gzip压缩(.tar.gz)
tar cjf backup.tar.bz2 docs/ # 用 bz2 压缩(更小更慢)
tar xzf backup.tar.gz # 解压到当前目录
tar xzf backup.tar.gz -C /tmp/ # 解压到指定目录
tar -xzf add.tar.gz -C 8-28 new.txt # 将压缩包指定文件解压到指定目录
tar tzf backup.tar.gz # 查看包内文件列表
tar czf bak.tar.gz --exclude='*.log' docs/ # 排除某些文件
4. 常用选项(写博客重点表格)
| 选项 | 功能 |
|---|---|
| -c | 创建压缩包 |
| -x | 解压 |
| -t | 列出包内容 |
| -z | 用 gzip 压缩 (.tar.gz) |
| -j | 用 bzip2 压缩 (.tar.bz2) |
| -J | 用 xz 压缩 (.tar.xz) |
| -f 文件名 | 指定文件名 (必须放最后) |
| -C 目录 | 解压到指定目录 |
| -v | 显示过程 |
| --exclude | 排除指定文件 |
5. 压缩格式对比
| 格式 | 压缩比 | 速度 | 常用后缀 |
|---|---|---|---|
| gzip(-z) | 中等 | 快 | .tar.gz 最常用 |
| bzip2(-j) | 较高 | 慢 | .tar.bz2 |
| xz(-J) | 最高 | 最慢 | .tar.xz |
| 实际工作中 .tar.gz 最常见,记住 czf / xzf 就够了。 |
6. 知识重点
- -f 后面必须紧跟文件名,且最好写在最后
- tar 是打包命令,配合 -z/-j 才压缩;这也是 .tar vs .tar.gz 的区别
- 解压时默认解到当前目录,用 -C 指定位置更规范
- tar 保留文件权限和属主,所以是 Linux 备份/发布的首选
bc 指令详解
1. 什么是 bc
bc(Basic Calculator)是 Linux 里的命令行计算器,支持浮点数运算、进制转换等,比 echo $(( )) 之类的能力强得多。适合做精确计算。
语法:
echo "表达式" | bc
2. 常见用法示例
echo "2 + 3" | bc # 输出 5
echo "10 / 4" | bc # 输出 2(默认整数!)
echo "10 / 4" | bc -l # 输出 2.5000...(-l 启用小数)
echo "scale=2; 10 / 3" | bc # 保留 2 位小数
echo "2^10" | bc # 计算 2 的 10 次方 = 1024
3. 核心知识点
- 默认只算整数,除法会截断小数部分
- 加 -l 或 scale=N 才能得到小数:
echo "scale=2; 22 / 7" | bc # 3.14
echo "22 / 7" | bc -l # 更多位小数 - 支持运算符:+ - * / ^(乘方)、%(取余)、sqrt()(开方)
4. 进制转换(写博客加分点)
echo "obase=16; 255" | bc # 十进制255 → 十六进制 FF
echo "obase=2; 10" | bc # 十进制10 → 二进制 1010
echo "ibase=16; FF" | bc # 十六进制FF → 十进制 255
5. 交互模式
直接输入 bc 进入计算器界面:
bc
2 + 3 * 4 # 输入算式,回车即得结果
quit # 退出
uname 指令详解(含 uname -r)
1. 什么是 uname
uname(Unix Name)用于查看系统内核和操作系统的信息,-r 是其最常用的选项,专门显示内核版本号。
语法:
uname [选项]
2. 常见用法示例
uname # 只显示系统名称(如 Linux)
uname -r # 显示内核版本号(最常用!)
uname -a # 显示全部信息
uname -n # 显示主机名
uname -m # 显示 CPU 架构
3. 常用选项
| 选项 | 功能 | 示例输出 |
|---|---|---|
| -r | 内核版本 | 5.15.0‑91‑generic |
| -a | 输出全部信息 | 系统名 + 主机名 + 内核 + 架构... |
| -s | 系统内核名称 | Linux |
| -n | 主机名 | my‑server |
| -m | 机器硬件架构 | x86_64 |
| -o | 操作系统信息 | GNU/Linux |
4. 内核版本号解读(写博客加分点)
uname -r 的输出如 5.15.0-91-generic,含义:
| 片段 | 含义 |
|---|---|
| 5 | Linux 内核主版本号 |
| 15 | Linux 内核次版本号 |
| 0 | 上游内核修订号 |
| 91 | Ubuntu 发行版自定义补丁构建编号,代表该内核包的迭代修复次数 |
| generic | 内核类型:通用内核,适配绝大多数普通硬件 |
结语
感谢大家观看, 希望大家看完有所收获, 有不足的地方欢迎大家讨论.