Debian快速入门

Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.


本文档面向Quectel Pi H1智能主控板初学者,旨在协助用户快速掌握Debian系统中的常见操作与开发任务。内容涵盖文件属性与权限、文件管理、文本编辑及软件包管理,适用于零基础或Linux入门用户逐步学习。

文件属性与权限

了解Linux文件的类型、所有者及权限位结构,学习使用 ls -l 命令查看文件属性,并通过 chown、chmod 命令管理文件所有者与访问权限。

在Linux中,文件不仅包含“文件名”与“大小”,还具备所有者、所属组、访问权限、类型及修改时间等属性。理解这些属性有助于排查脚本无法执行、目录不可写,以及修改系统配置文件时需要使用 sudo 等问题。

文件属性查看方法

最常用的查看方式为:

ls -l

典型输出如下:

-rwxr-xr-- 1 user user 2048 Jun 22 10:30 demo.sh

信息可拆分为以下部分:

字段

示例

说明

文件类型与权限

-rwxr-xr--

第1位表示文件类型,后9位表示权限

链接数

1

指向该文件的目录项数量

所有者

user

文件拥有者

所属组

user

该文件归属的用户组

大小

2048

文件大小。单位:字节(默认)

修改时间

Jun 22 10:30

最后修改时间

文件名

demo.sh

文件名称

若需同时显示隐藏文件,并以更易读的方式显示文件大小,可执行如下命令:

ls -lah

其中:

  • -a(All)会强制列出隐藏文件与特殊目录项,任意目录下执行后,输出的首两行必然包含 .(当前目录)和 ..(父目录)。

  • -h(Human-readable)会将字节数转换为人类易读的单位展示(如2.0K、4.5M),因此文件大小不再显示为裸字节数。

典型输出如下:

total 68K
drwxrwxr-x  5 pi pi 4.0K Sep 23 15:42 .
drwx------ 21 pi pi 4.0K Sep 23 15:42 ..
drwxrwxr-x  2 pi pi 4.0K Sep 23 15:42 assets
drwxrwxr-x  8 pi pi 4.0K Sep 23 15:42 .git
-rw-rw-r--  1 pi pi   82 Sep 23 15:42 .gitignore
-rwxrwxr-x  1 pi pi 5.2K Sep 23 15:42 install.sh
-rw-rw-r--  1 pi pi 9.0K Sep 23 15:42 README.md
-rw-rw-r--  1 pi pi 8.5K Sep 23 15:42 README_zh.md
-rw-rw-r--  1 pi pi   98 Sep 23 15:42 requirements.txt
-rw-rw-r--  1 pi pi 3.2K Sep 23 15:42 setup_autostart.sh
drwxrwxr-x  2 pi pi 4.0K Sep 23 15:42 src
-rw-rw-r--  1 pi pi  509 Sep 23 15:42 start.sh

文件类型识别

权限串的第1位表示文件类型:

例如:

  • drwxr-xr-x:表示目录。

  • -rw-r--r--:表示普通文件。

  • lrwxrwxrwx:表示符号链接。

权限位结构说明

第2至第10位共9个字符,分为3组:

rwx r-x r--
|   |   |
|   |   +-- 其他用户(others)权限
|   +------ 所属组(group)权限
+---------- 所有者(owner)权限

每组权限包含以下字符:

符号

含义

r

可读

w

可写

x

可执行

-

无此权限

例如:

  • rw-r--r--:所有者可读可写,所属组与其他用户仅可读。

  • rwxr-xr-x:所有者可读、可写、可执行,所属组与其他用户可读、可执行。

chown:所有者与所属组管理

当文件归属错误的用户或用户组时,可使用 chown 进行修改。

基本语法:

sudo chown [选项] 用户[:组] 文件或目录

常用示例:

将文件所有者更改为当前登录用户:

sudo chown "$USER" demo.sh

同时修改所有者和所属组:

sudo chown "$USER":"$USER" demo.sh

递归修改整个目录的所有者与所属组:

sudo chown -R "$USER":"$USER" "$HOME"/project

仅修改所属组:

