树莓派玩转LINUX -Part1 Shell

第五章 贝壳里的树莓派

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

5.1 初试Shell

打开终端,桌面上就会出现一个黑色背景的窗口,窗口上面写着:
[email protected]:~ $
这里的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)机制,将在后面介绍。

猜你喜欢

转载自blog.csdn.net/qq_31714533/article/details/109276887