Python-linux

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. 第1位:文件类型
    • -:普通文件
    • d:目录文件夹
    • l:软链接(快捷方式)
    • b/c:设备文件
  2. 第2~10位:文件权限(rwxr-xr-x)
  3. 数字:硬链接数量
  4. 第1个root:文件所有者
  5. 第2个root:所属用户组
  6. 文件大小(字节,加 -h 自动换算单位)
  7. 文件最后修改时间
  8. 文件名

四、通配符过滤文件

  • *:匹配任意长度字符
  • ?:匹配单个字符
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. 基础示例

  1. 直接查看当前路径
bash 复制代码
pwd
  1. 区分软链接目录
    如果文件夹是软链接:
  • pwd:输出链接路径(逻辑路径)
  • pwd -P:输出原始真实目录(物理路径)

5. 核心知识点

  1. 绝对路径:从根目录 / 开始的完整路径。
  2. 不加任何参数时,默认等价于 pwd -L
  3. 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.核心要点

  1. 不加 -p,多级路径创建一定会失败;
  2. {} 大括号可以批量生成目录,简化命令;
  3. mkdir 只能新建目录,不能新建文件;
  4. 同名目录重复创建会报错,加上 -p 则不会报错。

6.脚本常用写法

bash 复制代码
# 先判断目录是否存在,不存在再创建
[ ! -d "/data/log" ] && mkdir -p /data/log

touch 命令

一、命令简介

touch 核心作用:

  1. 创建空文件(文件不存在时)
  2. 修改文件时间戳(文件已存在时)

语法格式

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 [选项] 文件名

二、基础使用

  1. 直接分页查看文件
bash 复制代码
more test.log
  1. 管道配合命令输出分页
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. 源→目标文件:复制并重命名
  2. 多个源→目标目录:全部复制进目录

二、基础用法

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. 源和目标同目录:重命名
  2. 源和目标不同目录:移动(可同时改名)

二、基础用法

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. 常用例子

  1. 查看进程并过滤串口相关
bash 复制代码
ps -ef | grep serial
  1. 分页查看日志
bash 复制代码
cat log.txt | less
  1. 统计匹配行数
bash 复制代码
cat data.txt | grep UART | wc -l
  1. 输出排序去重
bash 复制代码
cat test.txt | sort | uniq

echo 命令

作用

打印文本、变量,输出内容到终端,常搭配管道、重定向使用。

基础用法

  1. 输出文字
bash 复制代码
echo hello
echo "串口发送测试 UART"
  1. 输出变量
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. 整条命令执行逻辑

  1. Shell 先执行内部 pwd,获取当前目录完整路径(例:/home/user/project
  2. pwd 替换成路径字符串
  3. 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 [参数] 文件名

常用参数

  1. -n 数字:指定看最后N行
bash 复制代码
# 查看日志最后20行
tail -n 20 build.log
# 简写 tail -20 build.log
  1. **-f
    持续监听文件,文件新增内容立刻打印到终端,适合实时看串口输出、编译打印
bash 复制代码
# 实时刷新日志
tail -f uart_log.txt

退出实时:按 Ctrl + C

  1. -F
    -f 更强:文件被删除/重新生成后依然能跟踪(日志轮转场景)
bash 复制代码
tail -F compile.log
  1. -c 数字:读取末尾N个字节
bash 复制代码
# 读取最后500字节
tail -c 500 log.txt

apt 命令(Ubuntu/Debian 专用包管理器)

一、基础介绍

apt = Advanced Package Tool,Debian/Ubuntu/Kali 系统专用软件管理工具,自动处理依赖,整合旧版 apt-get + apt-cache 功能,日常开发首选,操作系统软件必须加 sudo 提权。

二、更新&升级(最常用)

  1. sudo apt update
    同步远程软件源,刷新本地软件版本清单,安装/升级前必须先执行,不会修改任何已装软件。
bash 复制代码
sudo apt update
  1. sudo apt upgrade
    安全升级所有已安装包,不会删除旧软件,仅更新版本。
bash 复制代码
sudo apt upgrade
  1. 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 区别)

  1. sudo apt remove 包名
    删除程序本体,保留配置文件,适合后续可能重装的场景。
bash 复制代码
sudo apt remove minicom
  1. sudo apt purge 包名
    彻底卸载:删除程序 + 全部配置文件,清理干净。
bash 复制代码
sudo apt purge minicom
  1. sudo apt autoremove
    自动清理无用孤儿依赖(卸载软件后残留的配套库),定期执行释放空间。
bash 复制代码
sudo apt autoremove

五、查询/搜索(搭配管道过滤日志)

  1. 搜索软件
bash 复制代码
apt search serial
# 过滤串口相关工具
apt search serial | grep uart
  1. 查看软件详细信息
bash 复制代码
apt show minicom
  1. 列出包状态
bash 复制代码
# 所有已安装软件
apt list --installed
# 可升级的软件
apt list --upgradable
# 过滤已装串口工具
apt list --installed | grep screen

六、缓存清理

bash 复制代码
# 删除所有下载过的安装包缓存
sudo apt clean
# 只删除旧版本缓存,保留新版
sudo apt autoclean