欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

树莓派玩转LINUX -Part1 Shell

程序员文章站 2022-03-31 08:33:12
第五章 贝壳里的树莓派树莓派的性能不高,而计算机图形的呈现相当消耗资源。幸好,Linux提供了一种更易与树莓派互动的方式—— Shell5.1 初试Shell打开终端,桌面上就会出现一个黑色背景的窗口,窗口上面写着:pi@raspberrypi:~ $这里的pi是用户名,raspberrypi是计算机的名字,是命名提示符。如果敲击键盘,那么字符会显示在是命名提示符。如果敲击键盘,那么字符会显示在是命名提示符。如果敲击键盘,那么字符会显示在提示符的后面,形成一串文本形式的命令。在英文中,...

第五章 贝壳里的树莓派

树莓派的性能不高,而计算机图形的呈现相当消耗资源。幸好,Linux提供了一种更易与树莓派互动的方式—— Shell

5.1 初试Shell

打开终端,桌面上就会出现一个黑色背景的窗口,窗口上面写着:
pi@raspberrypi:~ $
这里的pi是用户名,raspberrypi是计算机的名字, 是 命 名 提 示 符 。 如 果 敲 击 键 盘 , 那 么 字 符 会 显 示 在 是命名提示符。如果敲击键盘,那么字符会显示在 提示符的后面,形成一串文本形式的命令。在英文中,Shell是贝壳之类的外壳。在Linux中,所谓的shell,就是运行在终端中的文本互动程序。Shell分析文本输入,然后把文本转换成相应的计算机动作。用户透过shell这个“壳”,来触及电脑。
在后面的内容中,将用 来 表 示 L i n u x 系 统 的 S h e l l 命 令 提 示 符 , 例 如 输 入 d a t a 命 令 : ‘ 来表示Linux系统的Shell命令提示符,例如输入data命令: ` LinuxShelldatadata`
data用于日期时间的相关功能。按Enter键后,Shell会显示系统的当前时间。
Shell看起来简陋,但实际上比图像化桌面强大的多。Linux操作系统继承自UNIX操作系统。无论是Linux操作系统还是UNIX操作系统,最初都只提供了Shell这一种用户操作系统界面,如果你习惯了这种文本操作方式,会渐渐体会到他的好处。

5.2 用命令了解树莓派

1.Linux通用查询命令

  • 首先用 lscpu 命令来查询CPU的信息:

$lscpu
终端窗口中就会打印出CPU信息:

Architecture:	armv7l
Byte Order:	Little Endian
CPU(s):	4
On-line CPU(s) list: 0-3
Thread(s) per core:	1
Core(s) per socket:	4
Socket(s):	1
Model name:	ARMv7 Processor rev 4(v7l)
CPU max MHz:	1200.0000
CPU min MHz:	600.0000
  • 然后,可以用 free 命令来了解内存的使用状况:

$free -h
在使用上面的命令时,增加了-h的选项(option)。通过给命令增加选项,可以改变命令的行为方式。这里的字母h是 human readable 的意思。如果不使用-h选项,那么free命令会以字节为单位显示结果。有了-h选项,free可以将结果转换成更适合显示的单位。
Shell打印的结果如下:

			total		used		free		shared	buffers		cached
Mem:			862M		739M		122M		14M		44M			397M
-/+ buffers/cache:	298M		563M
Swap:			99M				0B			99M

可以看到,内存总量是862MB,其他列中还显示了已用和可用的内存空间。通过增加选择,Linux命令的功能变得更加丰富。

  • 再看SD卡的存储情况,用命令fdisk:

$sudo fdisk -l
命令fdisk用于显示磁盘信息。选项 -l 表示列出所有磁盘。可以看到命令前面增加了sudo。某些命令的运行需要特殊权限,而 sudo提供了以系统管理员身份来执行后面的命令 ,即 fdisk -l 。结果的最后两行如下:
代码待实机截图补充

