嵌入式day11
shell简介
英文单词shell可直译为“贝壳”。“贝壳”是动物作为外在保护的一种工具。Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。
命令是用户向系统内核发出控制请求,与之交互的文本流。
shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,实现用户与操作系统的交互。
当需要重复执行若干命令,可以将这些命令集合起来,加入一定的控制语句,编辑成为shell脚本文件,交给shell批量执行。
选择shell
目前流行的shell主要有几种:
-
Bourne Shell(简称sh)
-
C Shell(简称csh)
-
Korn Shell(简称ksh)
-
Bourne Again Shell:能够提供环境变量以配置用户shell环境,支持历史记录,内置算术功能,支持通配符表达式,将常用命令内置简化。
shell命令格式
username@hostname:direction$
username:用户名,显示当前登录用户的账户名;
hostname:主机名,显示登录主机名;
direction:目录名,显示当前所处的路径,当在根目录下显示"/",当前在用户主目录下显示为“~”;
一条命令的三要素之间用空格隔开;
若将多个命令在一行书写,用分号(;)将命令隔开;
如果一条命令不能在一行书写完,在行尾使用反斜杠(\)标明该条命令结束;
使用Tab键补全命令
查询命令历史
history [numberline]
显然history只能记录有限条的历史命令,默认保留500条命令
Bash Shell 将历史命令容量保存在环境变量HISTSIZE中。
echo $HISTSIZE
显示历史命令容量
HISTSIZE=number
修改历史命令容量
通配符
当需要命令处理一组文件,用户不必一一输入文件名,可以使用shell通配符。
通配符 | 含义 | 实例 |
---|---|---|
* | 匹配任意长度的字符串 | 1*.txt代表12.txt,1344.txt等 |
? | 匹配一个长度的字符 | 1?.txt代表12.txt ,13.txt等 |
[...] | 匹配其中指定的一个字符 | 1[ort].txt代表1o.txt,1r.txt,1t.txt |
[-] | 匹配指定的一个字符范围 | 1[a-z].txt代表1a.txt,1b.txt到1z.txt |
[^...] | 除了其中指定的字符,均可匹配 |
1[^otr].txt 除了1r.txt,1o.txt,1t.txt外 |
管道
管道可以把一系列命令连接起来,意味着第一个命令的输出将作为第二个命令的输入,通过管道传递给第二个命令,第二个命令的输出又将作为第三个命令的输入,以此类推。就像通过使用“|”符连成一个管道。
输入/输出重定向
输入/输出重定向是改变shell命令或程序的标准输入/输出目标,重新定向到新的目标。
linux中默认的标准输入定义为键盘,标准输出定义为终端窗口。
用户可以为当前操作改变输入或输出,迫使某个特定命令的输入或输出来源为外部文件。
重定向符 | 含义 |
---|---|
>file | 将file文件重定向为输出源,新建模式 |
>>file | 将file文件重定向为输出源,追加模式 |
<file | 将file文件重定向为输入源 |
2>/&> | 将由命令产生的错误信息输入到文件中 |
命令置换
命令置换是将一个命令的输出作为另一个命令的参数
command1 `command2`
其中,命令2的输出将作为命令1的参数。
echo
echo命令用于在标准输出———显示器上显示一段文字,一般起到提示作用。echo命令的一般语法格式:echo [-n] information
选项-n表示输出文字后不换行。提示信息字符串可以加引号,也可以不加。
/etc/passwd文件
/etc/passwd文件是系统能够识别的用户清单。当用户登录时,系统查询这个文件,确定用户的 UID并验证用户口令
/etc/group文件
包含了UNIX组的名称和每个组中成员列表
每一行代表一个组,包含4个字段;
adduser配置文件
/etc/adduser.conf
pstree
将所有行程以树状图显示,树状图将会以pid(如果有指定)或是以init这个基本进程为根,如果有指定使用者id,则树状图会只显示该使用者所拥有的进程。
文件系统类型
磁盘文件类型:指本地主机中实际可以访问到的文件系统
网络文件系统:是可以远程访问的文件系统
专有/虚拟文件系统:不驻留在磁盘上的文件系统
目前Ext4是Linux系统广泛使用的一种文件格式。在Ext3基础上,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进。
最大特点是日志文件系统:可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。
SCSI与IDE设备命名
sata硬盘的设备名称是“/dev/sda”
IDE硬盘的设备名称是“/dev/hda”
如果很在意系统的高性能和稳定性,应该使用SCSI硬盘
Linux分区的命名方式
字母和数字相结合
前两个字母表示设备类型
-
hd 代表IDE硬盘
-
sd 代表SCSI或SATA硬盘
第三个字母说明具体的设备
a表示第一个硬盘
b表示第二个硬盘
交换分区
将内存中的内容写入硬盘或从硬盘中读出,称为内存交换
交换分区最小必须等于计算机的内存
可以创建多于一个的交换分区
尽量把交换分区放在硬盘分区的起始位置
链接文件
硬链接:是利用Linux中为每个文件分配的物理编号————inode建立链接。因此,硬链接不能跨越文件系统
软链接:是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。
需要注意的是,如果是修改硬链接的目标文件名,链接依然有效;如果修改软链接的目标文件名,则链接将断开;对于一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的inode已经改变。
配置IP地址
配置IP地址的方法有两种:
-
配置静态IP:在主机进入网络之前,事先为主机设置固定的IP地址;
-
配置动态IP:选择DHCP网络服务,在主机进入网络之后,动态随机获取IP地址。
动态IP地址获取
sudo dhclient
动态IP的获取过程
-
客户端寻找DHCP服务器
-
服务器提供可分配的IP地址
-
客户端接受IP地址租借
-
服务器确认租借IP
网络重启
sudo /etc/init.d/networking restart
IP地址存放地点
interfaces配置文件:/etc/network/interfaces
DNS客户端配置文件
resolv.conf配置文件:/etc/resolv.conf中