Raspberry Pi 简明教程

Raspberry Pi - Linux Shell

外壳程序,在树莓派中称为 Bash,是向您的 Pi 板发出指令的基于文本的方式。在本章节中,让我们了解树莓派的 Linux 外壳程序。首先,我们将了解如何打开外壳窗口。

Open Shell Window

您可以使用以下两种方式之一打开外壳窗口 −

  1. 屏幕顶部有一个带有 >_ 提示符的终端图标。单击它,您将获得一个外壳窗口。

  2. 另一种方法是使用应用程序菜单的附件部分。您可以在那里找到终端。

上述两种方法都将在桌面上打开一个外壳窗口。

Understanding the Prompt

提示如下所示 −

pi@raspberrypi ~ $

它的信息量非常大。让我们看看其不同的比特 −

pi

它代表登录该用户的名字。

raspberrypi

它代表计算机的主机名,即其他计算机用来识别它以连接该计算机的名称。

The tilde symbol (~)

波浪符号会告诉用户他们正在查看哪个目录。这种水平波浪线的出现称为主目录,而这种符号显示出我们正在该目录中工作。

The dollar sign ($)

它代表已存在普通用户而非全能超级用户。 # 符号表示超级用户。

List Files and Directories

当你启动外壳窗口时,你便开始在你自己的主目录中。

要查看你的主目录中的文件夹和文件,你需要发布命令,如下所示−

pi@raspberrypi ~ $ ls

Output

输出如下 −

Desktop Downloads Pictures python_games Videos
Documents Music Public Templates

你可以看到发布了 ls command 后的文件和文件夹。

众所周知,Linux 区分大小写,因此命令 LS、Ls、ls 和 lS 是截然不同的。

Change the directory

你可以看到上述输出,它全是蓝色的,这意味着它们都是目录。我们可以进入这些目录并检查它们中包含哪些文件。更改目录的命令为 cd 。你需要使用 cd 命令以及你想要查看的目录的名称。

以下是用于更改树莓派中的目录的示例−

pi@raspberrypi ~ $ cd Pictures

Find information about files

用于找到特定文件的相关信息的命令为 file 。你需要在该命令后放上该文件的文件名,以检查相关文件的信息。

查看以下示例,了解如何找到树莓派中文件的相关信息−

pi@raspberrypi ~ /Pictures $ file leekha.png aarav.png
leekha.png: PNG image data, 50 x 85, 8-bit/color RGBA, noninterlaced
aarav.png: PNG image data, 100 x 150, 8-bit/color RGBA, noninterlaced

我们还可以对目录使用 file 命令。它将为我们提供一些有关目录的信息 −

pi@raspberrypi ~ $ file Pictures Desktop
Pictures: directory
Desktop: directory

Parent Directory

之前我们已经使用 cd 命令更改至当前工作目录内的目录。但有时我们需要进入父目录,即进入位于当前工作目录之上的目录。

此命令为 cd..(cd 加两个点),如下所示 −

pi@raspberrypi ~ /Pictures $ cd..
pi@raspberrypi ~ $

波浪号表示你的主目录。

Directory Tree

下面的图表显示了你的树莓派电脑上的部分目录树 −

directory tree

目录及其用法如下 −

bin

二进制文件(即 Bin)包含一些小型的程序,其行为与 shell 中的命令类似。例如,lsmkdir

boot

这个目录包含操作系统的心脏,即 Linux 内核。它还包含技术设置文件,其中包含树莓派电脑的技术设置。

dev

这个目录包含设备列表。例如,磁盘和网络连接等设备。

etc

这个目录用于各种配置文件。这些配置文件适用于计算机上的所有用户。

home

这是用户默认存储或写入文件的位置。

lib

这个目录包含各种库,这些库由不同的操作系统程序使用。

lost+found

如果文件系统损坏并部分恢复,将使用此目录。

media

您连接了一个可移动存储设备(例如 USB 密钥),系统会自动识别它。所有详细信息均存储在媒体目录中。

mnt

mnt 代表挂载,它将存储我们自己挂载的可移动存储设备的所有详细信息。

root

它保留供 root 用户使用,没有权限以普通用户身份更改此目录。

Relative and Absolute Paths

Shell 允许 Raspberry Pi 用户通过指定路径直接进入该位置。

我们有以下两种类型的路径−

Relative path

这有点像告知用户当前所在位置的目录中的方向情况。

Absolute path

另一方面,绝对路径则类似于街道地址。此路径在用户所在位置都是完全相同的。这些路径是从根目录测量的。因此,以斜杠 (/) 开头。

例如,我们知道 pi 目录的绝对路径为 /home/pi。

现在,使用以下命令直接进入此目录−

cd /home/pi

如果要进入根目录,可以使用以下命令−

cd /

Advanced Listing Commands

我们可以使用以下列出命令 (ls) 查看当前工作目录外任何目录的内容−

