Skip to content

Raspberry Pi - Linux Shell

虽然 Raspberry Pi OS 提供了图形桌面环境,但 Linux Shell(也称为命令行或终端)提供了一种强大的基于文本的方式来与你的 Pi 交互。理解基本的 Shell 命令对于许多任务至关重要,包括系统管理、编程和自动化。Raspberry Pi OS 上的默认 Shell 是 Bash (Bourne Again SHell)。

你可以通过几种方式从桌面环境访问 Shell:

  • 点击任务栏顶部的终端图标(通常看起来像 >_ 或一个黑色屏幕)。
  • 打开应用程序菜单(树莓派图标)-> 附件 -> 终端。
  • 使用键盘快捷键:Ctrl + Alt + T。

如果你的 Pi 直接启动到命令行(OS 的 Lite 版本),那么你已经处于 Shell 中了。

终端打开时,你会看到一个提示符,通常看起来像这样:

pi@raspberrypi:~ $

让我们分解它的组成部分:

  • pi:当前登录用户的用户名(默认用户是 pi)。
  • @:分隔符。
  • raspberrypi:机器的主机名(它在网络上的名称)。你可以更改这个名称。
  • ::分隔符。
  • ~:当前工作目录。波浪号(~)是用户主目录(例如 /home/pi)的快捷方式。
  • $:表示你以普通用户身份登录。如果你看到 # 符号,意味着你正在以超级用户 (root) 身份操作,该身份具有管理权限。

你在 $(或 #)符号后输入命令,然后按 Enter 键执行。

要查看当前目录的内容:

ls

ls 的常用选项:

  • ls -l:长列表格式(显示权限、所有者、大小、修改日期)。
  • ls -a:显示所有文件,包括隐藏文件(名称以点 . 开头)。
  • ls -h:与 -l 一起使用时,以人类可读的格式显示文件大小(例如 KB、MB、GB)。
  • ls -t:按修改时间排序,最新的在前。
  • ls -r:反转排序顺序。

你可以组合选项:ls -lah 显示所有文件,以长格式和人类可读的大小。

注意:Linux 命令和文件名是区分大小写的。MyFile.txt 与 myfile.txt 不同。

要进入不同的目录:

cd DirectoryName

示例:cd Documents 进入 Documents 目录(假设它存在于当前位置)。

特殊的 cd 命令:

  • cd ..:向上移动一级到父目录。
  • cd ~ 或仅 cd:回到你的主目录。
  • cd /:进入文件系统的根目录。
  • cd -:回到你之前所在的目录。

要打印当前工作目录的完整路径:

pwd

要创建一个新目录:

mkdir NewDirectoryName

示例:mkdir MyProject

你可以同时创建多个目录:mkdir Dir1 Dir2 Dir3

创建嵌套目录(父目录必须存在或使用 -p):mkdir -p ParentDir/ChildDir

要移除一个空目录:

rmdir EmptyDirectoryName

如果目录不为空,rmdir 将失败。

要移除(删除)一个文件:

rm filename.txt

要移除一个目录及其所有内容(请极端谨慎使用!):

rm -r DirectoryName

rm 的常用选项:

  • -r 或 -R:递归的,移除目录时必须使用。
  • -f:强制,尝试不提示就移除(危险!)。
  • -i:交互式的,在每次移除前提示确认。
  • -v:详细模式,显示正在执行的操作。

注意:使用 rm 移除的文件通常无法恢复。标准 Shell 中没有回收站。在按 Enter 键之前务必仔细检查命令,尤其是在使用 -r 或通配符时。

要复制一个文件:

cp source_file destination_file

示例:cp report.txt report_backup.txt(在同一目录下创建一个副本)

要将文件复制到另一个目录中:

cp source_file destination_directory/

示例:cp image.jpg Pictures/

要复制一个目录及其内容:

cp -r source_directory destination_directory/

示例:cp -r MyProject Backups/

要移动一个文件或目录:

mv source destination_directory/

示例:mv draft.txt Documents/

要重命名一个文件或目录:

mv old_name new_name

示例:mv temp_file.txt final_report.txt

将文件的全部内容显示到屏幕上。最适合短文件。

cat filename.txt

一次显示一屏幕的文件内容。允许向上和向下滚动(使用方向键、Page Up/Down)和搜索(输入 / 后跟搜索词)。按 q 键退出。

less long_file.log

显示文件的开头 (head) 或结尾 (tail)。对于快速检查日志文件很有用。

head filename.txt # 默认显示前 10 行
# 默认显示前 10 行
tail filename.txt # 默认显示后 10 行
# 默认显示后 10 行
tail -n 20 filename.txt # 显示后 20 行
# 显示后 20 行
tail -f filename.log # 跟踪文件,显示新增的行(按 Ctrl+C 停止)
# 跟踪文件,显示新增的行(按 Ctrl+C 停止)

当你使用 ls -l 时,第一列显示文件权限,例如 -rw-r--r-- 或 drwxr-xr-x。

  • 第一个字符:- 代表普通文件,d 代表目录。
  • 接下来的 3 个字符:文件所有者(用户)的权限。
  • 再接下来的 3 个字符:文件所属组(组)的权限。
  • 最后 3 个字符:其他所有人的权限。

权限类型:

  • r:读取权限(查看文件内容,列出目录内容)。
  • w:写入权限(修改文件,在目录中创建/删除文件)。
  • x:执行权限(将文件作为程序运行,使用 cd 进入目录)。
  • -:权限被拒绝。

chmod 命令用于更改权限(例如,chmod +x script.sh 使脚本可执行)。

要了解特定命令的更多信息,请使用手册 (man) 命令:

man command_name

示例:man ls 显示 ls 命令的手册页。使用方向键滚动,按 q 键退出。

许多管理任务(如安装软件、编辑系统文件、管理服务)需要 root 权限。为了避免直接以 root 身份登录(通常不推荐),请使用 sudo 命令以 root 权限运行单个命令。

sudo command_to_run_as_root

示例:sudo apt update(更新软件包列表)。

在一次会话中首次使用 sudo 时,通常会提示你输入用户的密码(默认是 pi 用户的密码)。

  • Tab 补全: 开始输入命令或文件名,然后按 Tab 键。Shell 将尝试自动补全。如果存在多个可能性,按两次 Tab 键通常会显示选项。
  • 历史记录: 按向上箭头键可以调出之前的命令。使用向下箭头键在历史记录中向前移动。
  • Ctrl + R: 在命令历史中进行反向搜索。开始输入命令的一部分,它会显示最近的匹配项。
  • Ctrl + C: 停止(中断)当前正在运行的命令。
  • Ctrl + L: 清空终端屏幕。
  • Ctrl + A: 将光标移动到行首。
  • Ctrl + E: 将光标移动到行尾。

将命令的输出发送到文件而不是屏幕。

ls -l > file_list.txt # 用输出覆盖 file_list.txt
# 用输出覆盖 file_list.txt
ls -l >> file_list.txt # 将输出追加到 file_list.txt 末尾
# 将输出追加到 file_list.txt 末尾

将一个命令的输出作为另一个命令的输入。

ls -l | less # 分页查看长列表
# 分页查看长列表
dpkg -l | grep python # 列出已安装软件包并过滤包含 'python' 的行
# 列出已安装软件包并过滤包含 'python' 的行

安全地关闭你的 Raspberry Pi:

sudo shutdown -h now

或者,通常更简单:

sudo poweroff

重启你的 Raspberry Pi:

sudo reboot

在断开电源之前,务必进行正常关机,以避免损坏 MicroSD 卡。