整个SD卡被分成了两个分区,其中一个分区有60MB,专门用于树莓派的开机启动;另一个分区用于存储其他的所有数据。

  • 使用 lsusb ,可以找到所有的USB外设:

$lsusb
Shell将打印:

Bus 001 Device 005: ID 0e8f:2517 GrennAsia Inc.
Bus 001 Device 006: ID 045e:0750 Microsoft Corp.	Wired Keyboard 600
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.S<SC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp.
  • 使用 uname 命令,可以打印出操作系统的信息

$uname -a
选项 -a 表示显示所有的相关信息,Shell将打印

	Linux raspberrypi 4.1.19-v7+ #858 SMP Tue Mar 15 15:56:00 GMT 2016 armv7l
GNU/Linux

这里的系统使用的内核是Linux 4.1.19版本,而内核的发布时间是2016年3月15日

  • 最后,用 ifconfig 命令来查看网络接口:

$ifconfig
命令运行结果如下:
代码待实机截图补充
其中eth0代表了以太网接口,wlan0代表了Wi-Fi接口,而lo是虚拟出来的本地接口,用来表示本机。在链接上网的接口中,我们可以看到该接口的IP地址等信息。例如wlan0的IP地址是192.168.0.108。因为没有插网线,所以eth0并没有IP地址。

2.树莓派专用查询命令

  • 除通用的Linux命令外,树莓派还提供了 vcgencmd 命令,用于和树莓派硬件直接互动。比如在Shell中执行:

$vcgencmd measure_temp
在上面的命令中,第二段的 measure_temp 是命令的 参数 。参数是选项之外另一种给命令提供额外信息的方式。上面的命令将返回CPU的温度:
temp=51.5'C
用下面的命令测量树莓派的核心电压:
$vcgencmd measure_volts core
返回电压值:
volt=1.2000V

5.3 什么是Shell

$free -h

包括空格在内总共7个字符。Shell程序通过 空格 区分出命令的不同部分。第一个部分是命令名,剩下的部分是选项和参数。在这个例子中,Shell会进一步分析第二个部分,发现这一部分的开头是“-”字符,从而知道它是一个 选项

有了命令名,Shell下一步就要执行该命令名对应的动作。这听起来就像是在戏剧舞台上,演员按照脚本演戏。Shell命令分为如下三类。

  - Shell内建函数(built-in function)。
  - 可执行文件(executable file)。
  - 别名(alias)

Shell的 内建函数 是保存在Shell内部的脚本。相对应的, 可执行文件 是保存在Shell之外的脚本。Shell必须在系统中找到对应命令名的可执行文件,才能正确执行。我们可以用绝对路径来告诉Shell可执行文所在的位置。所谓 路径 ,是指一个文件在存储空间的位置,例如:
/bin/date
这个路径表面date这个可执行文件位于根目录下的bin文件夹内。
如果用户只给出了命令名,而没有给出准确的位置,那么Shell必须自行搜索一些特殊的位置,也就是所谓的默认路径。Shell会执行第一个和命令名相同的可执行文件。这就相当于,Shell帮我们自动补齐了可执行文件的位置信息。我们可以通过 which 命令来确定命令名对应的是哪个可执行文件:
$which date
别名 就是给某个命令起的一个简称,以后在Shell中就可以通过这个简称来调用对应的命令。在Shell中,我们可以用alias来定义别名:
$alias freak="free -h"
Shell会记住我们的别名定义。以后在这个Shell中输入命令 freak 时,都将等价于输入 free -h

在Shell中,可以通过 type 命令来了解命令的类型。如果一个命令是 可执行文件 ,那么 type 将打印出文件的路径。
$type data
$type pwd
总得来说,Shell就是根据空格和其他特殊符号,来让电脑理解并执行用户要求的动作。