sudo chown :"$USER" /home/"$USER"/project/config.json

Quectel Pi H1典型应用场景:

  • 通过 sudo 解压或复制文件后,文件所有者将变更为root,导致普通用户无法继续编辑。

  • 项目目录从外部设备拷贝后,若权限与当前用户不一致,需进行统一调整。

chmod:访问权限管理

当文件“可读但不可写”或“脚本无法执行”时,通常需使用 chmod。

基本语法:

chmod [选项] 权限 文件或目录

常用选项:

  • -R:递归修改目录及其所有子目录、文件。

  • -v:显示处理过程的详细信息。

符号模式:

格式如下:

[ugoa][+-=][rwx]

其中:

  • u 表示所有者

  • g 表示所属组

  • o 表示其他用户

  • a 表示所有用户

常用示例:

为所有者添加执行权限:

chmod u+x demo.sh

为所有用户添加读权限:

chmod a+r demo.txt

移除其他用户的写权限:

chmod o-w demo.txt

数字模式:

权限亦可采用数字形式表示,例如:

chmod 755 demo.sh
chmod 644 notes.txt

此处的3位数字分别对应:

chmod 755 demo.sh
    | | |
    | | +-- 其他用户(others)权限
    | +---- 所属组(group)权限
    +------ 所有者(owner)权限

每组rwx权限均可视为3个开关位:r、w和x。

  • r(读权限)是否开启?

  • w(写权限)是否开启?

  • x(执行权限)是否开启?

这3个开关既可理解为“加法权重”,也可视为一个3位二进制数:

对应关系如下:

权限位

二进制位

十进制权重

r

100

4

w

010

2

x

001

1

因此,一组权限的数字本质上即为各开启权限位的权重之和:

权限

二进制

数字

---

000

0

--x

001

1

-w-

010

2

-wx

011

3

r--

100

4

r-x

101

5

rw-

110

6

rwx

111

7

操作示例

为脚本添加执行权限

chmod u+x start.sh
./start.sh

保护私有配置文件

chmod 700 ~/.ssh
chmod 600 ~/.ssh/config

文件与目录管理

掌握Linux中最常用的文件与目录操作命令:pwd、cd、ls、mkdir、rmdir、cp、rm、mv,以及 cat、tail 等文件内容查看工具。

在Linux中,多数日常操作均围绕“路径”与“目录”展开。无论是查看日志、切换项目目录、复制模型文件,还是删除无用资源,均需依赖常用的文件与目录命令。

路径与目录基础概念

当前工作目录

终端始终存在一个“当前工作目录”。多数命令默认作用于当前目录,因此明确当前所处位置至关重要。

查看当前目录:

pwd

执行后终端会打印当前工作目录的绝对路径,例如:

/home/user/project

路径表示方式

  • 绝对路径:从根目录 / 开始,例如 /home/user/project。

  • 相对路径:相对于当前目录,例如 project/src。

常见特殊写法:

  • .表示当前目录;

  • ..表示上一级目录;

  • ~表示当前用户主目录,例如 /home/user。

常用系统目录

在Debian系统中,用户通常会涉及以下目录:

目录

作用

/etc

系统配置文件

/opt

第三方应用或自定义程序

/var/log

系统日志

/tmp

临时文件

常用命令

ls:目录内容查看

ls 命令用于显示目录包含的文件及子目录内容。默认作用于当前工作目录,也可在命令后接任意相对路径或绝对路径以查看指定目录。

示例:

# 查看当前目录内容
ls

# 查看/var/log目录内容
ls /var/log

# 查看当前目录所有文件,包括隐藏文件
ls -la

# 查看更易读的文件大小
ls -lh

# 按时间排序查看文件
ls -ltr

cd:目录切换

cd 命令用于切换当前工作目录至指定路径。

cd [dirName]
# dirName:目标目录,可为相对路径或绝对路径

示例:

# 切换到usr目录
cd /usr

# 返回上一级目录
cd ..

# 返回用户主目录
cd ~

# 返回上一次所在目录
cd -

mkdir 与 rmdir:目录创建与删除

