Skip to content

Debian Linux 基础知识入门

什么是 Debian Linux?

Debian 是一个自由、开源的操作系统,以其稳定性、安全性和庞大的软件库而闻名。LeBot 的主控板通常运行的是基于 Debian 的 Linux 系统(如 Debian、Ubuntu 或专门的机器人系统)。理解 Debian Linux 的基础知识对于进行机器人开发至关重要。

Debian 的特点

  1. 稳定性 - Debian 在服务器和嵌入式系统中广泛使用,以其长期的稳定性而著称
  2. 自由软件 - Debian 严格遵循自由软件的原则,所有软件都是开源的
  3. 庞大的软件库 - 拥有超过 70,000 个软件包,满足各种需求
  4. 社区驱动 - 由全球志愿者社区维护和开发
  5. 跨平台支持 - 支持从超级计算机到嵌入式设备的各种平台

Linux 文件系统结构

理解 Linux 文件系统是学习 Linux 的基础。Debian Linux 的文件系统遵循 FHS(Filesystem Hierarchy Standard)标准。

根目录与主要目录

/                    # 根目录,所有文件的起点
├── bin/             # 基本命令二进制文件(所有用户可访问)
├── sbin/            # 系统管理员命令二进制文件
├── boot/            # 系统启动文件和内核
├── dev/             # 设备文件
├── etc/             # 系统配置文件
├── home/            # 用户主目录
├── lib/             # 系统库文件
├── media/           # 可移动媒体挂载点
├── mnt/             # 临时挂载点
├── opt/             # 可选应用程序
├── proc/            # 进程信息虚拟文件系统
├── root/            # root 用户的主目录
├── run/             # 运行时数据
├── srv/             # 服务数据
├── sys/             # 系统信息虚拟文件系统
├── tmp/             # 临时文件
├── usr/             # 用户程序和数据
│   ├── bin/         # 用户命令
│   ├── local/       # 本地安装的程序
│   └── share/       # 共享数据
└── var/             # 可变数据
    ├── log/         # 日志文件
    ├── cache/       # 缓存文件
    └── lib/         # 变量库文件

重要的系统目录说明

  • /etc - 所有系统配置文件都在这里。例如网络配置、用户信息、软件配置等
  • /home - 普通用户的主目录。每个用户有一个对应的目录
  • /var/log - 系统和应用程序的日志文件,用于调试和监控
  • /usr/local - 用于安装本地应用程序,不会被系统更新覆盖
  • /opt - 第三方应用程序通常安装在这里

基本命令与操作

文件和目录操作

列出文件和目录

bash
# 基本列表
ls

# 详细列表(包含权限、大小、修改时间等)
ls -l

# 显示隐藏文件
ls -a

# 人类可读的文件大小
ls -lh

# 递归列出目录内容
ls -R

改变工作目录

bash
# 进入目录
cd /path/to/directory

# 进入上一级目录
cd ..

# 进入主目录
cd ~

# 返回上一次的目录
cd -

创建和删除目录

bash
# 创建单个目录
mkdir directory_name

# 创建多层目录
mkdir -p path/to/nested/directory

# 删除空目录
rmdir directory_name

# 删除非空目录(危险!)
rm -r directory_name

创建、查看和编辑文件

bash
# 创建空文件
touch filename.txt

# 查看文件内容
cat filename.txt

# 分页查看文件(适合大文件)
less filename.txt

# 显示文件前 10 行
head -10 filename.txt

# 显示文件后 10 行
tail -10 filename.txt

# 实时查看文件末尾(适合查看日志)
tail -f /var/log/syslog

# 编辑文件(使用 nano 编辑器)
nano filename.txt

# 编辑文件(使用 vi/vim 编辑器)
vi filename.txt

复制、移动和删除文件

bash
# 复制文件
cp source.txt destination.txt

# 递归复制目录
cp -r source_dir dest_dir

# 移动或重命名文件
mv old_name.txt new_name.txt

# 删除文件
rm filename.txt

# 安全删除(询问确认)
rm -i filename.txt

# 删除前显示详细信息
rm -v filename.txt

权限管理

Linux 系统中,每个文件都有三类权限:所有者、组和其他人。

理解文件权限

bash
# 使用 ls -l 查看权限
$ ls -l
-rw-r--r-- 1 user group 1234 Jan 1 10:00 file.txt

权限字符串的含义:

  • 第一个字符 - 表示文件类型(- 为普通文件,d 为目录,l 为符号链接)
  • 接下来三个字符 rw- 表示所有者权限(读、写、无执行)
  • 接下来三个字符 r-- 表示组权限(只读)
  • 最后三个字符 r-- 表示其他人权限(只读)

更改权限

bash
# 使用符号表示法
chmod u+x file.txt          # 给所有者增加执行权限
chmod g+r file.txt          # 给组增加读权限
chmod o-r file.txt          # 移除其他人的读权限
chmod a+r file.txt          # 给所有人增加读权限

