树莓派 - Linux Shell
Shell(在树莓派中称为 Bash)是向树莓派发出指令的文本方式。本章,我们将学习树莓派中的 Linux shell。首先,我们将了解如何打开 shell 窗口。
打开 Shell 窗口
您可以通过以下两种方式之一打开 shell 窗口:
屏幕顶部有一个终端图标,带有 >_ 提示符。单击它,您将获得一个 shell 窗口。
另一种方法是使用应用程序菜单的“附件”部分。您可以在那里找到“终端”。
以上两种方法都将在桌面上打开一个 shell 窗口。
理解提示符
提示符如下所示:
pi@raspberrypi ~ $
它包含大量信息。让我们看看各个部分:
pi
它表示登录用户的用户名。
raspberrypi
它表示机器的主机名,即其他计算机在连接到它时用于识别的名称。
波浪号 (~)
波浪号告诉用户他们正在查看哪个目录。这个水平的波浪线表示主目录,这个符号的存在表明我们正在该目录中工作。
美元符号 ($)
它表示普通用户,而不是全能的超级用户。# 符号表示超级用户。
列出文件和目录
当您启动 shell 窗口时,您将从主目录开始。
要查看主目录中的文件夹和文件,您需要发出以下命令:
pi@raspberrypi ~ $ ls
输出
输出如下:
Desktop Downloads Pictures python_games Videos Documents Music Public Templates
发出 **ls 命令** 后,您可以看到文件和文件夹。
众所周知,Linux 区分大小写,因此命令 LS、Ls、ls 和 lS 都是不同的。
更改目录
您可以看到上面的输出,它们都是蓝色的,这意味着它们都是目录。我们可以进入这些目录并检查它们包含哪些文件。更改目录的命令是 **cd**。您需要将 cd 命令与要查看的目录的名称一起使用。
树莓派中更改目录的示例如下:
pi@raspberrypi ~ $ cd Pictures
查找有关文件的信息
查找有关特定文件信息的命令是 **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
父目录
前面,我们使用 cd 命令更改为当前工作目录内的目录。但是有时,我们需要转到父目录,即当前工作目录上方的目录。
此命令为 cd..(cd 加两个点),如下所示:
pi@raspberrypi ~ /Pictures $ cd.. pi@raspberrypi ~ $
波浪号表示您的主目录。
目录树
下图显示了树莓派计算机上目录树的一部分:
目录及其用途如下:
bin
Bin(二进制文件的缩写)包含一些小的程序,它们在 shell 中的行为类似于命令。例如,ls 和 mkdir。
boot
此目录包含操作系统的核心,即 Linux 内核。它还包含包含树莓派计算机技术设置的配置文件。
dev
此目录包含设备列表。例如,磁盘和网络连接等设备。
etc
此目录用于各种配置文件。这些配置文件适用于计算机上的所有用户。
home
这是用户可以默认存储或写入文件的目录。
lib
该目录包含不同操作系统程序使用的各种库。
lost+found
如果文件系统损坏并部分恢复,则使用此目录。
media
您连接可移动存储设备(例如 USB 密钥),它会自动被识别。所有详细信息都将存储在 media 目录中。
mnt
mnt 代表挂载,将存储我们自己挂载的可移动存储设备的所有详细信息。
root
它保留供 root 用户使用,作为普通用户,我们无权更改此目录。
相对路径和绝对路径
shell 使树莓派用户能够通过指定路径直接到达该位置。
我们有以下两种类型的路径:
相对路径
这有点像从用户现在所在位置向目录提供方向。
绝对路径
另一方面,绝对路径就像街道地址。无论用户在哪里,此路径都完全相同。这些路径是从根目录测量的。因此,它们以斜杠 (/) 开头。
例如,我们知道 pi 目录的绝对路径是 /home/pi。
现在,使用以下命令直接转到此目录:
cd /home/pi
如果要转到根目录,可以使用以下命令:
cd /
高级列出命令
我们可以使用列出命令 (ls) 查看当前工作目录之外的任何目录内部,如下所示:
pi@raspberrypi ~ $ ls /boot
有几个高级选项,我们可以与 ls 命令一起使用。
这些选项在以下表格中给出:
选项 | 说明 |
---|---|
-1 | 此选项为 1 而不是 l,它以单列而不是以行为单位输出结果。 |
-a | 使用此选项的 ls 命令将显示所有文件。所有文件还包括隐藏文件。 |
-F | 此选项将在文件名旁边添加一个符号。它将这样做以指示文件类型。如果您使用此选项,您会在目录名称后面看到一个 /,在可执行文件后面看到一个 *。 |
-h | 此选项是 human-readable 的缩写。它使用千字节、兆字节和千兆字节来表示文件大小。 |
-l | 此选项将以长格式显示结果。它显示有关文件权限、上次修改日期、大小的信息。 |
-m | 此选项将结果列为以逗号分隔的列表。 |
-R | 此选项是递归选项。它还将列出当前工作目录中的文件和目录,打开子目录(如果有)并列出它们的结果。 |
-r | 这是反向选项,将以反向顺序显示结果。 |
-S | 此选项将按大小排序结果。 |
-t | 此选项将根据上次修改的日期和时间排序结果。 |
-X | 此选项将根据文件扩展名排序结果。 |
此外,我们将学习与树莓派中的 Linux Shell 相关的其他重要方面。
长列表格式
长格式是 **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 表示文件的大小。您可以看到一些文件和目录具有相同的大小。
此输出的其余部分显示权限,即谁被允许使用该文件以及用户被允许对该文件或目录执行的操作。
权限
文件的权限分为以下三类:
所有者
这是创建文件的人。此权限包括文件所有者可以执行的操作。
组
这些是属于有权使用该文件的组的人员。此权限包括组所有者可以执行的操作。
世界
这些被称为世界权限,即每个人都可以对该文件或目录执行的操作。
在树莓派中,我们有两种主要类型的文件。一种是具有 **连字符 (-)** 的普通文件,另一种是具有 **d** 的目录。
权限类型
现在让我们了解所有者、组和世界分别拥有的不同类型的权限:
**读取权限** - 此权限允许用户打开并查看文件内容或列出目录。
**写入权限** - 此权限允许用户更改文件内容。它允许用户在目录中创建或删除文件。
**执行权限** - 此权限允许用户将文件视为程序并运行它。它还允许使用 **cd** 命令进入目录。
less 命令
ls 命令会淹没信息,有时您甚至无法注意到它,因为它比我们理解或看到的速度更快地掠过我们的眼睛。为了避免这种情况或解决这个问题,我们可以使用一个名为 **less** 的命令。
此命令将获取我们的列表并使我们能够一次一屏地浏览它。要使用此命令,我们需要在列表 (ls) 命令后使用 |(管道字符)。
树莓派中 less 命令的示例如下:
ls -RXF | less
less 命令也可以用于查看文本文件的内容。
为此,我们需要提供文件名作为参数,如下所示:
less /boot/config.txt
加快 Shell 的使用速度
在这里,我们将学习一些加快 shell 使用速度的技巧:
如果您想重写命令,则可以避免重写,因为 shell **保留历史记录**,即您之前输入的命令。
如果您想重用最后一个命令,只需使用 **两个感叹号** 并按 Enter 键即可。
您也可以通过点击向上箭头按顺序调出之前的命令。
类似地,您也可以通过点击向下箭头反向浏览命令历史记录。
Shell还会猜测用户想要输入的内容,并自动完成。
使用重定向创建文件
文件重定向意味着您可以将命令的结果发送到文件,而不是发送到屏幕。为此,我们需要使用>(大于)符号以及要将输出发送到的文件名。
下面是使用重定向在树莓派中创建文件的示例:
ls > ~/gaurav.txt
还有其他命令,我们可以用它们来在线显示内容。这些命令解释如下:
echo 命令
echo 命令顾名思义,会在屏幕上显示我们在它后面写入的任何内容。此命令最好的用途是解决数学问题。您需要将表达式放在两对括号之间,并在前面加上美元符号。
下面是 echo 命令的示例:
echo $((5*5))
date 命令
date 命令顾名思义,会在屏幕上显示当前日期和时间。
cal 命令
cal 命令(cal 代表计算器)将显示当前月份的日历,并突出显示今天。借助-y选项,您可以查看全年的日历。
创建和删除目录
在这里,我们将了解如何在树莓派中创建和删除目录。让我们从学习创建目录开始。
创建目录
在您的主目录下创建目录的命令是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
删除目录
如果要删除空目录,可以使用rmdir命令,如下所示:
pi@raspberrypi ~ $ rmdir AI_Python
另一方面,如果要删除非空目录,则需要使用rm -R命令,如下所示:
pi@raspberrypi ~ $ rm -R Machine_Learning
删除文件
我们可以使用 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'
树莓派通配符
一个目录包含许多具有相似文件名的文件,如果您想删除一组这样的文件,则无需通过输入每个文件名来重复该命令。在 shell 中,通配符将为我们完成这项工作。
下表提供了我们可以用于树莓派的通配符的快速参考:
通配符 | 含义 | 示例 | 说明 |
---|---|---|---|
? | 表示任何单个字符。 | 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*
复制文件
复制文件是我们想要执行的基本操作之一。
此命令为 cp,其用法如下:
cp [options] copy_from copy_to
在这里,我们需要将copy_from替换为您要复制的文件,将copy_to替换为您要复制到的位置。
示例
让我们来看一个使用该命令复制相应文件的示例。
假设您想将leekha.txt文件从/desktop目录复制到home目录,您可以使用cp命令,如下所示:
cp /Desktop/leekha.txt ~
我们还可以指定现有文件夹的路径来发送文件,如下所示:
cp /Desktop/leekha.txt ~/doc/
移动文件
如果您想将文件从一个位置移动到另一个位置,而不是创建文件的副本,则可以使用 mv 命令,如下所示:
mv ~/Desktop/leekha.txt ~/Documents
以上命令将名为leekha.txt的文件从桌面目录移动到文档目录。这两个目录都在主目录中。
重启树莓派
借助以下命令,我们可以重新启动树莓派,而无需断开和重新连接电源:
sudo reboot
关机树莓派
借助以下命令,我们可以安全地关闭树莓派:
sudo halt