树莓派玩转LINUX -Part1 Shell
第五章 贝壳里的树莓派
树莓派的性能不高,而计算机图形的呈现相当消耗资源。幸好,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命令: `
来表示Linux系统的Shell命令提示符,例如输入data命令:‘data`
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
命令退出。
- echo用于在终端打印文本,而
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交叉编译出适用于树莓派ARM架构的可执行程序
-
树莓派(4B)Linux + .Net Core嵌入式-初始化环境(一)
-
在电脑端sudo apt-get install linux-source失败,可能是在树莓派下操作
-
树莓派4B安装docker-compose(64位Linux)
-
树莓派玩转LINUX -Part1 Shell
-
玩转Linux - shell 编程基础
-
树莓派4B安装64位Linux(不用显示器键盘鼠标)
-
玩转树莓派之安装ubuntu-mate
-
树莓派(4B)Linux + .Net Core嵌入式-HelloWorld(二)
-
树莓派(4B)Linux + .Net Core嵌入式-初始化环境(一)