# 使用数字表示法(4=读,2=写,1=执行)
chmod 755 file.txt          # 所有者: rwx, 组: rx, 其他: rx
chmod 644 file.txt          # 所有者: rw, 组: r, 其他: r
chmod 700 file.txt          # 所有者: rwx, 组: 无, 其他: 无

更改所有者和组

bash
# 更改所有者
sudo chown newuser file.txt

# 更改所有者和组
sudo chown newuser:newgroup file.txt

# 递归更改目录及其内容
sudo chown -R newuser:newgroup directory/

用户和组管理

查看用户信息

bash
# 显示当前用户
whoami

# 显示当前用户的 ID 和组
id

# 列出所有用户
cut -d: -f1 /etc/passwd

# 显示用户登录信息
w

创建和删除用户

bash
# 创建新用户
sudo useradd username

# 创建用户并指定主目录和 shell
sudo useradd -m -s /bin/bash username

# 删除用户
sudo userdel username

# 删除用户及其主目录
sudo userdel -r username

# 设置或更改用户密码
passwd username

组管理

bash
# 创建新组
sudo groupadd groupname

# 删除组
sudo groupdel groupname

# 将用户添加到组
sudo usermod -aG groupname username

# 显示用户所属的组
groups username

软件包管理

Debian 使用 APT(Advanced Package Tool)进行软件包管理。

APT 基本命令

bash
# 更新软件包列表
sudo apt update

# 升级所有可升级的软件包
sudo apt upgrade

# 安装软件包
sudo apt install package_name

# 安装多个软件包
sudo apt install package1 package2 package3

# 删除软件包(保留配置文件)
sudo apt remove package_name

# 完全删除软件包(包括配置文件)
sudo apt purge package_name

# 搜索软件包
apt search package_name

# 显示软件包信息
apt show package_name

# 列出已安装的软件包
apt list --installed

# 检查可升级的软件包
apt list --upgradable

# 清理缓存
sudo apt clean          # 删除所有缓存的包文件
sudo apt autoclean      # 只删除不会再被下载的包文件

常用软件包

对于 LeBot 开发,以下是一些有用的软件包:

bash
# 基本开发工具
sudo apt install build-essential git vim nano

# Python 开发
sudo apt install python3 python3-dev python3-pip

# 网络工具
sudo apt install curl wget net-tools openssh-server

# 文本处理和系统工具
sudo apt install grep sed awk htop

# ROS 和机器人相关
sudo apt install ros-noetic-desktop-full

# 编程相关
sudo apt install gcc g++ cmake

进程和服务管理

systemd 服务管理

Debian 使用 systemd 作为初始化系统和服务管理器。

bash
# 启动服务
sudo systemctl start service_name

# 停止服务
sudo systemctl stop service_name

# 重启服务
sudo systemctl restart service_name

# 重新加载服务配置
sudo systemctl reload service_name

# 检查服务状态
sudo systemctl status service_name

# 启用服务(开机自启)
sudo systemctl enable service_name

# 禁用服务(不开机自启)
sudo systemctl disable service_name

# 列出所有已启用的服务
sudo systemctl list-unit-files --type=service --state=enabled

# 查看服务日志
sudo journalctl -u service_name

进程管理

bash
# 列出所有运行的进程
ps aux

# 使用 pgrep 查找特定进程
pgrep process_name

# 获取进程信息
ps aux | grep process_name

# 实时监控进程
top

# 更现代的系统监控工具
htop

# 杀死进程(发送信号)
kill -9 process_id

# 按进程名杀死进程
pkill -f process_name

网络配置基础

查看网络信息

bash
# 显示网络接口信息
ip addr show

# 或使用传统命令
ifconfig

# 显示路由表
ip route show

# 测试网络连接
ping example.com

# 追踪数据包路由
traceroute example.com

# 查看 DNS 配置
cat /etc/resolv.conf

# 测试网络连通性和获取详细信息
curl -I example.com

配置网络

网络配置文件通常位于 /etc/network/interfaces/etc/netplan/(对于使用 netplan 的系统)。

使用 ifconfig 临时配置

bash
# 配置 IP 地址
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

# 启用/禁用网络接口
sudo ifconfig eth0 up
sudo ifconfig eth0 down

查看和配置 DNS

bash
# 编辑 resolv.conf
sudo nano /etc/resolv.conf

# 添加 DNS 服务器
nameserver 8.8.8.8
nameserver 8.8.4.4

系统监控和日志

监控系统资源

bash
# 查看内存使用情况
free -h

# 查看磁盘空间
df -h

# 查看磁盘使用情况
du -h directory/

# 实时监控系统资源
htop

# 查看CPU信息
cat /proc/cpuinfo

# 查看系统信息
uname -a

# 查看系统负载
uptime

系统日志

