嵌入式系统基本概念Linux常用命令
文章目录
- 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设置网络方式
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
软链接相当于快捷方式,创建一个文件,链接到源文件,我们就可以通过软链接文件去访问源文件,创建软链接后,该文件的inode
节点的引用计数
没有变化
Ps:
- 生成的软链接文件用绝对路径,如果用相对路径时,移动软链接文件,链接破裂,链接文件不可用。
- 当软连接创建位置不在当前目录时,源文件也应该用绝对路径,否则用软链接找不到源文件。
- 当被链接的文件移动或者删除时,链接文件就会失效
硬链接
ln 被链接的文件 软连接文件
相当于给源文件起一个别名,源文件与硬链接文件的inode
号都是相同的。
每创建一个硬链接,对应文件的inode
节点中的引用计数
就会加1
,当删除一个文件时,对应的inode
节点的引用计数
会减1
,但文件不会真的删除,其他硬链接文件仍然可用,只有在该inode
节点的引用计数
==0时,该文件才会被真的删除。
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. 环境变量
存在系统中的变量,保存系统启动或者系统运行相关的一些配置信息
命令 | 操作 |
---|---|
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
生效
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: 2renderer: NetworkManagerethernets:ens37:addresses: [192.168.0.54/24]gateway4: 192.168.0.1nameservers:addresses: [8.8.8.8,114.114.114.114]dhcp4: nooptional: no
注意:
第六行的ens37
指的是所使用的网卡,要跟自己所用的网卡号相同,可以通过左上角三个方块的图标查看。
第七行是IP地址
第八行是网关
第十行是DNS域名解析服务器地址
命令 | 操作 |
---|---|
ifconfig
|
Linux查看网络信息 |
ipconfig
|
windows查看网络信息 |
sudo service network-manager restart
|
重启网络管理服务 |
ping www.baidu.com
|
测试访问www.baidu.com 网站
|
嵌入式系统基本概念Linux常用命令相关推荐
- 极客的Linux常用命令速查手册
Linux常用命令速查手册 1.1 写在前面的话 1.2 Linux 常用命令速查手册 1.2.1 mkdir创建一个文件夹 1.2.2 cd进入一个文件夹 1.2.3 rmdir删除一个文件夹 1. ...
- 2. Linux常用命令
Linux目录结构 Desktop的上层目录是~(用户主目录) ~的上层目录是/(系统根目录) Linux常用命令 切换目录 cd cd app 切换到app目录 cd - 切换到上一层目录 cd / ...
- Linux基础概念及常用命令
Linux基础概念及常用命令 文章目录 Linux基础概念及常用命令 1 Linux概述 1.1 为什么要学Linux 1.2 Linux简介 1.3 Linux 发行版 1.4 Linux 应用领域 ...
- 嵌入式linux/鸿蒙开发板(IMX6ULL)开发 (二)Ubuntu操作入门与Linux常用命令
文章目录 1.Ubuntu操作入门 1.1 Ubuntu下打开终端 1.1.1 用搜索框打开终端 1.1.2 使用右键打开终端 1.1.3 快捷键打开终端 1.1.4 调节终端的字体大小及颜色 1.2 ...
- 嵌入式linux基本指令,成都嵌入式开发之Linux常用命令大全
原标题:成都嵌入式开发之Linux常用命令大全 Linux系统中有很多命令,使用Linux系统最常用的就是命令操作,而不是像Windows一样,使用鼠标操作.Linux中许多常用命令是必须掌握的,也有 ...
- Linux常用命令(本篇包括,Linux目录结构介绍、Linux Shell介绍、9个常见命令介绍、文件的概念、文件的操作(20个)、目录的操作、文件和目录的权限、文件压缩及解压缩)
Linux常用命令(本篇包括,Linux目录结构介绍.Linux Shell介绍.9个常见命令介绍.文件的概念.文件的操作(20个).目录的操作.文件和目录的权限.文件压缩及解压缩) ...
- linux一,系统分区 Linux的盘符结构 Linux常用命令: 一,目录/文件的处理命令
文章目录 一,系统分区 Linux的盘符结构 Linux常用命令: 一,目录/文件的处理命令 一,系统分区 概念:在硬盘上产生文件系统的过程 第一步:磁盘分区(创建隔断) 分区规则:主分区最多只能分4 ...
- Linux系统简介-虚拟机安装教程(保姆级)-Linux常用命令
Linux系统简介-虚拟机安装教程-Linux常用命令 1.Linux系统简介 1.1Linux系统的历史 1.2Linux系统的特点和优势 1.3Linux发行版的分类 2.虚拟机的安装教程 2.1 ...
- Linux常用命令英文全称与中文解释Linux系统
Linux常用命令英文全称与中文解释Linux系统 man: Manual 意思是手册,可以用这个命令查询其他命令的用法. pwd:Print working directory 意思是密码. su: ...
最新文章
- 将C++里的Mat矩阵保存并由matlab提取分析
- linux热插拔原理,.NET Core 的热插拔机制的深入探索
- 优化C#程序的48种方法
- 数据库-优化-groupby的优化
- Blazor 火了,不禁让人想起已死的Silverlight !
- 7-1 内存分区分配--首次适应算法 (100 分)
- 《上海堡垒》改编电影发布 QQ阅读披露作者江南心声
- stm32c语言long型数据多少位,stm32 C语言的数据类型说明
- 如何在 FPGA 上实现双线性插值的计算?
- 十年风雨!看蚂蚁金服SOFA 分布式架构演进
- 数学建模之回归分析加例题详解(MATLAB实现)
- 【机器学习】6:K-近邻(KNN)算法实现手写数字识别的三种方法
- 微信个人号API开发
- ProxySQL+MGR实现读写分离和主节点故障无感知切换 - 完整操作记录
- C#使用正则表达式校验邮箱
- 如何获取本地IP(收藏)
- Shell脚本读取mysql结果集各数据项的值
- 【妄言之言】我的2016--困境与选择
- 【Python中字典的删除操作-del和clear】
- HDFS的javaAPI操作(10)
热门文章
- 后端开发学习阶段总结
- 软件获取手机的ime权限_如果Android手机软件不授权权限,软件应用可以使用
- 《吉佳公众健康管理平台》解决方案
- 纯命令行+美观UI,10款实用开源下载工具
- Linux下支付宝安全控件安装程序运行原理
- Linux基础优化与安全小结
- 微信小程序:实现悬浮返回和分享按钮
- QGroundControl(QGC)飞控地面站二次开发-修改地图
- mysql安装教程8.0.21安装_mysql 8.0.21 安装配置方法图文教程
- 分享:C++各大有名库的介绍之C++标准库