本文档面向Quectel Pi H1智能主控板初学者,旨在协助用户快速掌握Debian系统中的常见操作与开发任务。
文件属性与权限
了解Linux文件的类型、所有者及权限位结构,学习使用ls -l命令查看文件属性,并通过chown、chmod命令管理文件所有者与访问权限。
在Linux中,文件不仅包含“文件名”与“大小”,还具备所有者、所属组、访问权限、类型及修改时间等属性。理解这些属性有助于排查脚本无法执行、目录不可写,以及修改系统配置文件时需要使用sudo等问题。
文件属性查看方法
最常用的查看方式为:
ls -l
若需同时显示隐藏文件,并以更易读的方式显示文件大小,可执行如下命令:
ls -lah
典型输出如下:
-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组:
rwx r-x r--
| | |
| | +-- 其他用户(others)权限
| +------ 所属组(group)权限
+---------- 所有者(owner)权限
每组权限包含以下字符:
| 符号 | 含义 |
|---|---|
| r | 可读 |
| w | 可写 |
| x | 可执行 |
| - | 无此权限 |
例如:
-
rw-r–r–:所有者可读可写,所属组与其他用户仅可读。
-
rwxr-xr-x:所有者可读、可写、可执行,所属组与其他用户可读、可执行。
chown:所有者与所属组管理
当文件归属错误的用户或用户组时,可使用chown进行修改。
基本语法:
sudo chown [选项] 用户[:组] 文件或目录
常用示例:
将文件所有者更改为pi:
sudo chown pi demo.sh
同时修改所有者和所属组:
sudo chown pi:pi demo.sh
递归修改整个目录的所有者与所属组:
sudo chown -R pi:pi /home/pi/project
仅修改所属组:
sudo chown :pi /home/pi/project/config.json
Quectel Pi H1典型应用场景
-
通过sudo解压或复制文件后,文件所有者将变更为root,导致普通用户pi无法继续编辑。
-
项目目录从外部设备拷贝后,若权限与当前用户不一致,需进行统一调整。
chmod:访问权限管理
当文件“可读但不可写”或“脚本无法执行”时,通常需使用chmod。
基本语法:
chmod [选项] 权限 文件或目录
符号模式
格式如下:
[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 754 demo.sh
| | |
| | +-- 其他用户(others)权限
| +---- 所属组(group)权限
+------ 所有者(owner)权限
每组rwx权限均可视为3个开关位:r、w和x。
-
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
操作示例
为脚本添加执行权限
chmod u+x start.sh
./start.sh
保护私有配置文件
chmod 600 ~/.ssh/config
文件与目录管理
掌握Linux中最常用的文件与目录操作命令:pwd、cd、ls、mkdir、rmdir、cp、rm、mv,以及cat、tail等文件内容查看工具。
在Linux中,多数日常操作均围绕“路径”与“目录”展开。无论是查看日志、切换项目目录、复制模型文件,还是删除无用资源,均需依赖常用的文件与目录命令。
路径与目录基础概念
当前工作目录
终端始终存在一个“当前工作目录”。多数命令默认作用于当前目录,因此明确当前所处位置至关重要。
查看当前目录:
pwd
路径表示方式
-
绝对路径:从根目录/开始,例如/home/pi/project。
-
相对路径:相对于当前目录,例如project/src。
常见特殊写法:
-
.表示当前目录;
-
..表示上一级目录;
-
~表示当前用户主目录,例如/home/pi。
常用系统目录
在Debian系统中,用户通常会涉及以下目录:
| 目录 | 作用 |
|---|---|
| /etc | 系统配置文件 |
| /opt | 第三方应用或自定义程序 |
| /var/log | 系统日志 |
| /tmp | 临时文件 |
常用命令
ls:目录内容查看
ls命令用于显示当前工作目录包含的文件及子目录内容。
示例:
# 查看当前目录内容
ls
# 查看当前目录所有文件,包括隐藏文件
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 [选项] 源文件 目标文件
示例:
#将文件source.txt复制为backup.txt
cp source.txt backup.txt
#复制目录
cp -r project project_backup
mv:移动与重命名
mv命令用于重命名文件或目录,或将其移动至其他位置。
#将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命令用于删除文件或目录。
#删除文件demo.txt
rm demo.txt
#删除demo_dir目录及子目录
rm -r demo_dir
#强制删除且不提示
rm -rf demo_dir
| Note:tips |
|---|
| rm -rf为高风险命令,删除数据后无法恢复。执行前建议先使用pwd和ls命令确认目标路径。 |
cat与tail:文件内容查看
cat
cat命令用于连接文件并将其打印至标准输出设备,主要用于查看和拼接文件内容。
#查看README.md文件内容
cat README.md
#配合行号显示查看:
cat -n app.py
tail
tail命令可用于查看文件末尾的内容。
# 默认显示最后10行系统日志
tail /var/log/syslog
#查看系统日志/var/log/syslog末尾50行
tail -n 50 /var/log/syslog
#实时跟踪日志
tail -f /var/log/syslog
基础操作示例
创建并进入项目目录
mkdir -p ~/project/demo
cd ~/project/demo
pwd
备份配置文件
cp -i /etc/hosts ~/hosts.bak
清理临时目录
rm -r ~/project/demo/tmp
文本编辑
在使用Quectel Pi H1进行开发时,用户经常需要修改配置文件、编辑脚本或调整服务参数。终端环境下常用的文本编辑器有Vim和nano。本节将分别介绍这两款编辑器的使用方法,用户可根据实际需求选择合适的工具。
Vim编辑器
vim是vi编辑器的增强版本,支持语法高亮、搜索替换、批量编辑等功能,适用于本地终端、串口终端及SSH会话。
若系统提示找不到该命令,可先执行以下命令安装:
sudo apt update
sudo apt install vim
Vim工作模式
根据常见使用方式,Vim可划分为以下三个核心模式:
| 模式 | 作用 | 如何进入 |
|---|---|---|
| 命令模式 | 移动光标、复制、删除、保存、退出 | 打开文件后默认进入 |
| 输入模式 | 输入和修改文本 | 在命令模式下按i、a、o |
| 命令行模式 | 执行保存、退出、查找替换等命令 | 在命令模式按: |
三种模式间的切换逻辑如下:
- 打开文件后,默认进入命令模式。
- 需要输入内容时,切换到输入模式。
- 需要保存、退出或执行查找替换时,切换到命令行模式。
基础操作流程
- 打开或创建文件
vim notes.txt
若文件不存在,Vim将自动新建该文件。
- 进入输入模式
在命令模式下按下以下任意一个键:
| 按键 | 作用 |
|---|---|
| i | 在光标当前位置开始输入 |
| a | 在光标后一个位置开始输入 |
| o | 在当前行下方新增一行并输入 |
- 文本录入
进入输入模式后,即可像普通编辑器一样输入字符。
- 返回命令模式
按Esc键返回命令模式。
- 保存与退出
在命令模式下按下 : 键进入命令行模式,然后输入并执行相应命令:
| 命令 | 作用 |
|---|---|
| :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
编辑系统文件
编辑普通用户目录下的文件时,可直接执行:
vim ~/notes.txt
编辑系统配置文件时,通常需使用sudo权限:
sudo vim /etc/hostname
建议先备份原文件:
sudo cp /etc/hostname /etc/hostname.bak
sudo vim /etc/hostname
常见问题排查
无法退出Vim
多数情况是由于仍处于输入模式。请先按下Esc键,再输入:q或:wq。
保存时提示权限不足
表明当前文件需要管理员权限,请退出后使用sudo vim <文件名>重新打开。
中文显示或缩进异常
通常与终端字体或文件编码有关。建议优先使用UTF-8编码,并在图形终端中确认字体支持中文。
nano编辑器
概述
nano是一款轻量级终端文本编辑器,操作简单直观,无需切换模式,适合快速编辑配置文件,也适合不熟悉Vim的用户使用。
若系统未预装nano,可先执行以下命令进行安装:
sudo apt update
sudo apt install nano
基础操作
- 打开或创建文件
nano notes.txt
若文件不存在,nano将自动新建该文件。打开后即可直接输入和编辑文本,无需切换模式。
- 编辑文本
打开文件后,在光标所在位置即可直接输入字符,并使用方向键移动光标。
- 保存文件
按下Ctrl+O(字母O),nano将提示确认文件名,按下Enter键确认保存。
- 退出编辑器
按下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替换所有匹配
操作示例
以创建一个简单脚本为例:
nano hello.sh
直接输入以下内容:
#!/bin/bash
echo "Hello Quectel Pi H1"
按Ctrl+O保存,按Enter确认文件名,再按Ctrl+X退出。
随后为脚本添加执行权限:
chmod u+x hello.sh
./hello.sh
编辑系统文件
编辑系统配置文件时,同样需使用sudo权限:
sudo nano /etc/hostname
软件下载与更新
在Debian系统中,安装软件通常依赖两类工具:APT与dpkg。理解二者的分工,有助于清晰区分“从软件源安装软件”与“手动安装本地.deb安装包”两类场景。
本节将介绍Debian系统中安装与更新软件的基本方法,以便用户理解后续搭建环境时apt install等命令的含义。
关于APT的详细使用方法、常见命令和软件源配置,请参考软件更新。
APT与dpkg概述
在Debian系统中,安装软件主要依赖以下两类工具:
| 工具 | 作用 | 典型场景 |
|---|---|---|
| APT | 从软件源查找、下载软件,自动处理依赖 | |
| dpkg | 直接安装本地.deb包 | 手动安装厂商提供的安装包 |
简而言之,APT为日常使用的上层工具(自动处理依赖),DPKG为底层工具(仅负责安装软件包,不处理依赖)。
APT常用命令
apt update
更新软件包列表,该命令用于刷新本地软件包索引。该命令不会安装或升级任何软件,仅用于更新软件源中可用软件包及其最新版本的信息。
建议在安装软件或升级系统前,先执行apt update命令。
sudo apt update
apt upgrade
升级已安装的软件包,该命令会将系统中所有已安装软件包升级至软件源中可用的最新版本。
sudo apt upgrade
通常的操作流程为先执行update,再执行upgrade:
sudo apt update
sudo apt upgrade
apt install
安装软件包,此为最常用的命令。该命令会从软件源中查找指定的软件包,自动下载并安装,同时处理所有依赖关系。
sudo apt install 软件包名
后续搭建开发环境时,常会用到类似命令:
sudo apt install python3 # 安装Python 3
sudo apt install git # 安装Git
sudo apt install vim # 安装Vim编辑器
#可一次性安装多个包:
sudo apt install python3 git vim
apt remove
卸载软件包,用于从系统中卸载指定的软件包。
sudo apt remove 软件包名