1. 嵌入式系统
以计算机应用为中心,以计算机技术为基础的,软硬件可裁剪的,对功能、性能、体积、可靠性等有严格要求的专用计算机系统。 PS: linux系统:开源的 UNIX系统:不开源 IOS系统,基于UNIX开发的 Android 基于Linux开发 现在主流基于linux的系统的发行版本
- centos、Ubuntu、Deepin(国产)、RedHat、Debian、Gentoo、Kali Linux、Arch Linux、Suse
2. 嵌入式层次图
-----------应用层-------- (用户空间) --> (0-3G) 应用程序App glibc [0-3G] 或者通过shell命令 shell脚本→命令行解释器→系统调用
-------------(系统调用swi)---------- (内核空间) —> [3-4G] 内核层: 5大功能:
- 文件管理:虚拟文件系统VFS
- 内存管理:内存的分配和回收
- 网络管理:网络协议栈
- 进程管理:linux是分时多任务的操作系统(时间片轮转,上下文切换)
- 设备管理:linux一切皆文件 bsp-lcd
设备驱动的管理 字符设备驱动:按照字节流来访问,并且顺序访问的设备就属于字符设备驱动。
块设备驱动:按照block(512字节)来访问的设备,可以顺序访问,也可以无序访问的设备。
网卡设备驱动:接收网络协议栈发来的数据,将这些向网线上收发即可。网卡驱动没有设备文件。
-------------------硬件层---------------------
硬件名 | 驱动类型 |
---|
LED si7006(温湿度传感器) LCD TOUCHSCREEN(触摸屏) camera | 字符设备驱动 | emmc 硬盘 (Nor NAND)Flash u盘 | 块设备驱动 | dm9000 | 网卡设备驱动 |
PS: 命令行解释器是一个单独的软件程序,它可在用户和操作系统之间提供直接的通讯。命令行解释器是解释器的一种,用于对命令行进行解释执行。
3. Linux常用命令
命令 | 解释 |
---|
ls -al | 显示所有文件的详细信息 | ls -lh | 带单位显示文件大小 | ls -i | 查看当前目录下文件的inode节点号 | cd - | 返回上一次所在目录 | pwd | 显示当前目录的绝对路径 | mkdir -p a/b/c | 嵌套创建目录(创建了a目录,在其下创建了b目录,在b目录下创建了) | rmdir | 删除一个空目录文件 | touch a | 创建a文件,如果a文件存在,则更新a文件的时间戳 | rm -r | 删除目录文件 | rm -rf 或者 rm -r | 强制删除目录或者文件,不加提示信息,如普通用户删除root用户创建的文件 | cp dir1 dir2 -r | 复制目录 |
普通用户删除root用户创建的文件的提示信息
4. vim操作
命令 | 操作 |
---|
命令行模式 | | ngg | 光标回到第n行 | ctrl r | 反撤销 | shift zz | 保存并退出 | 低行模式 | | :x | 保存并退出 | :vsp a | 分屏显示文件a | ctrl i | 右切换文件 | ctrl h | 左切换文件 | :/a | 在打开的所有文件中高亮显示a ,n 查找下一个,N 查找上一个 | :noh | 取消高亮 | :%s/a/b/g | 将文件内所有a 替换为b | :m,ns/a/b/g | 将第m行到第n行所有a 替换成b | :set number | 设置行号 | :set nonumber | 不显示行号 |
5. GNU工具
GNU下重要软件
- Emacs代码编辑器工具
- GNU C (gcc)
- GNU C Library (glibc)
- Bash shell
GUN & GPL
- GNU = GNU is Not Unix 一个组织
- GPL = General Public License 一个开源产品协议,在开源产品的基础上二次开发,必须公开源码
6. Linux软件包
.deb(ubuntu) .rpm(RedHat)
.deb软件包中包含 可执行程序,man手册,说明文档,配置信息等
6.1 Linux软件包命名规则
软件名 | | 版本号 | | 修订版本号 | | 架构(64位→amd64,32位→i386) | 后缀名(决定用在哪个发行版本上) |
---|
sl | _ | 3.03 | - | 17build2 | _ | amd64 | .deb |
6.2 安装命令
离线安装dpkg
命令 | 作用 |
---|
sudo dpkg -i xx | 离线安装软件包xx | sudo dpkg -l xx | 查看 软件xx的版本 | sudo dpkg -L xx | 查看软件xx的安装路径 | sudo dpkg -r xx | 卸载软件xx(软件配置信息会保留) | sudo dpkg -P xx | 完全卸载软件 |
在线安装 apt-get
先检查软件的依赖,如果发现软件有依赖的其他软件,一并安装到自己的系统中
命令 | 操作 |
---|
sudo apt-get update | 更新下载源 | sudo apt-get install xx | 安装软件xx | sudo apt-get install -f xx | 强制安装xx | sudo apt-get download xx | 只下载不安装xx | sudo apt-get source xx | 下载xx的源码 | sudo apt-get remove xx | 卸载软件xx | sudo apt-get clean | 清理安装包(安装包默认路径 /var/cache/apt/archives ) |
PS: 由于用户所在的位置不同,访问服务器的时候,速率也不同。可以选择访问最快的服务器自己使用 比如选择清华镜像服务器:
- 找到软件 software & update
- 选择Ubuntu Software标签
- 从Download from中选择Other
- 在弹出提示框中选择China下的mirrors.tuna.tsinghua.edu.cn,然后点击choose Server
- 输入root用户密码
- 完成
- 在Software & Update界面,左下角有一个Revert按钮,用来恢复原来配置
部分好玩的软件
命令 | 安装的软件 |
---|
sudo apt-get install sl | 小火车应用程序 | sudo apt-get install oneko | 一个小猫 | sudo apt-get install bastet | 俄罗斯方块 终端字体缩小点就能玩 | sudo apt-get install frozen-bubble | 泡泡龙 | sudo apt-get install kolourpaint4 | 画图板 | sudo apt-get install xawtv | 打开摄像头的软件 |
7. 打包压缩命令
Linux中可压缩的格式
格式 | 后缀 |
---|
gzip | .gz | bzip2 | .bz2 | xz | .xz |
压缩速度:gz > bz2 > xz 压缩率:gz < bz2 < xz
命令 | 操作 |
---|
gzip xx | 将xx文件压缩成.gz 格式 | gunzip xx.gz | 将.gz 文件解压缩 | bzip2 xx | 将xx文件压缩成.bz2 格式 | bunzip2 xx.bz2 | 将.bz2 文件解压缩 | xz xx | 将xx文件压缩成.xz 格式 | unxz xx.xz | 将.xz 文件解压缩 |
打包归档 格式 tar 参数 生成的包.tar 源目录 通用解压命令 tar -xvf 文件名 注意: c/x v j z J 这些参数顺序可以改变,唯一需要注意 f 只能放在最后
8. 查看文件内容
命令 | 操作 |
---|
cat xx | 查看xx文件内容 | cat -n xx | 带行号查看xx文件内容 | head xx | 显示xx文件前10行内容 | head -n 5 xx or head -5 xx | 显示xx文件前5行 | tail xx | 显示xx文件后10行 | tail -n 5 xx or tail -5 xx | 显示文件后5行 | tail -f xx | 动态监测文件内容更新情况 | | | 管道描述符,将前一个命令的结果作为后一个命令的参数 | head -16 xx | tail -4 | 显示xx文件前16行中后四行的内容 | more xx | 以百分比形式显示xx文件内容,回车键 向下滚动, q 退出 | less xx | 以百分比形式显示文件内容,回车键 向下滚动,q 退出,↑ 向上滚动,↓ 向下滚动 |
9. 常用文件操作
命令 | 操作 |
---|
wc | | wc xx | 统计文件内容的信息 | | 行数 单词数 字符数 文件名 | wc -l xx | 统计xx文件的行数 | wc -w xx | 统计xx文件的单词数 | wc -c xx | 统计文件的字符数 | wc -l *.c | 统计当前目录下,所有.c结尾文件的行数 | grep | 检索文件内容 | grep "string" xx | 在xx文件中查找含string 的行 | grep -n "string" xx | 查找结果带行号显示 | grep -i "string" xx | 查找时,不区分大小写 | grep -v "string" xx | 查找不包含string 的行 | grep -w "string" xx | 严格精确查找,结果中string 不能带前缀或者后缀 | grep "world" * -nR | 查找当前目录及子目录下所有文件中包world 的行,带行号显示 | grep "^string" xx | 以string 开头 | grep "*string$" xx | 以string 结尾 | grep "^string$" xx | 只有string | find | 查找文件 | find ./ -name xx or find -name xx | 当前目录及子目录找xx 文件 | find -type f | 根据文件类型查找(bsp-lcd ),f 为普通文件 | find -type f | xargs grep -n "string" --color=auto | 查找当前目录及其子目录下所有包含“string ”的文件 --color=auto 自动高亮 | cut | 按行按分隔符处理 | cut -d : 1 xx | 在xx文件中以: 为分隔符,取第一个 | cut -d \" 1,2 xx | 在xx文件中以: 为分隔符,取第一个和第二个,采用" 分割时,需要用反斜杠\ 来转义 |
PS:
使用find时,注意find -name *.c 执行时,命令行解释器会将其翻译成find -name a.c b.c d.c 这样会导致find 命令参数错误,可以使用find -type f | grep ".c$" 来查找所有.c文件 |
---|
10. 通配符
符号 | 作用 |
---|
* | 匹配任意长度任意字符 | ? | 只通配一个字符 | [abc] | 通配a 或b 或c | [1-5] | 通配1 到5 中任意一个 | [^abc] or [^a-c] | 通配除a 、b 、c 外任意一个字符 | [a-c] | 通配a , b , c 中任意一个字符,但有的计算机也会匹配到A , B , C |
PS: 最后一条的结果,产生的原因是本地语序,一般本地语序是aAbBcCdD... ,可以修改环境变量来取消本地语序export LC_ALL=C ,取消后的语序为abcd...z ABCD...Z ,这样用[a-c] 通配时,就只会通配a 、b 、c 。
11. 文件权限
使用ls -l 查看文件信息时有: drwxr-xr-x 3 top top 4096 Oct 2 15:54 ./
文件类型 | 当前用户权限 | 同组用户权限 | 其他用户权限 | 该目录下有几个目录,如果是文件默认为1 | 所属用户 | 所属组 | 文件大小(字节) | 时间戳(最后一次修改时间) | 文件名 |
---|
d | rwx | r-x | r-x | 1 | stu | stu | 4096 | Oct 2 15:54 | ./ |
PS: ./ 表示当前目录文件
修改文件权限
只有文件所属用户和root用户可以修改权限
12. 软链接与硬链接
软链接 ln -s 被链接的文件(绝对路径) 软链接文件 -s 参数,表示生成软链接,symbolic 软链接相当于快捷方式,创建一个文件,链接到源文件,我们就可以通过软链接文件去访问源文件 Ps:
- 生成的软链接文件用绝对路径,如果用相对路径时,移动软链接文件,链接破裂,链接文件不可用。
- 当软连接创建位置不在当前目录时,源文件也应该用绝对路径,否则用软链接找不到源文件。
- 当被链接的文件移动或者删除时,链接文件就会失效
硬链接 ln 被链接的文件 软连接文件 相当于给源文件起一个别名,源文件与硬链接文件的inode 号都是相同的。
13. 用户管理相关
添加新用户
命令 | 操作 |
---|
sudo adduser xx | 添加新用户xx,会提示添加用户信息 |
注意: 新增用户没有sudo 权限,需要在/etc/sudoers 文件中添加 /etc/sudoers 是只读的 应该先增加写权限 再修改 复制一份有权限的用户的记录,把名字改成新用户就可以了 修改后 记得将写权限去掉
切换用户
命令 | 操作 |
---|
su xx | 切换到xx用户 | su - xx | 切换用户同时,加载用户的环境变量 | exit | 退出当前用户 | sudo passwd xx | 修改用户xx的密码 | sudo deluser xx | 删除用户 | id xx | 查看用户信息 | sudo usermod -c "string" 用户名 | 将用户的描述信息更改为string | sudo usermod -d /home/hello 用户名 | 将用户的家目录改为/home/hello (需要将用户的隐藏配置文件都移过去) | sudo usermod -l 新用户名 用户名 | 修改用户名 | sudo usermod -g 新的组名 用户名 | 修改用户所属于的组 |
14. 磁盘相关
磁盘类型
- FAT32 不能存 > 4G 的文件
- NTFS 可以存 > 4G 的文件
- ext4 Linux用的文件系统
命令 | 操作 |
---|
sudo fdisk -l | 查看系统挂载的磁盘信息 | sudo df -h | 查看磁盘使用情况 | sudo mount /dev/sdb2 ~/temp | 将 /dev/sdb1 挂在到 ~/temp 下 |
查看磁盘的其他操作 sudo fdisk /dev/sda1 输入m
帮助: DOS (MBR) a 开关 可启动 标志 b 编辑嵌套的 BSD 磁盘标签 c 开关 dos 兼容性标志 常规 d 删除分区 F 列出未分区的空闲区 l 列出已知分区类型 n 添加新分区 p 打印分区表 t 更改分区类型 v 检查分区表 i 打印某个分区的相关信息 杂项 m 打印此菜单 u 更改 显示/记录 单位 x 更多功能(仅限专业人员) 脚本 I 从 sfdisk 脚本文件加载磁盘布局 O 将磁盘布局转储为 sfdisk 脚本文件 保存并退出 w 将分区表写入磁盘并退出 q 退出而不保存更改 新建空磁盘标签 g 新建一份 GPT 分区表 G 新建一份空 GPT (IRIX) 分区表 o 新建一份的空 DOS 分区表 s 新建一份空 Sun 分区表
15. 环境变量
存在系统中的变量,保存系统启动或者系统运行相关的一些配置信息
OLDPWD 记录上一次所在路径 HOME 记录家目录路径 PATH 记录可执行文件路径
修改环境变量
1、export export PATH=$PATH:/home/stu/test/bin 临时修改只对当前终端有效 2、修改家目录的.bashrc 文件 将export PATH=$PATH:/home/stu/test/bin 放入.bashrc 文件,然后注销再登录或者执行命令source .bashrc ,就会对当前用户生效 3、x修改系统加载文件 /etc/environment 或者 /etc/profile 这两个文件在系统启动时会执行,会对所有用户有效 重启或者执行命令source /etc/profile 或者 source /etc/environment 生效
16. 关机与重启
命令 | 操作 |
---|
sudo shutdown -h now | 立即关机 | sudo shutdown -h 10:30 | 10:30关机 | sudo shutdown -h 5 | 5分钟后关机 | sudo shutdown -r now | 立即重启 | sudo reboot | 立即重启 | sudo shutdown -c | 取消关闭计划 | sudo shutdown -h or sudo shutdown -r | 默认在一分钟后执行 |
17. 网络
Ubuntu设置网络方式
1、图形化界面 右上角进入网络设置,添加相关参数,一般选自动,也可以选择手动设置,然后应用,退出。
2、配置文件设置静态IP Ubuntu18.04版本后,不再使用/etc/network/interfaces 这个文件 改用/etc/netplan 下的配置文件01-network-manager-all.yaml 执行命令 sudo vi /etc/netplan/01-network-manager-all.yaml 该文件有严格的格式要求,缩进控制,冒号后必须加空格,gateway4 不加方括号[]
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
ens37:
addresses: [192.168.0.54/24]
gateway4: 192.168.0.1
nameservers:
addresses: [8.8.8.8,114.114.114.114]
dhcp4: no
optional: no
注意: 第六行的ens37 指的是所使用的网卡,要跟自己所用的网卡号相同,可以通过左上角三个方块的图标查看。 第七行是IP地址 第八行是网关 第十行是DNS域名解析服务器地址
命令 | 操作 |
---|
ifconfig | Linux查看网络信息 | ipconfig | windows查看网络信息 | sudo service network-manager restart | 重启网络管理服务 | ping www.baidu.com | 测试访问www.baidu.com 网站 |
|