pi@raspberrypi ~ $ ls /boot

有几个高级选项可与 ls 命令一起使用。

这些选项在以下表格中列出−

Option

Description

-1

此选项为 1 而不是 l,其按单列而非按行输出结果。

-a

带有此选项的 ls 命令将显示所有文件。所有文件也将包括隐藏文件。

-F

此选项会在文件名旁边添加一个符号。它将执行此操作以指示文件类型。如果您使用此选项,您将在目录名称后看到 /,在可执行文件后看到 *。

-h

此选项的简称是人类可读。它使用千字节、兆字节和千兆字节表示文件大小。

-l

此选项将以长格式显示结果。它显示有关文件权限、其上次修改日期及其大小的信息。

-m

此选项将以用逗号分隔的列表形式列出结果。

-R

此选项是递归选项。它还将在当前工作目录中列出文件和目录,打开子目录(如果有),并在其子目录中列出结果。

-r

该选项具有反向操作,它将按反向顺序显示结果。

-S

此选项将按结果大小对结果进行排序。

-t

此选项将按上次修改日期和时间对结果进行排序。

-X

此选项将按文件扩展名对结果进行排序。

此外,我们还将了解与 Raspberry Pi 中的 Linux Shell 相关的其他重要方面。

Long Listing Format

长格式是 ls 命令最有用的格式之一,因为它为我们提供了有关文件的其他信息。

您可以使用如下所述带有长列表选项的 ls 命令 −

pi@raspberrypi ~ $ ls -l
total 65
-rw-r--r-- 1 pi pi 256 Feb 18 22:45 Leekha.txt
drwxr-xr-x 2 pi pi 4096 Jan 25 17:45 Desktop
drwxr-xr-x 5 pi pi 4096 Jan 25 17:50 Documents
drwxr-xr-x 2 pi pi 4096 Jan 25 17:52 Downloads
drwxr-xr-x 2 pi pi 4096 Jan 25 17:53 Music
drwxr-xr-x 2 pi pi 4096 Jan 25 17:45 Pictures
drwxr-xr-x 2 pi pi 4096 Jan 25 17:45 Public
drwxr-xr-x 2 pi pi 4096 Jan 25 17:54 Templates
drwxr-xr-x 2 pi pi 4096 Jan 25 17:54 Videos

从以上输出很容易理解,每行都与一个文件或目录相关,其名称在右侧,其上次修改的日期和时间紧随其后。

数字 256、4096 表示文件的大小。您可以看到,有些文件和目录具有相同的大小。

此输出的其余部分显示了权限,即谁有权使用该文件,以及用户有权对该文件或目录做什么。

Permissions

对文件授予的权限分为以下三类 −

Owner

该人创建文件。该权限包括文件所有者可以执行的操作。

Group

属于有权使用文件的组的人员。该权限包括组所有者可以执行的操作。

World

这些称为世界权限,即每个人都可以对该文件或目录进行的操作。

在 Raspberry Pi 中,我们有两种主要的文件类型。一种是具有 hyphen (-) 的常规文件,另一种是具有 d 的目录。

Types of Permissions

现在让我们了解所有者、组和世界分别拥有的不同类型的权限−

  1. Read permission − 此权限允许用户打开和查看文件的内容或列出目录。

  2. Write permission − 此权限允许用户更改文件的内容。它允许用户创建或删除目录中的文件。

  3. Execute permission − 此权限允许用户将文件视为一个程序并运行它。它还授予使用 cd 命令进入目录的权限。

Less Command

ls 命令会带来淹没性的信息,有时您甚至无法注意到,因为它比我们理解或看到得更快。为避免或解决此问题,我们可以使用一个名为 less 的命令。

此命令将采用我们的列表并允许我们逐页浏览它,即一次显示一个屏幕。要使用此命令,我们需要在列表(ls)命令后面使用 |(管道字符)。

以下给出了 Raspberry Pi 中 less 命令的示例−

ls -RXF | less

less 命令也可用于查看文本文件的内容。

为此,我们需要提供文件名作为参数,如下所示−

less /boot/config.txt

Speed up the use of Shell

这里我们将学习一些技巧以加快 shell 的使用−

  1. 如果您想重新键入命令,则可以不必重新键入它,因为 shell keeps the record of history 了您先前输入的命令。

  2. 如果您想重新使用上一个命令,您只需使用 two exclamation marks 并按 Enter。

  3. 您还可以通过轻按 up arrow 按顺序恢复前一个命令。

  4. 类似地,您还可以通过轻按 down arrow 进入另一个方向的命令历史记录。

  5. shell 还可以猜测用户想输入什么,并自动为我们完成。

Create File with Redirection

重定向文件意味着您可以将命令的结果发送到文件,而不是将结果发送到屏幕。为此,我们需要使用 >(大于)符号以及我们希望向其发送输出的文件名。

以下给出了在 Raspberry Pi 中通过重定向创建文件示例−

