Linux 命令基础
SSH 进去只有一个黑框和光标。命令行才是树莓派的主场——学会 20 个命令,你就能自如地导航、编辑、装软件、管进程。
SSH 进去只有一个黑框和光标。命令行才是树莓派的主场——学会 20 个命令,你就能自如地导航、编辑、装软件、管进程。
pi@raspberrypi:~ $ 就是 Bash 提示符:~ 表示当前在家目录,$ 表示普通用户(# 表示 root)。/ 开始,呈树状。关键目录:/home/pi(你的家目录)、/etc(系统配置文件)、/var/log(日志)、/usr/bin(可执行程序)、/dev(设备文件,GPIO/I2C 都在这)、/proc 与 /sys(内核虚拟文件系统,读硬件信息)。/ 开始写全,如 /home/pi/project/app.py,在任何位置都指向同一文件。相对路径基于当前目录,如 ./app.py(当前目录)、../data(上级目录)。~ 是家目录的快捷方式(/home/pi)。ls -l 显示如 -rwxr-xr-x。chmod 755 file 用数字设权限(7=rwx, 5=r-x)。脚本要加执行权限才能 ./run.sh 运行。sudo,临时提权执行单条命令,会要求输入密码。sudo apt install 包名 从官方软件源自动下载并安装软件及其依赖,apt remove 卸载,apt search 搜索。无需手动下载 exe——这是 Linux 装软件的正道,安全且能统一升级。ps 和 top/htop 查看进程,kill PID 结束进程。你的 Python 脚本、Web 服务器、systemd 服务都是进程。看谁占了 CPU 和内存靠这些工具。| 把前一个命令的输出喂给后一个命令,如 ps aux | grep python(列进程再筛选含 python 的行)。重定向 > 把输出写入文件(覆盖),>> 追加。这是 Linux "组合小工具解决大问题"哲学的核心。理解目录树,才知道配置文件、日志、设备各在哪。下图是树莓派上你最常打交道的目录:
最高频的一组命令:看在哪、切目录、列文件、增删改。
# === 导航 === pwd # 打印当前目录(Print Working Directory) ls # 列出当前目录内容 ls -lah # -l 详情 -a 含隐藏文件 -h 人类可读的大小 cd /home/pi/project # 切换到指定目录 cd .. # 回到上级目录 cd ~ # 回到家目录(cd 不带参数也是回家) cd - # 回到上一个待过的目录 # === 文件/目录操作 === mkdir myapp # 新建目录 mkdir -p a/b/c # -p 递归创建多级目录 touch app.py # 新建空文件(或更新时间戳) cp app.py backup.py # 复制文件 cp -r dir1 dir2 # -r 递归复制整个目录 mv old.py new.py # 移动/重命名 rm app.py # 删除文件 rm -r mydir # 递归删除目录(谨慎!) # === 查看文件内容 === cat config.txt # 一次性打印全部内容 less bigfile.log # 分页查看(q 退出,/ 搜索) head -20 app.log # 看头 20 行 tail -f app.log # -f 实时跟踪新增行(看日志神器)
rm -rf 递归强制删除,不会二次确认、不进回收站,删了就没了。经典事故是 rm -rf / path(中间多打一个空格,变成删根目录)。删除前先 ls 确认,永远不要在不确定的路径上用 -rf,涉及系统目录时格外小心。
修改配置文件是家常便饭。nano 是新手友好的编辑器(vim 更强大但陡峭)。
# 用 nano 打开/新建文件 nano app.py # nano 底部快捷键(^ 表示 Ctrl): # Ctrl+O 保存(然后回车确认文件名) # Ctrl+X 退出 # Ctrl+W 搜索 # Ctrl+K 剪切整行 Ctrl+U 粘贴 # 改系统配置文件通常需要 sudo(否则无权保存) sudo nano /etc/hostname # vim 极简生存指令(若必须用 vim): # i 进入编辑 Esc 退出编辑 # :wq 保存退出 :q! 不保存强退
ls -l 输出的第一列就是权限。读懂它,才能解决"Permission denied"报错。
# 给脚本加执行权限,才能用 ./ 运行 chmod +x run.sh ./run.sh # 用数字精确设权限 chmod 755 run.sh # rwxr-xr-x chmod 600 secret.key # 只有属主可读写(存密钥用) # 改文件属主(需 sudo) sudo chown pi:pi myfile # 遇到 "Permission denied" 通常两种解法: # 1) 命令前加 sudo(需要管理员权限时) # 2) chmod 给文件补上相应权限 sudo systemctl restart nginx
在树莓派上装软件几乎全靠 apt。它自动处理依赖、从可信源下载、支持统一升级。
# 更新软件列表(装任何东西前先跑一次) sudo apt update # 搜索软件 apt search htop # 安装软件(-y 自动确认) sudo apt install -y htop git python3-pip # 卸载软件 sudo apt remove htop sudo apt purge htop # 连配置文件一起删 # 升级所有已装软件 sudo apt full-upgrade -y # 清理无用依赖,释放空间 sudo apt autoremove -y # 查看某软件是否已安装及版本 apt list --installed | grep python3
apt 装的是系统级软件(含部分 Python 库,如 python3-rpi.gpio);pip 装的是 Python 生态的库。新版 Raspberry Pi OS(bookworm)默认禁止 pip 直接装到系统 Python(防止破坏系统),推荐用虚拟环境:python3 -m venv myenv && source myenv/bin/activate,激活后再 pip install。硬件库(gpiozero)系统已预装,直接 import 即可。
树莓派资源有限,看谁吃 CPU/内存、结束卡死的程序,是日常运维基本功。
# 实时监控(htop 比 top 更友好,需先 apt install htop) htop # F9 结束进程,F10/q 退出 top # 系统自带,按 M 按内存排序、P 按 CPU # 列出进程并筛选 ps aux # 列出所有进程 ps aux | grep python # 只看含 python 的进程(配合管道) # 结束进程 kill 1234 # 温和结束 PID 1234 kill -9 1234 # 强制杀死(进程卡死时用) pkill -f app.py # 按名字杀掉所有匹配的进程 # 系统资源快照 free -h # 内存使用 df -h # 磁盘(SD 卡)剩余空间 uptime # 开机时长与负载 vcgencmd measure_temp # 树莓派 CPU 温度
Linux 哲学是"每个工具做好一件事,用管道串起来"。几个高频组合:
# 统计当前目录有多少个 .py 文件 ls *.py | wc -l # 查找并结束占用 8000 端口的进程 sudo lsof -i :8000 sudo kill $(sudo lsof -t -i :8000) # 把命令输出写入文件(> 覆盖,>> 追加) vcgencmd measure_temp > temp.log # 覆盖写 vcgencmd measure_temp >> temp_history.log # 追加 # 实时监控温度,每 2 秒刷新一次 watch -n 2 vcgencmd measure_temp # 从大日志里筛错误行,只看最后 20 条 grep -i error /var/log/syslog | tail -20 # 忽略输出(丢进黑洞),只关心命令是否成功 ping -c1 raspberrypi.local > /dev/null 2>&1
Tab 自动补全命令和路径(最重要,防手误);↑/↓ 翻历史命令;Ctrl+R 搜索历史命令;Ctrl+C 中断当前命令;Ctrl+L 清屏;history 看命令历史。善用 Tab 补全能减少一半的输入和拼写错误。
命令行是操控树莓派的日常语言。导航用 pwd/ls/cd,文件操作用 mkdir/cp/mv/rm(rm -rf 是核弹务必看清路径),编辑用 nano(Ctrl+O 存 Ctrl+X 退)。Linux 文件系统从根 / 展开,配置在 /etc、日志在 /var/log、硬件设备在 /dev(i2c-1、spidev、gpiochip 都在这,后续章节要用)。权限 rwx 用数字表示(755/644),脚本要 chmod +x 才能运行,需管理员权限时命令前加 sudo。装软件用 apt(sudo apt install),Python 库在新系统建议用 venv 虚拟环境。进程用 htop/ps 看、kill 结束。管道 | 串联命令、重定向 >/>> 存输出,是 Linux 组合小工具的精髓。下一章我们终于要碰硬件——用 Python 点亮第一颗 LED。