Debian Linux 基础知识入门
什么是 Debian Linux?
Debian 是一个自由、开源的操作系统,以其稳定性、安全性和庞大的软件库而闻名。LeBot 的主控板通常运行的是基于 Debian 的 Linux 系统(如 Debian、Ubuntu 或专门的机器人系统)。理解 Debian Linux 的基础知识对于进行机器人开发至关重要。
Debian 的特点
- 稳定性 - Debian 在服务器和嵌入式系统中广泛使用,以其长期的稳定性而著称
- 自由软件 - Debian 严格遵循自由软件的原则,所有软件都是开源的
- 庞大的软件库 - 拥有超过 70,000 个软件包,满足各种需求
- 社区驱动 - 由全球志愿者社区维护和开发
- 跨平台支持 - 支持从超级计算机到嵌入式设备的各种平台
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" filenamesed - 流编辑器
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' filenameawk - 文本处理
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.zipShell 脚本基础
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,以及网络通信的相关内容。