ls > ~/gaurav.txt

也有其他命令,在这些命令的帮助下,我们可以在线显示内容。这些命令的解释如下:

echo command

echo 命令顾名思义,会在屏幕上显示我们在此命令后面写下的任何内容。此命令最适合解决数学问题。你需要将表达式放在两对括号之间,并在前面加上美元符号。

echo 命令的示例如下所示:

echo $((5*5))

date command

date 命令顾名思义,将在屏幕上显示当前日期和时间。

cal command

cal 命令(cal 代表计算器)将显示当前月份的日历,并高亮显示今天。借助选项 -y ,你可以看到全年的日历。

Create and Remove Directories

在这里,我们将了解如何在树莓派中创建和删除目录。让我们从了解如何创建目录开始。

Create Directories

在你的主目录下创建目录的命令是 mkdir

在下例中,我们将创建一个名为 AI_Python 的目录:

mkdir AI_Python

你还可以使用一个命令创建多个目录,如下所示:

pi@raspberrypi ~ $ mkdir AI_Python Machine_Learning Tutorialspoint
pi@raspberrypi ~ $ ls
Downloads AI_Python Machine_Learning Tutorialspoint Desktop Pictures Documents Public

Remove directories

如果你想删除空目录,可以使用命令 rmdir ,如下所示:

pi@raspberrypi ~ $ rmdir AI_Python

另一方面,如果你想删除非空目录,你需要使用命令 rm -R ,如下所示:

pi@raspberrypi ~ $ rm -R Machine_Learning

Delete Files

我们可以使用 rm 命令来删除文件。

删除文件的语法如下所示:

rm options filename

在下面给出的示例中,我们将删除一个名为 leekha.txt 的文本文件:

pi@raspberrypi ~ $ rm leekha.txt

与 mkdir 类似,rm 命令不会告诉我们它正在做什么。

为了了解它的功能,我们需要使用冗长 (-v) 选项,如下所示:

pi@raspberrypi ~ $ rm -v leekha.txt
removed 'leekha.txt'

我们还可以一次删除多个文件,如下所示:

pi@raspberrypi ~ $ rm -v leekha.txt gaurav.txt aarav.txt
removed 'leekha.txt'
removed 'gaurav.txt'
removed 'aarav.txt'

Raspberry Pi Wildcards

一个目录包含许多具有类似文件名的文件,如果你想删除一群此类文件,则不必通过键入每个文件名来重复该命令。在 shell 中,通配符会为我们完成这项工作。

下表为我们提供了对通配符的快速参考,我们可以在树莓派中使用通配符:

Wildcard

Meaning

Example

Description

?

这意味着任何单个字符。

pic?.jpg

这个例子表示文件以 pic 开头,并且在扩展开始之前刚好有一个字符。

*

这意味着任意多个字符。

pic

这个例子表示任何在文件名中包含单词 pic 的文件。

[…]

这个通配符将匹配括号中的任何一个字符。

[gla]*

这个例子表示所有以字母 g、l 或 a 开头的文件。

[^…]

这个通配符将匹配不在括号内的任何单个字符。

[^gla]*

这个例子表示任何不以字母 g、l 或 a 开头的文件。

[a-z]

这个通配符将匹配指定范围内的任何单个字符。

[x-z]*.png

这个例子表示任何以字母 x、y 或 z 开头且以 .png 扩展结尾的文件。

[0-9]

这个通配符将匹配指定范围内的任何单个字符。

Pic[1-5]*.png

这个例子表示它将匹配 pic1.png、pic2.png、pic3.png、pic4.png 和 pic5.png。

下面给出的示例将删除所有以字母 lee 开头的文件,

rm –vi lee*

Copy Files

复制文件是我们想要做的一些基本事情之一。

此命令是 cp,可以用作以下内容:

cp [options] copy_from copy_to

在此处,我们需要将 copy_from 替换为你想要复制的文件,将 copy_to 替换为你想要将其复制到的位置。

Example

让我们看一个使用该命令来复制相应文件。

假设,如果你想将文件 leekha.txt 从 /desktop 目录复制到 home 目录,你可以使用以下 cp 命令:

cp /Desktop/leekha.txt ~

我们也可以指定一个现有文件夹的路径来将文件发送到,如下所示:

cp /Desktop/leekha.txt ~/doc/

Move Files

与其制作文件的副本,如果你想将它从一个地方移动到另一个地方,那么你可以使用以下 mv 命令:

mv ~/Desktop/leekha.txt ~/Documents

上述命令将把名为 leekha.txt 的文件从 Desktop 目录移动到 Documents 目录。这两个目录都在 home 目录中。

Reboot Raspberry Pi

借助以下命令,我们可以重启树莓派而无需断开电源并重新连接电源 −

sudo reboot

Shutdown Raspberry Pi

借助以下命令,我们可以安全地关闭树莓派 −

sudo halt