mkdir 命令用于创建目录,rmdir 命令用于删除空目录。

# -p确保目录路径存在,若不存在则自动创建
mkdir [-p] dirName

# -p若父目录因删除子目录而变为空,则一并删除
rmdir [-p] dirName

示例:

# 在当前目录下创建logs目录
mkdir logs

# 自动创建不存在的父目录project/data
mkdir -p project/data/raw

# 删除logs目录,该目录需为空
rmdir logs

cp:文件与目录复制

通过 cp 命令,可将文件或目录从源位置复制到目标位置。

cp [选项] <源路径>... <目标路径>

cp 支持同时指定多个源路径并统一复制至一个目标目录下。常用选项:

  • -r:递归复制目录及其内容。

  • -i:目标文件已存在时,先交互式确认是否覆盖。

  • -a:归档复制,完整保留属主、权限位、时间戳及软硬链接

示例:

# 将文件source.txt复制为backup.txt
cp source.txt backup.txt

# 复制目录
cp -r project project_backup

# 归档复制,完整保留属主、权限与时间戳
cp -a project project_backup

mv:移动与重命名

mv 命令用于重命名文件或目录,或将其移动至其他位置。

基本语法:

mv [选项] <源路径>... <目标路径>
  • -b: 当目标文件或目录存在时,在执行覆盖前,会为其创建一个备份。

  • -i: 如果指定移动的源目录或文件与目标的目录或文件同名,则会先询问是否覆盖旧文件,输入 y 表示直接覆盖,输入 n 表示取消该操作。

  • -f: 如果指定移动的源目录或文件与目标的目录或文件同名,不会询问,直接覆盖旧文件。

  • -n: 不要覆盖任何已存在的文件或目录。

  • -u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

# 将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 命令用于删除文件或目录。

基本语法:

rm [选项] 文件或目录
  • -i: 删除前逐一询问确认。

  • -f: 即使原档案属性设为唯读,亦直接删除,无需逐一确认。

  • -r: 将目录及以下之档案亦逐一删除。

# 删除文件demo.txt
rm demo.txt

# 删除demo_dir目录及子目录
rm -r demo_dir

# 强制删除且不提示
rm -rf demo_dir

备注

rm -rf 为高风险命令,删除数据后无法恢复。执行前建议先使用 pwd 和 ls 命令确认目标路径。

cat与tail:文件内容查看

cat:

cat 命令用于连接文件并将其打印至标准输出设备,主要用于查看和拼接文件内容。

# 查看README.md文件内容
cat README.md

# 配合行号显示查看
cat -n app.py

# 拼接多个文件并重定向合并为新文件
cat part1.txt part2.txt > merged.txt

提示:cat 会一次性将文件全部内容输出至终端。若查看数百兆的大型日志或数据文件,请改用 less 或 more 命令分页浏览(按 q 键退出),避免终端卡死。

tail:

tail 命令可用于查看文件末尾的内容。

# 默认查看目标文件末尾最后10行内容(以dpkg安装日志为例) 
tail /var/log/dpkg.log 

# 指定输出末尾最后50行内容(-n参数) 
tail -n 50 /var/log/dpkg.log 

# 动态实时追踪日志末尾追加的新增行(-f参数) 
tail -f ~/my_project/app.log

提示:执行 tail -f 后,终端将持续挂起并实时监听日志输出。如需退出追踪状态返回Shell命令行,请按下 Ctrl+C 组合键。

基础操作示例

创建并进入项目目录

# 创建项目目录
mkdir -p ~/project/demo

# 进入项目目录
cd ~/project/demo

# 查看当前工作目录,回显/home/<用户名>/project/demo
pwd

备份配置文件

# -i在目标文件已存在时交互式确认是否覆盖,避免误覆盖已有备份
cp -i /etc/hosts ~/hosts.bak

清理临时目录

# 创建演示用临时目录
mkdir -p ~/project/demo/tmp

# 删除目录
rm -r ~/project/demo/tmp

文本编辑

在使用Quectel Pi H1进行开发时,用户经常需要修改配置文件、编辑脚本或调整服务参数。终端环境下常用的文本编辑器有 Vim 和 nano。本节将分别介绍这两款编辑器的使用方法,用户可根据实际需求选择合适的工具。

