Linux基础操作指令

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. 三个理解角度

  1. 数据流向:输出 → 管道 → 输入
  2. 过滤/加工:第二个指令常做筛选(grep)、统计(wc)、排序(sort)
  3. 分页保护:输出太长时接 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 内核类型:通用内核,适配绝大多数普通硬件

结语

感谢大家观看, 希望大家看完有所收获, 有不足的地方欢迎大家讨论.

相关推荐
v_for_van37 分钟前
C语言__attribute__
服务器·c语言·开发语言·mcu·嵌入式·嵌入式实时数据库
亚川楼宇自控系统数据中心厂家44 分钟前
数据中心电力监控与供配电体系规避电力运行风险
运维
GIS数据转换器1 小时前
智慧林草“一张图“平台
java·大数据·服务器·前端·javascript·数据库·人工智能
霸道流氓气质1 小时前
运维补偿接口的设计与实现:模式、形态与通用示例
运维
智恒百亿1 小时前
5090八卡服务器整机技术解析与部署常见问题(FAQ)
运维·服务器
萌动的小火苗1 小时前
Linux进程线程面试题【无答案】
linux·运维·服务器·c语言·开发语言
cuijiecheng20181 小时前
Linux下ss命令用法
linux·运维·服务器
云上工程笔记1 小时前
4090 GPU 服务器适合哪些 AI 场景?2026 年显存、推理性能、租用价格和风险对比
运维·服务器·人工智能
小小龙学IT2 小时前
C++ std::chrono 时间库深度解析:从 duration 模板到 C++20 日历与时区
linux·c++·c++20