5.4 Shell的选择

  • Shell是文本解释器程序的统称,所以包括了不止一种Shell。
  • 在树莓派中,安装了sh和bash
  • bash是sh的改进版本,一般来说,推荐使用bash
  • $echo $SHELL 查看当前的Shell类型
    • echo用于在终端打印文本,而 $ 是一个新的Shell特殊符号,它提示Shell,后面跟随的不是一般的文本,而是用于储存数据的变量。shell会根据变量名找到真正的文本,并替换到变量所在的位置。SHELL变量存储了当前使用的Shell的信息,可以在bash中用 sh 命令启动,用 exit 命令退出。

5.5 命令的选项和参数

  • 已知,一行命令里可以包含着 选项参数 。总的来说, 选项 用于控制命令的行为,而 参数 说明了命令的作用对象,例如:

$uname -m

  • 在上面的命令中, 选项 -m 影响了命令 uname 的行为,导致 uname 输出了树莓派的CPU型号。如果不是受该选项的影响。那么 uname 输出的将是LINUX。 我们不妨把每个命令看作多功能的瑞士军刀,而选项使命令可以在不同的功能间切换。 由一个“-”引领一个英文字母,这称为 短选项 。多个短选项的字母可以合在一起,跟在同一个“-”后面。比如 $uname -m -r $uname -mr 是等价的。 此外还有一种 长选项 ,是用“–”引领一个英文单休,比如: $date --version 将输出date程序的版本信息。
  • 如果说选项控制了瑞士军刀的行为,那么 参数 就提供了瑞士军刀发挥用途的原材料。以 echo 命令为例,他能把字符打印到终端。他选择打印的对象,正是它的参数: $echo hello
  • 有的时候,选项也会携带变量,以便说明选项行为的原材料,比如:

$sudo date --set="1999-01-01 8:00:00"

  • 选项“–set”用于设置时间,用 等号链接 的就是它的参数。date会把日期设置成这一变量所代表的日期。如果 用短选项 ,那么就要用 空格 取代等号了:

$sudo date -s "1999-01-01 08:00:00"

  • 值得注意的是, Shell对空格敏感 。当参数信息中包含了空格时,我们需要用 引号 把参数包裹起来,以便Shell能识别出这是一个整体。
  • 选项和参数都是提供给命令的附加信息,因此,命令最终会拿这些字符串做什么,是由命令自己决定的。

5.6 如何了解一个陌生的命令

  • whatis

$whatis ls
**whatis **命令的作用是用很简短的一句话来介绍命令

  • man

$man ls
man 会返回命令帮助的手册。对于大部分Linux自带的命令来说,作者编写时,都会编写一个帮助文档,告诉用户怎样使用这个命令。 man 可以说是我们了解Linux最好的百科全书,它不仅告诉你Linux自带的命令的功能,还可以查询Linux的系统文件和系统调用。如果想要深入学习Linux,就必须要懂得如何用 man 来查询相关文档。

  • info

$info ls
info 将返回更详细的帮助信息。

5.7 Shell小窍门

命令补齐

大多数的Shell都有命令补齐的功能。当你在 $ 的后面输入命令的一部分时,比如“dat”,按TAB键,Linux会把它补充称为“date”。在这个过程中,Shell会搜索该命令名的所有可能。如果只有一种可能,那么Shell就会把该文件名补齐。如果不止一种,那么第一次按TAB键会没有反应,第二次按TAB键时,终端会打印出所有可能的命令名。比如输入“da”,按两次TAB键后,终端输出: dash date
这样的提示,能帮你想起自己想要输入的命令。

文件名补齐

如果输入的是作为参数的文件名,也可以同上补齐。

历史命令

在Shell中,可以用向上箭头,或 history 命令来查看之前输入的命令。

中止与暂停命令

当一个命令运行时,如果想中途停止它,那么可以用快捷键Ctrl+C。如果只是想暂时停止,那么可以用快捷键Ctrl+Z。中止与暂停引用了Linux中的**信号(Signal)机制,将在后面介绍。

本文地址:https://blog.csdn.net/qq_31714533/article/details/109276887

相关标签: 树莓派 Linux