bash
# 查看系统日志(使用 journalctl)
sudo journalctl

# 查看最近的日志
sudo journalctl -n 50

# 实时查看日志
sudo journalctl -f

# 查看特定时间范围的日志
sudo journalctl --since "2024-01-01" --until "2024-01-02"

# 查看特定服务的日志
sudo journalctl -u service_name

# 传统的日志文件位置
/var/log/syslog         # 系统日志
/var/log/auth.log       # 认证日志
/var/log/kern.log       # 内核日志

文本处理和搜索

grep - 文本搜索

bash
# 基本搜索
grep "pattern" filename

# 递归搜索目录
grep -r "pattern" directory/

# 显示行号
grep -n "pattern" filename

# 反向搜索(显示不匹配的行)
grep -v "pattern" filename

# 忽略大小写
grep -i "pattern" filename

# 只显示匹配的部分
grep -o "pattern" filename

# 显示匹配前后的行
grep -B 2 -A 2 "pattern" filename

sed - 流编辑器

bash
# 替换文本(第一个匹配)
sed 's/old/new/' filename

# 替换所有匹配
sed 's/old/new/g' filename

# 删除行
sed '/pattern/d' filename

# 显示特定行
sed -n '5,10p' filename

# 原地编辑文件
sed -i 's/old/new/g' filename

awk - 文本处理

bash
# 打印特定列
awk '{print $1, $3}' filename

# 打印匹配的行
awk '/pattern/ {print}' filename

# 统计行数
awk 'END {print NR}' filename

# 条件处理
awk '$3 > 50 {print $1}' filename

压缩和归档

bash
# 创建 tar 归档
tar -cf archive.tar directory/

# 创建压缩的 tar 归档(gzip)
tar -czf archive.tar.gz directory/

# 创建压缩的 tar 归档(bzip2)
tar -cjf archive.tar.bz2 directory/

# 提取 tar 归档
tar -xf archive.tar

# 提取压缩的 tar 归档
tar -xzf archive.tar.gz

# 列出归档内容
tar -tf archive.tar

# 压缩文件
gzip filename

# 解压缩文件
gunzip filename.gz

# 创建 ZIP 文件
zip -r archive.zip directory/

# 解压 ZIP 文件
unzip archive.zip

Shell 脚本基础

Shell 脚本是自动化任务的强大工具。以下是一个简单的例子:

创建第一个 Shell 脚本

bash
#!/bin/bash
# 这是一个简单的 Shell 脚本示例

echo "欢迎使用 LeBot 系统管理脚本"

# 显示当前日期和时间
echo "当前时间: $(date)"

# 检查系统负载
echo "系统负载: $(uptime)"

# 显示磁盘使用情况
echo "磁盘使用:"
df -h /

# 显示内存使用
echo "内存使用:"
free -h

保存和运行脚本

bash
# 保存为 system_info.sh
# 给脚本添加执行权限
chmod +x system_info.sh

# 运行脚本
./system_info.sh

条件语句

bash
#!/bin/bash

# if-else 语句
if [ $1 -gt 10 ]; then
    echo "参数大于 10"
else
    echo "参数小于或等于 10"
fi

# 检查文件是否存在
if [ -f "/path/to/file.txt" ]; then
    echo "文件存在"
else
    echo "文件不存在"
fi

# 检查目录是否存在
if [ -d "/path/to/directory" ]; then
    echo "目录存在"
fi

循环

bash
#!/bin/bash

# for 循环
for i in {1..5}; do
    echo "循环数字: $i"
done

# while 循环
counter=1
while [ $counter -le 5 ]; do
    echo "计数: $counter"
    counter=$((counter + 1))
done

# 遍历列表
for file in *.txt; do
    echo "处理文件: $file"
done

环境变量

bash
# 查看所有环境变量
env

# 查看特定环境变量
echo $PATH

# 设置环境变量(临时,仅当前会话)
export MY_VAR="value"

# 永久设置环境变量(添加到 ~/.bashrc)
echo 'export MY_VAR="value"' >> ~/.bashrc
source ~/.bashrc

# 常见的重要环境变量
PATH              # 命令搜索路径
HOME              # 用户主目录
USER              # 当前用户名
SHELL             # 当前 Shell
PWD               # 当前工作目录

总结

学习 Debian Linux 的基础知识是成为一个有效的 LeBot 开发者的关键。本章介绍了:

  • Linux 文件系统结构和重要目录
  • 基本的文件和目录操作命令
  • 用户、权限和组的管理
  • 软件包管理和系统服务管理
  • 网络配置和监控
  • 文本处理和日志查看
  • Shell 脚本编写基础

掌握这些基本概念和命令后,你将能够更有效地使用 LeBot 系统,进行开发和调试工作。在接下来的章节中,我们将探讨如何使用 SSH 远程连接到 LeBot,以及网络通信的相关内容。


推荐资源

由 LeBot 开发团队编写