Linux 树莓派系统实践指南(二)
原文:Practical Linux with Raspberry Pi OS
协议:CC BY-NC-SA 4.0
七、I/O 重定向和 Cron
在最后一章中,我们开始学习 Unix 类操作系统的 shell 脚本。我们现在对 shell 脚本已经很熟悉了。
继续这一势头,我们将在类 Unix 操作系统的 shell 中学习一些有用的特性。以下是我们将在本章学习的主题列表:
-
输入输出重定向
-
例行性工作排程
在这一章之后,我们将会很容易地在 shell 中使用上述高级特性。这是很短的一章。
输入输出重定向
在类 Unix 操作系统中,标准流是互连的输入和输出通道。三个标准互连通道是标准输入(stdin)、标准输出(stdout)和标准误差(stderr)。它们分别附加到文件句柄(或文件描述符)0、1 和 2。几乎所有的编程和脚本环境都有处理这些流的条款。让我们一个一个来看。
标准输入设备
这是标准输入。在大多数情况下,它是来自键盘的输入。让我们看一个例子。在当前位置创建一个名为 New.txt 的文件,并向该文件添加一些字符。我们知道可以用命令cat显示文件的内容,如下所示:
cat New.txt
我们可以使用 stdin 向cat命令提供数据,如下所示:
cat < New.txt
它将向我们显示命令中提到的文件内容。我们知道 Unix 将 0 与 stdin 相关联。因此,前面的命令也可以写成:
cat 0< New.txt
标准输出
标准输出通常是可视显示控制台(也可以是远程终端)。它由文件句柄 1 表示。假设我想把它重定向到一个文件。那么我可以写一个如下的命令:
ls -l 1> output.log
当我们执行前面的命令时,它不会在终端中显示输出。它会将输出重定向到命令中提到的文件。我们可以使用 cat 命令查看该文件的内容,如下所示:
cat output.log
我们也可以省略 1,将命令ls -l 1> output.log写成如下形式:
ls -l > output.log
如果文件已经存在,重定向操作符>会覆盖命令中提到的文件中以前的数据。我们可以使用>>重定向操作符添加到现有数据中,如下所示:
ls -l 1>> output.log
ls -l >> output.log
这两个命令执行相同的功能。
标准错误
我们可以重定向标准误差。它由文件句柄2表示。我们可以如下使用它:
ls -l 2>error.txt
它会将命令中的错误(如果有)重定向到命令中提到的文件。我们还可以重定向它并覆盖错误日志,如下所示:
ls -l 2>>error.txt
我们可以将输出和错误重定向到同一个文件,如下所示:
ls -l 1>output.txt 2>&1
我们也可以这样写:
ls -l >output.txt 2>&1
拒绝重定向到它的所有信息的设备文件是空设备。在类 Unix 操作系统中,是/dev/null。它也被称为 Unix 黑洞(非正式地)。我们通常将错误重定向到这个文件。它的用法如下:
ls -l 2>/dev/null
例行性工作排程
Cron 是类 Unix 操作系统中基于时间的调度程序。我们可以在固定的时间间隔运行程序或脚本。我们必须使用名为 crontab 的文件来设置 cron 作业。我们需要为要运行的预定作业创建条目。格式如下:
(分钟)(小时)(月中某日)(月中某日)<要运行的程序或脚本>
-
分钟可以有从 0 到 59 的值。
-
小时可以有从 0 到 23 的值。
-
一个月中的某一天可以有 1 到 31 之间的值。
-
月可以有从 1 到 12 的值。
-
星期几可以有从 0 到 6 的值。
让我们看几个例子。以下条目在每天午夜运行指定的脚本:
0 0 * * * /home/pi/backup.sh
我们可以在每次重启时运行脚本或程序,如下所示:
@reboot /home/pi/test2.sh
我们可以每五分钟运行一个程序,如下所示:
*/1 * * * * /home/pi/test3.sh
我们可以使用以下命令来查看 crontab 中的当前条目:
crontab -l
我们可以使用以下命令来编辑 crontab 中的条目:
crontab -e
当你第一次运行它时,它会要求你选择编辑器。选择纳米编辑器。
让我们看一个简单的 shell 脚本和 crontab 用法的例子。让我们创建一个小 shell 脚本,如清单 7-1 所示。
#!/bin/bash
logfile=reboot_hist.log
echo "System rebooted at : " >> $logfile
date >> $logfile
Listing 7-1reboot_hist.sh
使用以下命令更改其权限:
chmod 755 reboot_hist.sh
最后,将以下条目添加到 crontab 中:
@reboot /home/pi/reboot_hist.sh
然后,当我们重新启动时,它会将重新启动时间写入指定的日志文件。我重启了几次,然后检查了日志文件。内容如下:
pi@raspberrypi:~ $ cat reboot_hist.log
System rebooted at :
Thu Sep 10 20:04:42 IST 2020
System rebooted at :
Thu Sep 10 20:07:01 IST 2020
摘要
在这个简短的章节中,我们学习了 shell 的两个高级特性:I/O 重定向和 crontab 的使用。我们还看到了 crontab 条目的一个小例子。这两个特性在编写 shell 脚本时都非常有用。
通过这一章,我们结束了我们的 shell 脚本之旅。在下一章,我们将学习如何在 Linux 上用 C、C++和 Python 3 这样的高级编程语言编程。
八、高级编程语言介绍
在上一章中,我们总结了 Linux shell 脚本。在这一章中,我们将学习如何用高级编程语言编写程序,比如 C、C++和 Python 3,以及 RPi OS。以下是我们将在本章中详细学习的主题列表:
-
C 和 C++编程
-
Python 编程语言
-
Debian 衍生工具上的 Python 3
学完这一章后,我们将能熟练地在 Linux 平台上使用现代编程语言编写程序。
C 和 C++编程
C 和 C++是非常通用的编程语言。截至目前,几乎所有的操作系统(具体来说就是 OS 内核和设备驱动)都是用 C 编程语言编写的。我从 2003 年开始在 Linux 平台上写 C 和 C++程序。我主要使用 GCC (GNU 编译器集合)来编译使用任何 Linux 发行版的 C 程序。另外,我在 Linux 上使用 C++的 g++编译器。因此,在这一节中,我将简要介绍使用 GCC 和 g++编译器进行编译的过程。我们还将看到如何执行编译后的字节码。
这两个编译器都预装在 RPi 操作系统上。如果您想确认,只需运行以下命令:
sudo apt-get install build-essential
它将返回包含以下字符串的消息:
build-essential is already the newest version (12.6).
意味着已经安装了 GCC 和 g++。
我们可以使用以下命令来验证版本:
gcc -v
g++ -v
我们可以使用任何文本编辑器创建并保存一个名为prog00.c的 C 程序,如下所示:
#include<stdio.h>
int main( void )
{
printf("Hello, World\n");
return 0;
}
使用以下命令编译它:
gcc prog00.c -o prog00
这里,-o后面的字符串是我们程序的可执行文件的名称。如果我们不使用-o后跟文件名,默认情况下它会创建a.out可执行文件。使用以下命令运行可执行文件:
./prog00
它将输出如下:
Hello, World
我们也可以写一个 C++程序,prog01.cpp,如下所示:
#include<iostream>
using namespace std;
int main(void)
{
cout<<"Hello, World\n";
return 0;
}
我们可以这样编译它:
g++ prog01.cpp -o prog01
我们可以如下运行它:
./prog01
输出如下所示:
Hello, World
这就是我们如何在 Linux 平台上编译和运行 C 和 C++程序。本节绝不是 GCC 和 g++的全面指南。您可能有兴趣了解更多关于 GCC 的信息。可以在这里访问 GCC 项目主页: gcc. gnu. org/ 。
Python 编程语言
Python 3 是一种高级的解释性编程语言。它是一种通用编程语言。在这一节中,我们将深入讨论 Python 编程语言及其哲学。
Python 编程语言的历史
Python 是 ABC 编程语言的继承者,而 ABC 编程语言本身受到了 ALGOL 68 和 SETL 编程语言的启发。它是由吉多·范·罗苏姆在 20 世纪 80 年代末度假期间作为个人业余项目创建的,当时他正在荷兰的 Centrum wisk unde(CWI)信息中心(英文:“国家数学和计算机科学研究所”)工作。从 Python 编程语言的最初发布到 2018 年 7 月 12 日,Guido 一直是这个项目的首席开发人员和仁慈的生命独裁者(BDFL) 。7 月 12 日之后,他开始了永久休假,现在在 Python 指导委员会工作。以下是 Python 发布时间表中的重要里程碑:
-
1991 年 2 月:van Rossum 向 alt.sources 发布了代码(标记为版本 0.9.0)
-
1994 年 1 月:1.0 版本发布。
-
2000 年 10 月:Python 2.0 发布。
-
2006 年 12 月:Python 3.0 发布。
-
2019 年 12 月:Python 2.x 正式退役,不再受 Python 软件基金会支持。
正如我们在时间线中看到的,Python 2.x 版本不再受支持,Python 3 是最新的。Python 3 不向后兼容 Python 2。Python 3 是 Python 编程语言的最新版本,也是受支持的版本。因此,我们将在整本书中使用 Python 3 来演示数据可视化的程序。除非明确提到,否则在本书中,Python 指的是 Python 3。
Python 增强建议
为了指导 Python 的开发、维护和支持,Python 领导层提出了 Python 增强提案(PEPs)的概念。它们是 Python 项目中建议新特性和修复问题的主要机制。我们可以通过以下网址了解更多关于 pep 的信息:
www . python . org/dev/peps/pep-0001/
Python 编程语言的哲学
Python 的哲学在 PEP20 中有详细介绍。它被称为Python 的禅宗可以在www . Python . org/dev/peps/pep-0020/找到。以下是人教版的要点。有几个很有趣:
-
漂亮总比难看好。
-
显性比隐性好。
-
简单比复杂好。
-
复杂总比复杂好。
-
扁平的比嵌套的好。
-
疏比密好。
-
可读性很重要。
-
特例不足以特殊到打破规则。
-
然而,实用性战胜了纯粹性。
-
错误永远不应该无声无息地过去。
-
第 10 点是如此,除非明确沉默。
-
面对暧昧,拒绝猜测的诱惑。
-
应该有一种——最好只有一种——显而易见的方法来做这件事。
-
然而,这种方式一开始可能并不明显,除非你是荷兰人。
-
现在总比没有好。
-
然而,从来没有比现在“正确”更好。
-
如果实现很难解释,这是一个坏主意。
-
如果实现很容易解释,这可能是一个好主意。
-
名称空间是一个非常棒的想法——让我们多做一些吧!
这些是影响了 Python 编程语言的发展并继续影响的一般哲学指导方针。
Python 的应用
正如我们所见,Python 是一种通用编程语言,它在以下领域有大量应用:
-
Web 开发
-
GUI 开发
-
科学和数值计算
-
软件开发
-
系统管理员
我们可以在 www . Python . org/success-stories/上阅读各种项目的 Python 案例研究。
Debian 衍生工具上的 Python 3
Python 3 预装在 Debian 和所有衍生产品上,如 Ubuntu 或 Raspberry Pi OS。所以我们不必单独安装它。两个主要的 Python 版本,Python 2 和 Python 3,都预装在 Debian 衍生产品中。Python 2 和 Python 3 的可执行文件分别被命名为 python 和 python3 。我们必须使用可执行文件 python3 进行演示。要了解所需二进制可执行文件的版本和位置,请逐一运行以下命令:
python3 -V
which python3
Python 模式
Python 有各种模式。让我们逐一讨论。在开始讨论之前,我们先来看看什么是空闲。IDLE 代表 Integrated Development and Learning Environment,是 Python 软件基金会为 Python 编程开发的 IDE(集成开发环境)。
并非所有的 Linux 发行版都预装了 IDLE。我们可以通过依次运行以下命令将它安装在 Debian 及其衍生产品(包括 Raspberry Pi OS)上:
sudo apt-get update --fix-missing
sudo apt-get install idle3 -y
一旦安装完成,我们可以在菜单中找到空闲(在这种情况下,树莓 Pi OS 菜单)如图 8-1 所示。
图 8-1
在 Raspberry Pi 操作系统菜单中空闲
我们还可以通过运行以下命令在 Linux 上启动 IDLE:
idle
它将启动一个窗口,如图 8-2 所示。
图 8-2
空闲窗口
在我们继续之前,我们需要为我们的眼睛的舒适配置它。我们可以通过点击选项➤配置空闲来改变字体,如图 8-3 所示。
图 8-3
配置空闲
以下窗口打开(如图 8-4 所示),您可以在此更改空闲字符的字体和大小。
图 8-4
空闲配置窗口
现在,让我们讨论 Python 的各种模式。
对话方式
Python 的交互模式是命令行类型的 shell,它执行当前语句并在控制台上给出即时反馈。它在活动内存中运行以前输入的语句。当新的语句被输入解释器并由解释器执行时,输入的代码被求值。当我们打开 IDLE 时,我们会看到一个命令行提示符。无非就是 Python 的交互模式。让我们看一个简单的例子。让我们在交互提示中输入习惯的 Hello World 程序,如下所示:
print('Hello World!')
按 Enter 键将该行输入解释器并执行它。图 8-5 是输出的截图。
图 8-5
空闲时的 Python 交互模式
我们也可以从命令提示符启动 Python 的交互模式。在 Linux 命令提示符下(例如 lxterminal),我们必须运行命令 python3 来启动它。图 8-6 是 RPi OS 命令提示符下交互模式的截图(远程访问)。
图 8-6
Linux 命令提示符下的 Python 交互模式
脚本模式
我们可以写一个 Python 程序,保存在磁盘上。然后我们可以通过多种方式来启动它。这就是所谓的脚本模式。让我们在空闲时演示一下。我们可以使用任何文本编辑器来编写 Python 程序。但是,由于 IDLE 是一个 IDE,所以用 IDLE 编写和运行 Python 程序很方便。让我们先看看那个。在空闲时,点击文件➤新建文件。它将创建一个空白的新文件。向其中添加以下代码:
print('Hello World!')
然后在磁盘上以 prog00.py 的名称保存,如图 8-7 所示。
图 8-7
空闲代码编辑器中的 Python 程序
在菜单中,点击运行➤运行模块。在 IDLE 的提示下执行程序,如图 8-8 所示。
图 8-8
在空闲提示符下执行的 Python 程序
我们甚至可以在操作系统的命令提示符下用 Python 的解释器启动程序。打开操作系统的命令提示符,导航到存储程序的目录。
在 Linux 终端中,我们必须在命令提示符下运行以下命令:
python3 prog00.py
然后解释器将在命令提示符下运行程序,输出(如果有的话)将出现在那里。
在 Linux 中,有另一种方法可以运行程序,而不用显式地使用解释器。我们必须将 shebang 行添加到代码文件的开头。例如,我们的代码文件如下所示:
#!/usr/bin/python3
print('Hello World!')
第一条线被称为 shebang 线。它告诉 shell 使用什么解释器及其位置。然后运行以下命令更改文件权限,使其对所有者可执行,如下所示:
chmod 755 prog00.py
然后我们可以像其他可执行文件一样用直接启动我们的 Python 程序文件。/ 如下:
./prog00.py
shell 将执行程序并在终端中打印输出。请注意,这仅适用于类 Unix 系统,因为它们支持使用 shebang 执行程序。
摘要
在这一章中,我们开始学习 Linux 上的 C 和 C++编程。然后我们探索了 Python 编程语言的基础。我们学习了如何编写基本的 Python 程序,以及如何以各种方式执行它们。我们还学习了 Python 编程语言的各种模式,以及如何从命令提示符启动它。
现在,我们对 RPi OS 上的高级编程语言(以及 Debian 衍生工具)已经非常熟悉了。我们可以用 C、C++和 Python 3 编写和执行程序。您可能想在 Raspberry Pi 操作系统上探索 Java 编程。RPi OS 预装了 Java 和相关的 ide。
在下一章中,我们将继续我们用 Python 3 编程的美妙旅程,并为 GPIO(通用输入/输出)编程编写程序。为此,我们将使用发光二极管、电阻、试验板和其他电子元件。我们还将简要介绍数字电子中的各种总线。
九、使用 RPi GPIO 编程
在上一章中,我们介绍了类 Unix 平台上的高级编程语言。我们学习了用 C 和 C++用 GCC 编译器编写程序。我们还学习了如何用 Python 3 编程语言编写和执行程序。
继续我们在上一章停止的地方,在这一章,我们将探索用 RPi 和 Python 3 进行 GPIO 编程。以下是我们将在本章探讨的主题列表:
-
GPIO 引脚
-
使用 GPIO 编程
在这一章之后,我们将会对 GPIO 编程和使用 Raspberry Pi 的基本电子元件感到很舒服。
通用输入/输出引脚
RPi 板有通用输入/输出接头引脚。所有版本的 RPi 板都有此功能。这个特性使单板计算机有别于其他小型计算机。GPIO 引脚使 SBC 能够直接与低级电子元件和各种数据传输总线接口。
我在本章中使用了一个 8 GB 内存的 RPi 4 B 板。这是 RPi 系列中最新的主板。通过运行以下特定于 RPi 操作系统的命令,我们可以看到任何 RPi 板上引脚的含义:
pinout
它将向我们展示电路板的布局,如图 9-1 所示。
图 9-1
RPi 4 B 的电路板布局
在图的左上部分,我们可以看到 40 个 GPIO 引脚。一些早期型号的 RPi 有 26 个引脚。但是早就停产了,这里就不讨论了。我们将在本章演示的程序与所有的 Pi 模型都是兼容的。图 9-1 是命令行上显示的输出的第一部分。如果我们向下滚动,我们可以看到更多。输出的最后部分向我们展示了如图 9-2 所示的引脚的含义。
图 9-2
RPi 4 B 引脚排列
该输出向我们显示了电源引脚(5V、3V3 和 GND)和数字 IO 引脚。GND 代表地,3V3 代表 3.3 伏。我们可以看到输出中显示了两种编号方案。物理引脚号(也称为板引脚号)在括号内,BCM 名称在外面。为了方便起见,我们将在编写的程序中使用电路板(物理)引脚编号。
我们可以通过比较两个图 9-1 和 9-2 来了解销的方向。这两个图中的销都用颜色标记。
现在,拿一个 LED、一个电阻器和几根跨接电缆,准备如图 9-3 所示的电路。
图 9-3
简单的 LED 电路
只要 RPi 板打开,LED 就会一直亮着。这是因为我们将 LED 的阳极(较长的引脚)连接到 3V3 引脚,阴极通过 470 欧姆的电阻连接到 GND 引脚。这是我们能用它制作的最简单的 LED 电路。你可以试着把 LED 的阳极接到 5V 的管脚上,它会发出更多的光。我们选择了阻值合适的电阻,这样就不会烧坏 LED。在下一节中,我们将看到如何用 GPIO 编写程序。
使用 GPIO 编程
在本节中,我们将看到带有发光二极管和按钮的简单电路。为此,我们将使用 Python 3 GPIO 库。它预装在 RPi 操作系统中。如果没有预先安装,请使用以下命令进行安装:
sudo apt-get install python3-rpi.gpio -y
准备如图 9-4 所示的电路。
图 9-4
可编程 LED 电路
我们将 LED 的阳极连接到图 9-2 中物理编号为 8 的引脚。这是我们对早期赛道的唯一改变。查看列表 9-1 。
from time import sleep
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW)
while True:
GPIO.output(8, GPIO.HIGH)
sleep(1)
GPIO.output(8, GPIO.LOW)
sleep(1)
Listing 9-1LED_Blink.py
让我们详细讨论一下。前两行导入所需的库。然后,我们用语句GPIO.setmode()指示 RPi 板使用板(如前所述,也称为物理)引脚编号。然后我们禁用警告。我们使用函数GPIO.setup()将电路板引脚 8 设置为输出模式。我们也将其初始状态设置为LOW。然后,在一个无限循环中,我们交替发送HIGH和LOW信号到引脚 8。对函数sleep()的调用在语句之间增加了 1 秒的间隔。当 8 脚为HIGH时,LED 亮;当第 8 脚为LOW时,LED 熄灭。使用以下命令运行脚本:
python3 LED_Blink.py
LED 将开始闪烁。要终止程序,请按键盘上的 Ctrl+C。
这是基本的 GPIO 编程。如果我们使用试验板将多个 led 连接到数字 GPIO 引脚,我们可以创造性地利用这一点来创建各种模式的闪烁 led。
摘要
在本章中,我们继续了 Python 3 编程的旅程,并研究了一个使 LED 闪烁的程序。我们还学习了如何用一个 LED 和一个电阻构建一个基本电路。Raspberry Pi 通过它的 GPIO 编程提供了更多的东西。您可以在方便的时候进一步探索这个庞大的主题。
在下一章中,我们将详细研究 RPi 操作系统的 GUI。我们还将详细了解如何为 RPi OS 安装各种桌面环境。
十、探索 RPi 操作系统 GUI
在上一章中,我们详细探讨了 Raspberry Pi GPIO。我们用 Python 编写了程序来演示 RPi 的 GPIO 功能。我们还简要介绍了 RPi 中其他类型的公共汽车。
这一章将把我们的焦点转移回 RPi OS 的软件部分。在本章中,我们将探索 RPi OS 上的各种桌面环境和 GUI 实用程序。以下是本章涵盖的主题列表:
-
RPi 操作系统上的 GUI 实用程序
-
其他桌面环境
在本章之后,我们将会非常熟悉 RPi OS 上的各种 GUI 环境和实用程序。
RPi 操作系统上的 GUI 实用程序
RPi OS 上有许多 GUI 实用程序。它们是按照用途分组的。图 10-1 显示了 RPi OS 菜单。
图 10-1
RPi 菜单
让我们对菜单项有一个概述。在编程部分,可以找到所有用于编程的实用程序。RPi OS 附带了用于 Java (BlueJ 和 Greenfoot)、Python (Thonny、Geany、Mu)、Scratch、Wolfram 和 Mathematica 的 ide。我们前面也看到了如何为 Python 3 安装 IDLE。你可以在这里找到。有一些有趣的工具,如 Node-RED、Sense HAT Emulator 和 Sonic Pi。值得去探索它们。
教育部分有 SmartSim,这是一个学习数字电子的软件。
对于想要使用文字处理器和电子表格等办公应用程序的人来说, Office 部分非常方便。
互联网部分有一个网络浏览器、VNC 和一个电子邮件客户端。
声音&视频部分有 VLC 媒体播放器。图形部分有一个图像浏览器。您可能还想在游戏区玩几个游戏。
接下来的四个部分有各种管理 RPi 的工具和一些有用的程序。我建议你自己去探索它们。点击运行部分,会弹出一个窗口,通过输入程序名称来启动程序。我们已经在第一章中看到了演示。如果你知道这些程序的名字,你可以在这里输入它们的名字。我们也已经看到了最后一个选项注销。
这都是关于修改后的 LXDE 桌面环境。在下一节中,我们将探索 RPi OS 的其他桌面环境。
其他桌面环境
让我们逐一安装其他桌面环境。
XFCE 你好
安装这个很容易。只需按顺序一个接一个地运行以下命令:
sudo apt-get update --fix-missing
sudo apt-get install xfce4 -y
sudo apt-get install slim -y
现在,当我们重新启动时,我们会看到如图 10-2 所示的屏幕。
图 10-2
登录屏幕
我们需要按键盘上的 F1 键来选择桌面环境。按一次 F1,显示会话:默认 x 会话,如图 10-2 所示。这是 RPi 操作系统附带的默认修改 LXDE。我们已经看到了这一点。
当我们再次按 F1 时,下一个选项出现在这里。它显示 Xfce 会话。如果我们再按 F1,我们看到Session:open box;再按一次 F1 后,显示 LXDE 。现在,如果我们再次按 F1,它会让我们回到第一个选项。所以选择 Xfce 会话,键入用户名和密码(我没有更改默认的用户名/密码组合 pi / raspberry )。
登录后,它显示一个漂亮的 XFCE 桌面,如图 10-3 所示。
图 10-3
XFCE 桌上型电脑
可以去探索一下。它非常方便用户。
让我们重新启动,这次选择选项 Session: Openbox 。登录进去,你会发现一个空白的桌面环境。这是因为 Openbox 是 X Window 系统的免费堆栈窗口管理器。我们可以右键单击并查看菜单选项。您可以进一步探索这种风格的桌面。右键单击后,您可以在显示的菜单中看到退出选项。选择该选项以返回登录屏幕。现在选择会话:LXDE 。它也将展示一个非常好的、令人愉快的、视觉上吸引人的桌面环境,如图 10-4 所示。
图 10-4
lxd 台式机
这是未经修改的 LXDE 桌面环境。菜单没有标签,一开始可能很难找到。在左下角,如图 10-4 所示。
KDE 等离子体
KDE 是一个为类 Unix 操作系统开发自由软件的国际社区。KDE 开发的软件之一是 KDE 等离子桌面环境。让我们把它安装在我们的码头上。打开当前桌面环境的终端程序,并运行以下命令:
sudo apt-get update --fix-missing
sudo apt-get dist-upgrade -y
sudo apt-get install kde-full -y
我们可以在 https://wiki.debian.org/KDE 看到其他安装选项。在安装过程中,系统会提示您选择桌面环境。选择苗条的。安装完成后,重新启动系统。我们会发现 KDE 等离子作为登录屏幕中的一个选项(图 10-5 )。
图 10-5
KDE 等离子桌面
KDE 等离子、XFCE 和 LXDE 环境将自带一套实用程序。如果您选择任何桌面环境,您会发现所有实用程序都列在菜单下。请随意探索自己的实用工具。
摘要
在本章中,我们学习了各种重要的实用程序。我们还学习了在 RPi OS 上为 RPi 安装其他桌面环境。实际上,正如前面所建议的,使用所有的桌面环境并自己探索实用程序。
接下来,我们将看到这本书的附录,其中包含了与 Raspberry Pi 操作系统相关的提示和技巧。