# Debian快速入门 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- 本系列教程面向 **Quectel Pi M1/L1** 开发板的初学者,帮助您快速上手 Debian 系统中的常见操作与开发任务。内容涵盖基础命令、文件管理、文本编辑、软件包管理、输入法配置,适合零基础或刚接触 Linux 的用户逐步学习。 # 文件属性与权限 了解 Linux 文件的类型、所有者、权限位结构,学习使用 `ls -l` 查看文件属性,以及通过 `chown`、`chmod` 命令管理文件的所有者和访问权限。 在 **Linux** 中,文件不仅仅有“文件名”和“大小”,还包含所有者、所属组、访问权限、类型和修改时间等属性。理解这些属性后,您才能判断为什么某个脚本无法执行、为什么某个目录无法写入,或者为什么修改系统配置文件时需要 **sudo**。 ## 文件属性查看方法 最常用的查看方式是: ```plaintext ls -l ``` 如果需要同时显示隐藏文件,并以更易读的方式显示文件大小,可以使用: ```plaintext ls -lah ``` 典型输出如下: ```plaintext -rwxr-xr-- 1 pi pi 2048 Jun 22 10:30 demo.sh ``` 这一行信息可以拆分为以下几个部分: | **字段** | **示例** | **说明** | | --- | --- | --- | | 文件类型与权限 | -rwxr-xr-- | 第 1 位表示文件类型,后 9 位表示权限 | | 链接数 | 1 | 有多少个目录项指向该文件 | | 所有者 | pi | 谁拥有这个文件 | | 所属组 | pi | 该文件归属的用户组 | | 大小 | 2048 | 文件大小,单位通常为字节 | | 修改时间 | Jun 22 10:30 | 最后修改时间 | | 文件名 | demo.sh | 文件名称 | ## 文件类型识别 权限串的第 1 位表示文件类型: 例如: - `drwxr-xr-x` 表示目录。 - `-rw-r--r--` 表示普通文件。 - `lrwxrwxrwx` 表示符号链接。 ## 权限位结构说明 第 2 到第 10 位一共 9 个字符,分成 3 组: ```plaintext rwx r-x r-- | | | | | +-- 其他用户(others)权限 | +------ 所属组(group)权限 +---------- 所有者(owner)权限 ``` 每组权限中: | **符号** | **含义** | | --- | --- | | r | 可读 | | w | 可写 | | x | 可执行 | | - | 没有该权限 | 例如: - `rw-r--r--`:所有者可读可写,组用户只读,其他用户只读。 - `rwxr-xr-x`:所有者可读可写可执行,其他人可读可执行。 ## chown:所有者与所属组管理 当文件属于错误的用户或用户组时,可以使用 **chown**。 基本语法: ```plaintext sudo chown [选项] 用户[:组] 文件或目录 ``` 常用示例: 将文件所有者改为 `pi`: ```plaintext sudo chown pi demo.sh ``` 同时修改所有者和所属组: ```plaintext sudo chown pi:pi demo.sh ``` 递归修改整个目录: ```plaintext sudo chown -R pi:pi /home/pi/project ``` 只修改所属组: ```plaintext sudo chown :pi /home/pi/project/config.json ``` **典型应用场景** - 通过 **sudo** 解压或复制文件后,文件所有者变成了 `root`,普通用户 `pi` 无法继续编辑。 - 项目目录从外部设备拷贝后,权限与当前用户不一致,需要统一调整。 ## chmod:访问权限管理 当文件“能看不能改”或“脚本不能执行”时,通常需要使用 **chmod**。 基本语法: ```plaintext chmod [选项] 权限 文件或目录 ``` **符号模式** 格式如下: ```plaintext [ugoa][+-=][rwx] ``` 其中: - `u` 表示所有者 - `g` 表示所属组 - `o` 表示其他用户 - `a` 表示所有用户 常用示例: 给当前用户增加执行权限: ```plaintext chmod u+x demo.sh ``` 给所有用户增加读权限: ```plaintext chmod a+r demo.txt ``` 移除其他用户写权限: ```plaintext chmod o-w demo.txt ``` **数字模式** 权限也可以写成数字,例如: ```plaintext chmod 755 demo.sh chmod 644 notes.txt ``` 这里的 3 位数字分别对应: ```plaintext chmod 754 demo.sh | | | | | +-- 其他用户(others)权限 | +---- 所属组(group)权限 +------ 所有者(owner)权限 ``` 每一组 `rwx` 权限都可以看成 3 个开关位: - `r` 是否开启 - `w` 是否开启 - `x` 是否开启 这 3 个开关既可以理解成“加法权重”,也可以理解成一个 3 位二进制数: 对应关系如下: | **权限位** | **二进制位** | **十进制权重** | | --- | --- | --- | | r | 100 | 4 | | w | 10 | 2 | | x | 1 | 1 | 因此,一组权限的数字,本质上就是把开启的权限位相加: - `r--` = `100` = `4` - `rw-` = `110` = `4 + 2 = 6` - `r-x` = `101` = `4 + 1 = 5` - `rwx` = `111` = `4 + 2 + 1 = 7` - `---` = `000` = `0` ## 操作示例 **为脚本添加执行权限** ```plaintext chmod u+x start.sh ./start.sh ``` **保护私有配置文件** ```plaintext chmod 600 ~/.ssh/config ``` # 文件与目录管理 掌握 Linux 中最常用的文件与目录操作命令:`pwd`、`cd`、`ls`、`mkdir`、`rmdir`、`cp`、`rm`、`mv`,以及 `cat`、`tail` 等文件内容查看工具。 在 **Linux** 中,大多数日常操作都围绕“路径”和“目录”展开。无论是查看日志、切换项目目录、复制模型文件,还是删除无用资源,都离不开常用的文件与目录命令。 ## 路径与目录基础概念 #### 当前工作目录 终端始终会有一个“当前所在目录”。很多命令默认都作用于当前目录,因此先知道自己在哪里非常重要。 查看当前目录: ```bash pwd ``` #### 路径表示方式 - **绝对路径**:从根目录 `/` 开始,例如 `/home/pi/project`。 - **相对路径**:相对于当前目录,例如 `project/src`。 常见特殊写法: - `.` 表示当前目录 - `..` 表示上一级目录 - `~` 表示当前用户主目录,例如 `/home/pi` ## 常用系统目录 在 **Debian** 系统中,您会经常接触以下目录: | **目录** | **作用** | | --- | --- | | `/etc` | 系统配置文件 | | `/opt` | 第三方应用或自定义程序 | | `/var/log` | 系统日志 | | `/tmp` | 临时文件 | ## 常用命令 ### ls:目录内容查看 ls 命令用于显示指定工作目录下之内容(列出目前工作目录所含的文件及子目录) 示例: ```bash #当前目录内容查看 ls #查看当前目录所有文件,包括隐藏文件 ls -l ls -la #查看更易读的文件大小 ls -lh #按时间排序查看文件 ls -ltr ``` ### cd:目录切换 cd 命令用于改变当前工作目录的命令,切换到指定的路径。 ```bash cd [dirName] # dirName:要切换的目标目录,可以是相对路径或绝对路径。 ``` 示例: ```bash #切换到 usr 目录 cd /usr #回到上一级目录 cd .. #回到用户家目录 cd ~ #回到上一次所在目录 cd - ``` ### mkdir 与 rmdir:目录创建与删除 `mkdir` 命令用于创建目录,`rmdir` 命令用于删除空目录。 ```bash # -p 确保目录名称存在,不存在的就建一个 mkdir [-p] dirName #-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除 rmdir [-p] dirName ``` 示例: ```bash #在当前目录下创建 logs 目录 mkdir logs #自动创建不存在的父目录 project/data mkdir -p project/data/raw #删除 logs 目录,logs目录需为空 rmdir logs ``` ### cp:文件与目录复制 通过 `cp` 命令,用户可以将文件或目录从一个位置复制到另一个位置。 ```bash cp [选项] 源文件 目标文件 ``` 示例: ```bash #将文件 source.txt 复制为 backup.txt cp source.txt backup.txt #复制目录 cp -r project project_backup ``` ### mv:移动与重命名 `mv` 命令用来为文件或目录改名、或将文件或目录移入其它位置。 ```bash #将 app.log 移动到 /tmp/目录下 mv app.log /tmp/ #将 old_name.txt 文件 重命名为 new_name.txt mv old_name.txt new_name.txt #重命名目录,将 dataset 目录重命名为 dataset_old mv dataset dataset_old ``` ### rm:文件与目录删除 `rm` 命令用于删除一个文件或者目录。 ```bash #删除文件 demo.txt rm demo.txt #将 demo_dir 目录及子目录都删除 rm -r demo_dir #强制删除并且不提示 rm -rf demo_dir ``` > **注意** > `rm -rf` 是高风险命令,不会进入回收站。执行前建议先用 `pwd` 和 `ls` 再确认一次目标路径。 ### cat 与 tail:文件内容查看 **cat 命令** `cat` 命令用于连接文件并打印到标准输出设备上,它的主要作用是用于查看和连接文件。 ```bash #查看 README.md 文件内容 cat README.md #配合行号显示查看: cat -n app.py ``` **tail 命令** `tail` 命令可用于查看文件的内容。 ```bash # 默认显示最后10行系统日志 tail /var/log/syslog #查看系统日志 /var/log/syslog 末尾50行 tail -n 50 /var/log/syslog #实时跟踪日志 tail -f /var/log/syslog ``` ## 基础操作示例 ### 创建项目目录并进入 ```bash mkdir -p ~/project/demo cd ~/project/demo pwd ``` ### 备份配置文件 ```bash cp -i /etc/hosts ~/hosts.bak ``` ### 清理临时目录 ```bash rm -r ~/project/demo/tmp ``` # 文本编辑 在使用 **Quectel Pi M1** 进行开发时,您经常需要修改配置文件、编辑脚本或调整服务参数。终端环境下常用的文本编辑器有 **vim** 和 **nano**。本文分别介绍这两款编辑器的使用方法,您可以根据需要选择适合自己的工具。 ## Vim 编辑器 **vim** 是 **vi** 编辑器的增强版本,支持语法高亮、搜索替换、批量编辑等能力,适合在本地终端、串口终端和 **SSH** 会话中使用。 如果系统提示找不到该命令,可以先安装: ```bash sudo apt update sudo apt install vim ``` ### Vim 基本工作模式 根据常见使用方式,可以把 **vim** 理解为三个核心模式: | **模式** | **作用** | **如何进入** | | --- | --- | --- | | 命令模式 | 移动光标、复制、删除、保存、退出 | 打开文件后默认进入 | | 输入模式 | 输入和修改文本 | 在命令模式按 `i`、`a`、`o` | | 命令行模式 | 执行保存、退出、查找替换等命令 | 在命令模式按 `:` | 这三个模式之间的关系可以简单理解为: - 打开文件后先进入命令模式。 - 需要输入内容时,切换到输入模式。 - 需要保存、退出或执行查找替换时,切换到命令行模式。 ### 基础操作流程 **1. 打开或创建文件** ```bash vim notes.txt ``` 如果文件不存在,**vim** 会新建该文件。 **2. 进入输入模式** 在命令模式按以下任意一个键: | **按键** | **作用** | | --- | --- | | `i` | 在光标当前位置开始输入 | | `a` | 在光标后一个位置开始输入 | | `o` | 在当前行下方新增一行并输入 | **3. 文本录入** 进入输入模式后,就可以像普通编辑器一样输入字符。 **4. 返回命令模式** 按 `Esc` 键返回命令模式。 **5. 保存与退出** 在命令模式下输入 `:` 进入命令行模式,然后执行: | **命令** | **作用** | | --- | --- | | `:w` | 保存 | | `:q` | 退出 | | `:wq` | 保存并退出 | | `:q!` | 不保存,强制退出 | ### 常用操作指令 **命令模式常用指令** | **按键** | **作用** | | --- | --- | | `h` `j` `k` `l` | 左、下、上、右移动光标 | | `x` | 删除当前字符 | | `dd` | 删除当前行 | | `yy` | 复制当前行 | | `p` | 在下方粘贴 | | `u` | 撤销 | | `Ctrl+r` | 重做 | | `/关键字` | 向下搜索 | | `n` | 跳转到下一个匹配 | **命令行模式常用指令** | **命令** | **作用** | | --- | --- | | `:set nu` | 显示行号 | | `:set nonu` | 取消行号 | | `:%s/old/new/g` | 全文替换 | | `:1,10s/old/new/g` | 替换第 1 到第 10 行 | ### 操作示例 下面以创建一个简单脚本为例: ```bash vim hello.sh ``` 按 `i` 进入输入模式,写入: ```bash #!/bin/bash echo "Hello Quectel Pi M1" ``` 按 `Esc` 返回命令模式,输入 `:wq` 保存退出。 随后给脚本增加执行权限: ```bash chmod u+x hello.sh ./hello.sh ``` ### 编辑系统文件 编辑普通用户目录下的文件,可以直接执行: ```bash vim ~/notes.txt ``` 编辑系统配置文件时,通常需要 **sudo**: ```bash sudo vim /etc/hostname ``` 建议先备份原文件: ```bash sudo cp /etc/hostname /etc/hostname.bak sudo vim /etc/hostname ``` ### 常见问题排查 **无法退出 Vim** 大多数情况是因为还处于输入模式。先按 `Esc`,再输入 `:q` 或 `:wq`。 **保存时提示权限不足** 说明当前文件需要管理员权限,请退出后使用 `sudo vim 文件名` 重新打开。 **中文显示或缩进异常** 通常与终端字体或文件编码有关。优先使用 **UTF-8** 编码,并在图形终端中确认字体支持中文。 ## Nano 编辑器 ### 概述 **nano** 是一款轻量级的终端文本编辑器,操作简单直观,没有模式切换的概念,适合快速编辑配置文件或对 vim 不熟悉的用户使用。 如果系统未预装 nano,可以先安装: ```bash sudo apt update sudo apt install nano ``` ### 基础操作 1. **打开或创建文件** ```bash nano notes.txt ``` 如果文件不存在,**nano** 会新建该文件。打开后即可直接输入和编辑文本,无需切换模式。 2. **编辑文本** 打开文件后,光标所在位置即可直接输入字符。使用方向键移动光标。 3. **保存文件** 按 `Ctrl+O`(字母 O),nano 会提示确认文件名,按 `Enter` 确认保存。 4. **退出编辑器** 按 `Ctrl+X` 退出。如果文件有未保存的修改,nano 会询问是否保存: - 按 `Y` 保存后退出 - 按 `N` 不保存退出 - 按 `Ctrl+C` 取消退出操作 ### 常用快捷键 nano 底部会显示常用快捷键提示,其中 `^` 表示 `Ctrl` 键。 | **快捷键** | **作用** | | --- | --- | | Ctrl+O | 保存文件 | | Ctrl+X | 退出 | | Ctrl+K | 剪切当前行 | | Ctrl+U | 粘贴剪切的内容 | | Ctrl+W | 搜索文本 | | Ctrl+\ | 搜索并替换 | | Ctrl+G | 查看帮助 | | Ctrl+C | 显示当前光标位置 | | Alt+U | 撤销 | | Alt+E | 重做 | | Ctrl+A | 移动到行首 | | Ctrl+E | 移动到行尾 | | Ctrl+Y | 向上翻页 | | Ctrl+V | 向下翻页 | ### 搜索与替换 **搜索文本** 按 `Ctrl+W`,输入要搜索的关键字,按 `Enter` 跳转到第一个匹配位置。继续按 `Ctrl+W` 然后 `Enter` 可跳转到下一个匹配。 **搜索并替换** 按 `Ctrl+\`,输入要查找的字符串,按 `Enter`,再输入替换后的字符串,按 `Enter`。nano 会逐一询问是否替换: - 按 `Y` 替换当前匹配 - 按 `N` 跳过当前匹配 - 按 `A` 替换所有匹配 ### 操作示例 以创建一个简单脚本为例: ```bash nano hello.sh ``` 直接输入以下内容: ```bash #!/bin/bash echo "Hello Quectel Pi" ``` 按 `Ctrl+O` 保存,按 `Enter` 确认文件名,再按 `Ctrl+X` 退出。 随后给脚本增加执行权限: ```bash chmod u+x hello.sh ./hello.sh ``` ### 编辑系统文件 编辑系统配置文件时,同样需要 **sudo**: ```bash sudo nano /etc/hostname ``` --- # 软件下载与更新 在 **Debian** 系统中,安装软件通常离不开两类工具:**APT** 和 **DPKG**。理解它们各自负责什么,能帮助您更清楚地区分“从软件源安装软件”和“手动安装本地 `.deb` 安装包”这两类场景。 本节介绍 Debian 系统中安装和更新软件的基本方法,帮助您理解后续搭建环境时用到的 `apt install` 等命令含义。 关于 **APT** 的详细使用方法、常见命令和软件源配置,请参考 [软件更新](<../../操作系统/Debian(Gnome)/软件更新/软件更新.md>)。 ## APT 与 DPKG 概述 在 Debian 系统中,安装软件主要靠两类工具: | **工具** | **作用** | **典型场景** | | --- | --- | --- | | **APT** | 从软件源查找、下载软件,自动处理依赖 | 联网安装软件、更新系统 | | **DPKG** | 直接安装本地 .deb 包 | 手动安装厂商提供的安装包 | 简单理解:**APT 是日常使用的上层工具**(自动帮你处理依赖),**DPKG 是底层工具**(只负责装包,不管依赖)。 ## APT 常用命令 ### apt update 更新软件包列表,这条命令的作用是 **刷新本地的软件包索引**。它不会安装或升级任何软件,只是让系统知道软件源里目前有哪些包、最新版本是什么。 建议在安装软件或升级系统之前,先执行一次 `apt update`。 ```bash sudo apt update ``` ### apt upgrade 升级已安装的软件包,这条命令会把系统中 **已安装的所有软件包** 升级到软件源中可用的最新版本。 ```bash sudo apt upgrade ``` 通常的操作流程是先 `update` 再 `upgrade`: ```bash sudo apt update sudo apt upgrade ``` ### apt install 安装软件包,这是最常用的命令。它会从软件源中查找指定的软件包,自动下载并安装,同时处理所有依赖关系。 ```bash sudo apt install 软件包名 ``` **后续搭建开发环境时**,您会频繁看到类似命令: ```bash sudo apt install python3 # 安装 Python 3 sudo apt install git # 安装 Git sudo apt install vim # 安装 Vim 编辑器 #可以一次安装多个包: sudo apt install python3 git vim ``` ### apt remove 卸载软件包,从系统中卸载指定软件包。 ```bash sudo apt remove 软件包名 ```