- 1. 嵌入式系统
- 2. 嵌入式层次图
- 3. Linux常用命令
- 4. vim操作
- 5. GNU工具
- 6. Linux软件包
- 6.1 Linux软件包命名规则
- 6.2 安装命令
- 离线安装dpkg
- 在线安装 apt-get
- 7. 打包压缩命令
- 8. 查看文件内容
- 9. 常用文件操作
- 10. 通配符
- 11. 文件权限
- 修改文件权限
- 12. 软链接与硬链接
- 13. 用户管理相关
- 14. 磁盘相关
- 15. 环境变量
- 修改环境变量
- 16. 关机与重启
- 17. 网络
- Ubuntu设置网络方式
以计算机应用为中心,以计算机技术为基础的,软硬件可裁剪的,对功能、性能、体积、可靠性等有严格要求的专用计算机系统。
PS:
linux系统:开源的
UNIX系统:不开源
IOS系统,基于UNIX开发的
Android 基于Linux开发
现在主流基于linux的系统的发行版本
- centos、Ubuntu、Deepin(国产)、RedHat、Debian、Gentoo、Kali Linux、Arch Linux、Suse
-----------应用层--------
(用户空间) --> (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:
命令行解释器是一个单独的软件程序,它可在用户和操作系统之间提供直接的通讯。命令行解释器是解释器的一种,用于对命令行进行解释执行。
| 命令 | 解释 |
|---|---|
| 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用户创建的文件的提示信息
| 命令 | 操作 |
|---|---|
| 命令行模式 | |
| 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 | 不显示行号 |
GNU下重要软件
- Emacs代码编辑器工具
- GNU C (gcc)
- GNU C Library (glibc)
- Bash shell
GUN & GPL
- GNU = GNU is Not Unix 一个组织
- GPL = General Public License 一个开源产品协议,在开源产品的基础上二次开发,必须公开源码
.deb(ubuntu) .rpm(RedHat)
.deb软件包中包含 可执行程序,man手册,说明文档,配置信息等
6.1 Linux软件包命名规则| 软件名 | 版本号 | 修订版本号 | 架构(64位→amd64,32位→i386) | 后缀名(决定用在哪个发行版本上) | |||
|---|---|---|---|---|---|---|---|
| sl | _ | 3.03 | - | 17build2 | _ | amd64 | .deb |
| 命令 | 作用 |
|---|---|
| sudo dpkg -i xx | 离线安装软件包xx |
| sudo dpkg -l xx | 查看 软件xx的版本 |
| sudo dpkg -L xx | 查看软件xx的安装路径 |
| sudo dpkg -r xx | 卸载软件xx(软件配置信息会保留) |
| sudo dpkg -P xx | 完全卸载软件 |
先检查软件的依赖,如果发现软件有依赖的其他软件,一并安装到自己的系统中
| 命令 | 操作 |
|---|---|
| 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 | 打开摄像头的软件 |
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 只能放在最后
| 命令 | 操作 |
|---|---|
| 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退出,↑向上滚动,↓向下滚动 |
| 命令 | 操作 |
|---|---|
| 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文件 |
|---|
| 符号 | 作用 |
|---|---|
| * | 匹配任意长度任意字符 |
| ? | 只通配一个字符 |
| [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。
使用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用户可以修改权限
软链接
ln -s 被链接的文件(绝对路径) 软链接文件
-s参数,表示生成软链接,symbolic
软链接相当于快捷方式,创建一个文件,链接到源文件,我们就可以通过软链接文件去访问源文件
Ps:
- 生成的软链接文件用绝对路径,如果用相对路径时,移动软链接文件,链接破裂,链接文件不可用。
- 当软连接创建位置不在当前目录时,源文件也应该用绝对路径,否则用软链接找不到源文件。
- 当被链接的文件移动或者删除时,链接文件就会失效
硬链接
ln 被链接的文件 软连接文件
相当于给源文件起一个别名,源文件与硬链接文件的inode号都是相同的。
添加新用户
| 命令 | 操作 |
|---|---|
| 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 新的组名 用户名 | 修改用户所属于的组 |
磁盘类型
- 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
15. 环境变量帮助:
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 分区表
存在系统中的变量,保存系统启动或者系统运行相关的一些配置信息
| 命令 | 操作 |
|---|---|
| env | 查看已有环境变量 |
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生效
| 命令 | 操作 |
|---|---|
| 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 | 默认在一分钟后执行 |
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网站 |