Vim编辑器

Vim 是 vi 编辑器的增强版本,支持语法高亮、搜索替换、批量编辑等功能,适用于本地终端、串口终端及SSH会话。

若系统提示找不到该命令,可先执行以下命令安装:

sudo apt update
sudo apt install vim -y

Vim工作模式

根据常见使用方式,Vim可划分为以下三个核心模式:

模式

作用

如何进入

普通模式

移动光标、复制、删除等操作

打开文件后默认进入

插入模式

输入和修改文本

在普通模式下按 i、a、o

命令行模式

执行保存、退出、查找替换等命令

在普通模式下按 :

三种模式间的切换逻辑如下:

  • 打开文件后,默认进入普通模式。

  • 需要输入内容时,切换到插入模式。

  • 需要保存、退出或执行查找替换时,切换到命令行模式。

基础操作流程

  1. 打开或创建文件

vim notes.txt

若文件不存在,Vim 将在内存中新建文件缓冲区(Buffer),执行保存后才正式在磁盘上生成该文件。

  1. 进入插入模式

在普通模式下按下以下任意一个键:

按键

作用

i

在光标当前位置开始插入

a

在光标后一个位置开始插入

o

在当前行下方新增一行并插入

  1. 文本录入

进入插入模式后,即可像普通编辑器一样输入字符。

  1. 返回普通模式

按 Esc 键返回普通模式。

  1. 保存与退出

在普通模式下按下 : 键进入命令行模式,然后输入相应命令(包含开头的英文冒号 :)并回车执行。

命令

作用

: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 行

操作示例

以下以创建一个简单脚本为例:

vim hello.sh

按 i 进入插入模式,写入以下内容:

#!/bin/bash
echo "Hello Quectel Pi H1"

按下 Esc 返回普通模式,回车后输入 :wq 保存并退出。

随后赋予脚本可执行权限:

chmod u+x hello.sh
./hello.sh

预期终端回显如下:

Hello Quectel Pi H1

编辑系统文件

编辑普通用户目录下的文件时,可直接执行:

vim ~/notes.txt

编辑系统配置文件时,通常需要通过 sudo 提升管理员权限。修改前建议先备份原文件:

# 使用-a(归档模式)备份,确保权限位、属主与时间戳与原文件完全一致
sudo cp -a /etc/hostname /etc/hostname.bak

# 编辑配置文件
sudo vim /etc/hostname

常见问题排查

无法退出Vim

多数情况是由于仍处于输入模式。请先按下 Esc 键,再输入 :q 或 :wq。

保存时提示权限不足

表明当前文件需要管理员权限,请退出后使用 sudo vim <文件名> 重新打开。

缩进异常

Vim 开启了 autoindent(自动缩进)与粘贴流冲突,或 tabstop、shiftwidth 与制表符展开规则不一致。解决方式:在普通模式下先执行 :set paste 开启粘贴模式,粘贴完成后再执行 :set nopaste 关闭。

中文显示异常

通常与终端字体或文件编码有关。建议优先使用UTF-8编码,并在图形终端中确认字体支持中文。

nano编辑器

概述

nano 是一款轻量级终端文本编辑器,操作简单直观,无需切换模式,适合快速编辑配置文件,也适合不熟悉 Vim 的用户使用。

若系统未预装 nano,可先执行以下命令进行安装:

sudo apt update && sudo apt install -y nano

基础操作

  1. 打开或创建文件

nano notes.txt

若文件不存在,nano 会在内存中开辟一个文本缓冲区,保存时将自动创建该文件。打开后即可直接输入和编辑文本,无需切换模式。

  1. 编辑文本

打开文件后,在光标所在位置即可直接输入字符,并使用方向键移动光标。

  1. 保存文件

按下 Ctrl+O(字母 O),nano 将提示确认文件名,按下 Enter 键确认保存。

  1. 退出编辑器

