1.Linux没有盘符这个概念,只有一个根目录/,所有文件都在它下面
ls 命令
1. 作用
ls = list,列出目录内文件与文件夹,是Linux最基础的文件查看命令。
2. 语法格式
bash
ls [可选参数] [目标路径/文件名]
- 不带路径:默认查看当前目录
- 不带参数:只显示可见文件,不显示隐藏文件
二、高频参数表
| 参数 | 功能说明 |
|---|---|
-l |
长格式,展示权限、所有者、大小、修改时间等完整信息 |
-a |
显示所有文件,包含以 . 开头的隐藏文件(含 . 当前目录、.. 上级目录) |
-h |
人性化单位,将字节转为 KB / MB / GB,必须搭配 -l 使用 |
-t |
按最后修改时间排序,新文件排在最上方 |
-r |
倒序反向排列 |
-S |
按文件大小降序排列 |
-R |
递归遍历所有子目录,列出全部内容 |
-d |
只列出目录本身,不展开目录内部文件 |
-i |
显示文件 inode 编号 |
-F |
在文件名末尾添加标记:目录带 /、可执行文件带 *、软链接带 @ |
三、长格式(ls -l)输出字段解析
示例输出:
drwxr-xr-x 2 root root 4096 Jun 26 13:00 project
- 第1位:文件类型
-:普通文件d:目录文件夹l:软链接(快捷方式)b/c:设备文件
- 第2~10位:文件权限(rwxr-xr-x)
- 数字:硬链接数量
- 第1个root:文件所有者
- 第2个root:所属用户组
- 文件大小(字节,加
-h自动换算单位) - 文件最后修改时间
- 文件名
四、通配符过滤文件
*:匹配任意长度字符?:匹配单个字符
bash
ls *.txt # 列出所有txt文件
ls log* # 列出所有以log开头的文件
ls test?.log # 匹配 test1.log testA.log 这类文件名
Linux pwd 命令
1. 命令作用
pwd = print working directory
打印当前所在目录的绝对路径。
2. 基础语法
bash
pwd [选项]
3. 常用参数
| 参数 | 作用 |
|---|---|
-P |
显示真实物理路径,不跟随软链接 |
-L |
显示逻辑路径(默认选项),跟随软链接 |
4. 基础示例
- 直接查看当前路径
bash
pwd
- 区分软链接目录
如果文件夹是软链接:
pwd:输出链接路径(逻辑路径)pwd -P:输出原始真实目录(物理路径)
5. 核心知识点
- 绝对路径:从根目录
/开始的完整路径。 - 不加任何参数时,默认等价于
pwd -L。 - cd 切换目录后,用 pwd 确认位置,是运维排错最常用命令。
Linux mkdir 命令
1. 命令简介
mkdir = make directories
作用:创建新目录(文件夹)。
2. 基础语法
bash
mkdir [选项] 目录名
3.常用参数
| 参数 | 功能说明 |
|---|---|
-p |
递归创建多级目录,上级目录不存在时自动创建,不会报错 |
-m |
创建目录时直接指定权限 |
-v |
显示创建过程,打印日志 |
4.实操示例
① 创建单个文件夹
bash
mkdir testdir
② 递归创建多级目录(最常用)
不加 -p 时上级目录不存在会报错。
bash
mkdir -p a/b/c/d
③ 创建目录并设置权限
bash
mkdir -m 755 workdir
④ 同时创建多个目录
bash
mkdir dir1 dir2 dir3
mkdir -p project/{src,bin,doc}
⑤ 带执行日志
bash
mkdir -pv test/child
⑥ 在用户家目录下创建目录
bash
mkdir -p ~/dir
5.核心要点
- 不加
-p,多级路径创建一定会失败; {}大括号可以批量生成目录,简化命令;- mkdir 只能新建目录,不能新建文件;
- 同名目录重复创建会报错,加上
-p则不会报错。
6.脚本常用写法
bash
# 先判断目录是否存在,不存在再创建
[ ! -d "/data/log" ] && mkdir -p /data/log
touch 命令
一、命令简介
touch 核心作用:
- 创建空文件(文件不存在时)
- 修改文件时间戳(文件已存在时)
语法格式
bash
touch [选项] 文件名/文件路径
二、基础创建文件用法
1. 创建单个空文件
bash
touch test.txt
touch shturl
touch /home/user/demo.py
2. 一次性创建多个文件
bash
touch a.txt shtu c.json test.log
3. 批量连续命名文件(花括号扩展)
bash
# file1 ~ file5
touch file{1..5}.txt
# day01 ~ day10
touch day{01..10}.log
三、常用选项参数
| 参数 | 作用 |
|---|---|
-a |
仅修改访问时间(atime) |
-m |
仅修改修改时间(mtime) |
-d "时间" |
指定自定义时间戳 |
-t 时间戳 |
用数字格式设置时间 |
-r 文件 |
复制另一文件的时间戳 |
1. 修改访问时间 -a
bash
touch -a test.txt
2. 修改内容修改时间 -m
bash
touch -m test.txt
3. 指定自定义时间 -d
bash
# 设置为昨天
touch -d "yesterday" test.txt
# 指定年月日时分
touch -d "2026-01-01 12:30" demo.md
# 英文时间格式
touch -d "10 Aug 2024" app.log
4. 数字时间格式 -t
格式:YYYYMMDDhhmm
bash
touch -t 202605201830 test.txt
# 2026年05月20日 18:30
5. 复制其他文件时间戳 -r
bash
# 将shtu时间改成和a.txt一致
touch -r a.txt shtu
四、查看文件时间戳(配套命令)
ls 查看时间
bash
# 显示完整修改时间
ls -l
# 显示访问时间
ls -lu
# 显示变更时间(ctime)
ls -lc
stat 查看全部时间戳
bash
stat test.txt
输出包含:
- Access:atime 访问时间
- Modify:mtime 文件内容修改时间
- Change:ctime 文件属性变更时间
more 命令
一、简介
more 分页查看文本文件,一次性加载文件,分屏展示,适合浏览长日志、配置文件。
语法:
bash
more [选项] 文件名
二、基础使用
- 直接分页查看文件
bash
more test.log
- 管道配合命令输出分页
bash
ls -l /etc | more
cat app.log | more
三、常用操作快捷键(浏览时)
| 按键 | 功能 |
|---|---|
| 空格 | 向下翻一整页 |
| Enter | 向下翻一行 |
| b | 向上翻一页(部分版本支持) |
| q / Q | 退出查看 |
| = | 显示当前行号 |
| /字符串 | 向下搜索匹配文本 |
| h | 查看帮助 |
四、常用参数
| 参数 | 作用 |
|---|---|
-n |
指定每页显示 n 行 |
-d |
底部提示翻页/退出,无操作时提示帮助 |
+n |
从第 n 行开始显示 |
+/字符串 |
从第一个匹配字符串的行开始打开 |
cp 命令
一、命令说明
cp = copy,复制文件/目录
语法:
bash
cp [选项] 源文件/源目录 目标位置
两种模式:
- 源→目标文件:复制并重命名
- 多个源→目标目录:全部复制进目录
二、基础用法
1. 复制单个文件
bash
cp test.txt bak.txt
# 复制到指定目录
cp test.txt /tmp/
2. 多文件复制到同一目录
bash
cp a.txt b.log c.json ./backup/
3. 批量通配复制
bash
cp *.log logs/
cp file{1..5}.txt ./data/
三、高频常用参数
| 参数 | 作用 |
|---|---|
-r / -R |
递归复制目录(-R保留特殊文件属性) |
-i |
覆盖前交互式询问 y/n |
-n |
不覆盖已有文件 |
-f |
强制覆盖,不询问 |
-p |
保留原文件权限、时间戳、属主 |
-v |
显示复制过程详情 |
-d |
复制软链接本身,不复制链接指向文件 |
-a |
归档,等价 -dpr,备份目录首选 |
四、实操示例
1. 复制目录(必须加 -r/-a)
bash
# 普通递归复制
cp -r project/ project_bak/
# 完整备份(保留所有属性,推荐)
cp -a project/ project_bak/
2. 覆盖前提示,安全复制
bash
cp -i *.txt ./doc/
3. 强制覆盖不询问
bash
cp -f config.ini /etc/nginx/
4. 复制并打印过程
bash
cp -rv src/ dst/
5. 只复制新文件,不覆盖旧文件
bash
cp -n *.log /var/log/bak/
6. 保留文件时间、权限
bash
cp -p server.log server.log.bak
mv 命令
一、命令简介
mv = move,兼具移动文件/目录 + 重命名 两种功能
语法:
bash
mv [选项] 源 目标
两种使用场景:
- 源和目标同目录:重命名
- 源和目标不同目录:移动(可同时改名)
二、基础用法
1. 文件重命名
bash
mv old.txt new.txt
2. 移动文件到指定目录
bash
mv test.log /tmp/
# 移动并改名
mv app.conf /etc/nginx/my.conf
3. 多个文件批量移入目录
bash
mv a.txt b.log c.json ./backup/
# 通配批量移动
mv *.txt doc/
mv file{1..10}.log logs/
4. 目录操作(mv 目录不需要加递归参数)
bash
# 目录重命名
mv dir1 dir2
# 移动整个目录
mv project/ /home/code/
三、常用参数
| 参数 | 功能说明 |
|---|---|
-i |
覆盖前交互式询问 y/n,安全模式 |
-f |
强制覆盖,不弹窗询问 |
-n |
不覆盖已存在文件 |
-v |
打印移动/改名详细过程 |
-u |
仅源文件更新时间更新于目标时才移动 |
-b |
覆盖前自动给旧文件生成备份 |
rm 命令
一、命令简介
rm = remove,删除文件、目录,删除后无法恢复 ,谨慎使用
语法:
bash
rm [选项] 文件/目录
二、基础用法
1. 删除单个文件
bash
rm test.txt
2. 删除多个文件
bash
rm a.txt b.log c.json
# 通配批量删除
rm *.tmp
rm log{1..5}.txt
3. 删除空目录(单纯rm不能删文件夹)
bash
# 空目录专用
rmdir test_dir
三、高频参数
| 参数 | 作用 |
|---|---|
-r / -R |
递归删除目录(含内部所有文件、子目录) |
-i |
删除前逐条确认 y/n,安全模式 |
-f |
强制删除,忽略不存在文件,不弹窗询问 |
-v |
打印删除文件明细 |
-rf |
组合:强制递归删除,运维高危组合 |
四、实操示例
1. 安全删除,逐条确认
bash
rm -i *.log
rm -ir test_folder/
2. 强制删除文件,无提示
bash
rm -f temp.ini
3. 删除文件夹(必须加 -r)
bash
rm -r old_project/
# 强制递归删除,不询问
rm -rf cache/
4. 删除并打印删除日志
bash
rm -rv trash/*
grep 命令
一、命令简介
grep:Global Regular Expression Print,文本检索工具,按匹配规则过滤输出内容。
语法:
bash
grep [选项] "匹配内容" 文件名
# 配合管道过滤命令输出
命令 | grep [选项] "匹配内容"
二、基础用法
1. 文件内查找关键字
bash
grep "error" server.log
2. 管道过滤命令输出
bash
ps -ef | grep nginx
ls -l | grep txt
3. 多文件同时检索
bash
grep "warn" *.log
三、高频常用参数
| 参数 | 功能说明 |
|---|---|
-i |
忽略大小写匹配 |
-n |
输出匹配行的行号 |
-v |
反向匹配,输出不包含关键字的行 |
-c |
只统计匹配到的行数,不打印内容 |
-o |
只打印匹配到的字符串本身,不输出整行 |
-r / -R |
递归检索目录下所有文件 |
-l |
只输出包含匹配内容的文件名 |
-L |
只输出不包含匹配内容的文件名 |
-A n |
匹配行 + 向下n行(After) |
-B n |
匹配行 + 向上n行(Before) |
-C n |
匹配行上下各n行(Context,上下文) |
-E |
使用扩展正则表达式,等价 egrep |
-w |
精确匹配完整单词,不匹配片段 |
# Linux wc 命令 Markdown 笔记
## 一、命令简介
`wc` = word count,统计文件**行数、单词数、字符数、字节数**,也可接收管道输出做统计。
语法:
```bash
wc [选项] 文件
# 管道统计
命令 | wc [选项]
二、默认输出(不加参数)
bash
wc test.txt
输出格式:行数 单词数 字节数 文件名
三、常用参数
| 参数 | 作用 |
|---|---|
-l |
只统计行数(最常用) |
-w |
只统计单词数(空白分隔) |
-c |
只统计字节数 |
-m |
只统计字符数(中文/多字节区分) |
-L |
统计文件中最长一行的字符长度 |
四、实操示例
1. 统计文件总行数
bash
wc -l nginx.conf
2. 管道统计匹配结果行数(grep + wc -l 高频组合)
bash
# 统计日志中error出现多少行
grep "error" server.log | wc -l
# 统计当前进程数量
ps -ef | wc -l
# 统计目录文件总数
ls -l | wc -l
3. 单词、字节、最长行统计
bash
# 单词数量
wc -w demo.txt
# 字节大小
wc -c demo.txt
# 最长一行长度
wc -L demo.txt
4. 多文件同时统计
bash
wc -l *.log
五、小区别:-c 与 -m
-c:字节,中文一个汉字占3字节-m:字符,一个汉字算1个字符
bash
echo "测试" | wc -c
echo "测试" | wc -m
wc 命令
一、命令简介
wc = word count,统计文件行数、单词数、字符数、字节数 ,也可接收管道输出做统计。
语法:
bash
wc [选项] 文件
# 管道统计
命令 | wc [选项]
二、默认输出(不加参数)
bash
wc test.txt
输出格式:行数 单词数 字节数 文件名
三、常用参数
| 参数 | 作用 |
|---|---|
-l |
只统计行数(最常用) |
-w |
只统计单词数(空白分隔) |
-c |
只统计字节数 |
-m |
只统计字符数(中文/多字节区分) |
-L |
统计文件中最长一行的字符长度 |
管道符
1. 作用
把前一条命令的输出 ,直接传给后一条命令当输入 ,串联多条命令。
语法:命令1 | 命令2 | 命令3
2. 常用例子
- 查看进程并过滤串口相关
bash
ps -ef | grep serial
- 分页查看日志
bash
cat log.txt | less
- 统计匹配行数
bash
cat data.txt | grep UART | wc -l
- 输出排序去重
bash
cat test.txt | sort | uniq
echo 命令
作用
打印文本、变量,输出内容到终端,常搭配管道、重定向使用。
基础用法
- 输出文字
bash
echo hello
echo "串口发送测试 UART"
- 输出变量
bash
name=test
echo $name
常用参数
-n:不换行输出
bash
echo -n "不换行"
-e:启用转义字符(换行\n、制表\t)
bash
echo -e "数据1\n数据2"
搭配管道 |
bash
echo "UART_DATA" | grep UART
搭配重定向写入文件
bash
echo "日志内容" > log.txt
# 追加不覆盖
echo "新增一行" >> log.txt
echo pwd
1. 字符说明
-
反引号(后置引号):Shell 命令替换语法,会先执行包裹内的命令,把输出结果替换到原位置
pwd:print working directory,打印当前所在文件夹路径echo:输出文本
2. 整条命令执行逻辑
- Shell 先执行内部
pwd,获取当前目录完整路径(例:/home/user/project) - 将
pwd替换成路径字符串 - echo 打印替换后的内容
等价写法(推荐,可读性更好):
bash
echo $(pwd)
3. 示例演示
假设当前目录为 /usr/local/uart_demo
输入:
bash
echo `pwd`
输出:
/usr/local/uart_demo
> 与 >> 区别(重定向输出)
1. > 覆盖重定向
作用 :先清空目标文件全部内容,再写入新内容
语法:命令 > 文件名
示例:
bash
echo "串口测试" > log.txt
执行后 log.txt 原有文字全部删除,只剩「串口测试」
2. >> 追加重定向
作用 :保留文件原有内容,在文件末尾追加新文字
语法:命令 >> 文件名
示例:
bash
echo "第二条日志" >> log.txt
执行后原有内容保留,末尾新增一行「第二条日志」
tail 命令详解
核心作用
默认读取文件最后10行,专门看最新日志,搭配串口/编译日志非常好用。
基础语法
bash
tail [参数] 文件名
常用参数
-n 数字:指定看最后N行
bash
# 查看日志最后20行
tail -n 20 build.log
# 简写 tail -20 build.log
- **
-f
持续监听文件,文件新增内容立刻打印到终端,适合实时看串口输出、编译打印
bash
# 实时刷新日志
tail -f uart_log.txt
退出实时:按 Ctrl + C
-F
比-f更强:文件被删除/重新生成后依然能跟踪(日志轮转场景)
bash
tail -F compile.log
-c 数字:读取末尾N个字节
bash
# 读取最后500字节
tail -c 500 log.txt
apt 命令(Ubuntu/Debian 专用包管理器)
一、基础介绍
apt = Advanced Package Tool,Debian/Ubuntu/Kali 系统专用软件管理工具,自动处理依赖,整合旧版 apt-get + apt-cache 功能,日常开发首选,操作系统软件必须加 sudo 提权。
二、更新&升级(最常用)
sudo apt update
同步远程软件源,刷新本地软件版本清单,安装/升级前必须先执行,不会修改任何已装软件。
bash
sudo apt update
sudo apt upgrade
安全升级所有已安装包,不会删除旧软件,仅更新版本。
bash
sudo apt upgrade
sudo apt full-upgrade
完整升级,自动处理依赖冲突,会删除废弃旧包、安装新依赖,内核升级推荐用这个。
bash
sudo apt full-upgrade
三、安装软件
基础安装
bash
# 安装单个包
sudo apt install minicom
# 一次性安装多个串口/编译工具
sudo apt install gcc make minicom screen
进阶用法
bash
# 安装指定版本
sudo apt install gcc=11.4.0
# 仅下载安装包,不安装
apt download git
# 安装软件编译所需全部依赖
sudo apt build-dep keil-demo
四、卸载软件(remove vs purge 区别)
sudo apt remove 包名
删除程序本体,保留配置文件,适合后续可能重装的场景。
bash
sudo apt remove minicom
sudo apt purge 包名
彻底卸载:删除程序 + 全部配置文件,清理干净。
bash
sudo apt purge minicom
sudo apt autoremove
自动清理无用孤儿依赖(卸载软件后残留的配套库),定期执行释放空间。
bash
sudo apt autoremove
五、查询/搜索(搭配管道过滤日志)
- 搜索软件
bash
apt search serial
# 过滤串口相关工具
apt search serial | grep uart
- 查看软件详细信息
bash
apt show minicom
- 列出包状态
bash
# 所有已安装软件
apt list --installed
# 可升级的软件
apt list --upgradable
# 过滤已装串口工具
apt list --installed | grep screen
六、缓存清理
bash
# 删除所有下载过的安装包缓存
sudo apt clean
# 只删除旧版本缓存,保留新版
sudo apt autoclean