按下 Ctrl+X 退出。若文件存在未保存的修改,nano 将询问是否保存:

  • 按 Y 会提示 File Name to Write: notes.txt, 再按一次 Enter 确认文件名即可保存并退出;

  • 按 N 不保存退出;

  • 按 Ctrl+C 取消退出操作。

常用快捷键

nano 底部会显示常用快捷键提示,其中 ^ 表示 Ctrl 键,M- 表示 Alt 键。

快捷键

作用

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

向上翻页(也可用键盘 PageUp 键)

Ctrl + V

向下翻页(也可用键盘 PageDown 键)

搜索与替换

搜索文本

按 Ctrl+W,输入要搜索的关键字,按 Enter 跳转到第一个匹配位置。继续按 Ctrl+W 并按 Enter 可跳转到下一个匹配。

搜索并替换

按 Ctrl+****,输入要查找的字符串并按下 Enter 键,再输入替换后的字符串并按下 Enter 键。nano 将逐一询问是否替换:

  • 按 Y 替换当前匹配;

  • 按 N 跳过当前匹配;

  • 按 A 替换所有匹配。

操作示例

以创建一个简单脚本为例:

nano hello.sh

直接输入以下内容:

#!/bin/bash
echo "Hello Quectel Pi H1"

按 Ctrl+O 保存,按 Enter 确认文件名,再按 Ctrl+X 退出。

随后赋予脚本可执行权限:

chmod u+x hello.sh
./hello.sh

预期终端回显如下:

Hello Quectel Pi H1

编辑系统文件

编辑系统配置文件时,同样需要通过 sudo 提升管理员权限:

# 归档模式备份,保留权限位、属主与时间戳
sudo cp -a /etc/hostname /etc/hostname.bak

# 编辑配置文件
sudo nano /etc/hostname

软件下载与更新

在Debian系统中,安装软件通常依赖两类工具:APT 与 dpkg。理解二者的分工,有助于清晰区分“从软件源安装软件”与“手动安装本地 .deb 安装包”两类场景。

本节将介绍Debian系统中安装与更新软件的基本方法,以便用户理解后续搭建环境时 apt install 等命令的含义。

关于APT的详细使用方法、常见命令和软件源配置,请参考 软件更新。

APT 与 dpkg 概述

工具

作用

典型场景

APT

从软件源查找、下载软件,自动处理依赖

联网安装软件、更新系统

dpkg

直接安装本地.deb包

手动安装厂商提供的安装包

简而言之,APT为日常使用的上层工具(自动处理依赖),dpkg为底层工具(仅负责安装软件包,不处理依赖)。

APT 常用命令

apt update

更新软件包列表,该命令用于刷新本地软件包索引。该命令不会安装或升级任何软件,仅用于更新软件源中可用软件包及其最新版本的信息。

建议在安装软件或升级系统前,先执行 apt update 命令。

sudo apt update

apt upgrade

升级已安装的软件包,该命令会将系统中所有已安装软件包升级至软件源中可用的最新版本。

sudo apt upgrade -y

通常的操作流程为先执行 update,再执行 upgrade。

apt install

安装软件包,此为最常用的命令。该命令会从软件源中查找指定的软件包,自动下载并安装,同时处理所有依赖关系。

sudo apt install <软件包名>

后续搭建开发环境时,常会用到类似命令:

# 安装Python 3
sudo apt install -y python3
# 安装Git      
sudo apt install -y git  
# 安装Vim编辑器         
sudo apt install -y vim           
# 或
# 可一次性安装多个包
sudo apt install -y python3 git vim

apt remove

卸载软件包,用于从系统中卸载指定的软件包。

# 基础卸载:仅移除程序本身,保留其原有的系统配置文件(适用于后续可能重新安装)
sudo apt remove -y <软件包名>

# 彻底清除:同时删除程序文件及其在/etc/目录下的所有全局配置文件
sudo apt purge -y <软件包名>

# 孤儿依赖清理:自动扫描并移除因卸载主程序而残留的无用次级依赖库
sudo apt autoremove --purge -y

# 清理本地包缓存:清空/var/cache/apt/archives/下已下载的.deb安装缓存以释放磁盘
sudo apt clean