一、开发电脑要求
1.1、CPU要求
4核8线程,2核编译代码性能?编译大工程的时候很耗费CPU,编译QT大概要很久。
核心越多越好,主频越高越好。
1.2、内存要求
最少16GB,
1.3、硬盘要求
Yocto,1T以上的硬盘,至少300G给Ubuntu。
1.4、其他的要求
对显卡没有任何要求。
二、开发电脑选择
2.1、CPU的选择
性能越强越好?前提是有钱。I7-7700HQ,I7-8700,9700。在预算范围内,CPU性能越强越好。
2.2、内存的选择
16GB内存
2.3、硬盘的选择
1TB,西数,希捷,东芝,日立。
2.4、其他的外设的选择
显卡,只要能点亮屏幕就行。
三、视频录视方式
1、拒绝照读PPT。手把手教学。
2、视频分辨率:1080P。
3、现场敲代码。
4、现场做笔记。
一、Ubuntu终端操作
打开终端进行命令行操作
二、Shell命令
1、目录信息查看命令ls
ls -a 显示目录所有文件及文件夹,包括隐藏文件,比如以.开头的
2、目录切换命令cd
3、当前路径显示命令pwd
4、系统信息查看命令uname
5、清理屏幕命令clear
6、显示文件内容命令cat
7、切换用户身份命令sudo
8、文件拷贝命令cp
9、切换用户命令su
10、移动文件命令mv
11、创建文件夹命令mkdir
12、创建文件命令touch
13、删除命令rm
14、目录删除命令rmdir
15、显示网络配置信息命令ifconfig
16、重启命令reboot
17、关机命令poweroff
18、系统帮助命令man
19、数据同步写入磁盘命令sync
20、查找文件命令find
21、查找内容命令grep
22、文件夹大小查看命令du
23、磁盘空间检查命令df
24、使用gedit打开某个文件命令gedit
25、当前的系统进程查看命令ps
26、进程实时运行状态查看命令top
27、文件类型查看命令file
一、根目录“/”
Linux下“/”就是根目录!所有的目录都是由根目录衍生出来的。
二、Ubuntu文件系统结构
/bin 存放二进制可执行文件,这些命令在单用户模式下也能够使用。可以被root和一般的账号使用。
/boot Ubuntu内核和启动文件,比如vmlinuz-xxx。gurb引导装载程序。
/dev 设备驱动文件
/etc 存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址。
/home 系统默认的用户主文件夹,一般创建用户账户的时候,默认的用户主文件夹都会放到此目录下。
/lib 存放库文件
/media 此目录下放置可插拔设备,比如SD卡,或者U盘就是挂载到这个目录中。
/mnt 用户可使用的挂载点,如果要挂载一些额外的设备,那么就可以挂载到此处。
/opt 可选的文件和程序存放目录,给第三方软件放置的目录。
/root root用户目录,也就是系统管理员目录。
/sbin 和/bin类似,也是存放一些二进制可执行文件。sbin下面的一般是系统开机过程中所需要的命令。
/srv 服务相关目录。比如网络服务。
/sys 记录内核信息,虚拟文件系统。
/tmp 临时目录
/var 存放一些变化的文件,比如日志文件
/usr usr不是user的缩写,而是UNIX Software Resource的缩写,存放于系统用户有关的文件,会占用很大的存储空间!
/proc 虚拟文件系统,数据放置到内存中,存放系统运行信息
三、绝对路径和相对路径
绝对路径:从根目录“/”算起的路径。
相对路径:相对于目前路径的文件名写法,比如./home/zzk。不是以“/”开头的就行。
“.”代表当前路径,也可以 用“./”表示
“..”代表上一层目录,也可以用“../”表示
一、Ubuntu磁盘文件
/dev/sd*文件,此类文件是磁盘设备文件,并不能直接访问磁盘,必须要将磁盘挂载到某一个目录下才可以访问。
/dev/sdb和/dev/sdb1是U盘的设备文件。
/dev/sdb表示U盘,/dev/sdb1表示U盘的第一个分区。
二、磁盘和目录的容量查询命令
df:列出文件系统的整体磁盘使用量。主要查看个文件系统的使用量,
du:评估文件系统的磁盘使用量,主要查看单个文件的大小。
三、磁盘挂载与卸载,分区和格式化、
1、磁盘的挂载和卸载
mount和umount命令
2、磁盘分区
fdisk命令
3、磁盘格式化
磁盘分区创建好以后就可以格式化磁盘,使用命令mkfs。如:
mkfs -t vfat /dev/sdx
一、Linux下常用的压缩格式
Linux下常用的压缩扩展名有:.tar、.tar.bz2、.tar.gz。
二、Windows下7ZIP软件的安装
因为Linux下很多文件是.bz2,.gz结尾的压缩文件,因此需要在windows下安装7ZIP软件。
二、gzip压缩工具
.gzip工具负责压缩和解压缩.gz格式的压缩包。
gzip xxx //压缩
gzip -d xxx.gz //解压缩
gzip对文件夹进行压缩
gzip -r xxx //对文件夹进行压缩
gzip -rd xxx.gz //对文件夹进行解压缩
gzip虽然可以对文件夹进行压缩,但是并不能提供打包的服务,只是对文件夹中的所有文件进行了单独的压缩。
二、bzip2压缩工具
和gzip类似,只是bzip2工具负责压缩和解压缩.bz2格式的压缩包。
bzip2 -z xxx //压缩
bzip2 -d xxx.gz //解压缩
三、tar打包工具
tar工具参数:
-f,使用归档文件或 ARCHIVE 设备
-c:创建新归档,创建压缩文件
-x:从图档中解出文件,解压缩
-j:使用bzip2压缩格式。
-z:使用gzip压缩格式
-v:打印出命令执行过程。
tar工具提供打包服务,就是将多个文件打包,比如
tar -vcf test.tar test //将test打包成test.tar
tar -vxf test.tar //解包
上面的tar命令只提供了打包和解包的功能,tar在提供打包和解包的同时使用gzip/bzip2进行压缩,实现类似windwos下winRAR软件的命令。
1、对tar.bz2进行压缩和解压缩
tar -vxjf xxx.tar.bz2 解压缩
tar -vcjf xxx.tar.bz2 xxx 压缩
2、对tar.gz进行压缩和解压缩\
tar -vxzf xxx.tar.gz //解压缩
tar -vczf xxx.tar.gz xxx //压缩
四、其他格式的压缩和解压缩
1、.rar格式
需要先安装rar:sudo apt-get install rar
rar x xxx.rar //解压缩
rar a xxx.rar xxx //压缩
2.zip格式
zip格式压缩使用“zip“命令:
zip -rv xxx.zip xxx
zip格式解压缩使用“unzip”命令:
unzip -v xxx.zip
一、Linux用户
Linux是一个多用户操作系统,不同的用户拥有不同的权限。可以查看和操作不同的文件。 Ubuntu有三种用户:
1、初次创建的用户。
2、root用户
3、普通用户。
初次创建的用户权限比普通用户多,但是没有root用户多,初次创建的用户可以创建普通用户。
Linux用户记录在/etc/passwd这个文件内。
Linux用户密码记录在/etc/shadow这个文件内。
每个用户都有一个ID,叫做UID。
二、Linux用户组
为了方便管理,将用户进行分组。这样就可以设置非本组人员不能访问某些文件。每个用户可以属于多个不同的组。
用户:家里有你、弟弟、妹妹个人,每个人都有自己的房间,你们三个人都是用户,你们都不能随便的乱翻别人的房间。
用户组:你们三个都是一个家庭的,也就是属于同一个用户组,你们三个可以共用厨房,书房等空间。
因此:
用户和用户组的存在就是为了控制文件的访问权限的。
每个用户组都有一个ID,叫做GID。
用户组信息存储在/etc/group文件中。
三、创建用户和用户组
1、图形化界面创建
要使用图形化界面创建用户和用户组的话就需要安装gnome-system-tools这个工具:
sudo apt-get install gnome-system-tools
2、命令创建用户和用户组
添加用户:adduser命令,adduser 用户名
用户查询:finger命令,finger 用户名
修改用户密码:passwd命令,passwd 用户名
删除用户:deluser命令,deluser 用户名
添加用户组:addgroup命令,addgroup 用户组名
显示组内用户名:groups命令,groups 用户组名
删除用户组:delgroup命令,delgroup用户组名
一、Linux连接文件
Linux有两种连接文件:符号连接(软连接)和硬链接,符号链接类似Windows下的快捷方式。硬链接通过文件系统的inode连接来产生新文件名,而不是产生新文件。
inode:记录文件属性,一个文件一个inode。inode相当于文件ID,查找文件的时候要先找到inode,然后才能读出文件的内容。
二、ln命令
ln命令用于创建连接文件:
ln [选项] 源文件 目标文件
选项:-s 创建符号链接(软连接)
-f 强制创建连接文件,如果目标存在,那么先删除掉目标文件,然后再建立连接文件。
三、硬连接
硬链接是多个文件都指向同一个inode,硬链接知识点:
①、具有相同inode的多个文件互为硬链接文件,创建硬链接相当于文件实体多了入口。
②、对于硬链接文件,只有删除了源文件以及对应的所有硬连接文件,文件实体才会被删除。
③、根据硬链接文件的特点,我们可以通过给文件创建硬连接的方式来防止文件误删除。
④、不论修改源文件还是连接文件,另一个文件的数据都会被改变。
⑤、硬连接不能跨文件系统。
⑥、硬连接不能连接到目录。
因为以上这些限制,硬链接其实不常用。
四、符号连接(软连接)
符号连接类似Windows下的快捷方式,符号链接也叫做软连接,软连接要用的多。符号连接相当于创建了一个独立的文件,这个文件会让数据读取指向它连接的哪个文件的文件名。软连接的特点:
①、可以连接到目录。
②、可以跨文件系统。
③、删除源文件以后,软连接文件也就“打不开了”。
④、符号连接文件通过->来指示具体的连接文件。
⑤、符号连接要使用绝对路径,否则连接出问题。
一、vim编辑器
Linux系统都会自带vi编辑器,但是vi编辑器太难用了!所以建议大家安装vim编辑器,安装命令:
sudo apt-get install vim
二、vim编辑器三种工作模式
vi xxx 使用vi编辑器打开文件。
一般模式(指令模式):默认模式,用vi打开一个软件以后自动进入到此模式。
编辑模式:一般模式中无法编辑文件,要编辑文件就要进入编辑模式,按下“i、I、a、A、o、O、s、r”等就会进入到编辑模式。一般按下“a”进入编辑模式。按下ESC键可退出编辑模式。
命令行模式(底行模式):先进入到一般模式,然后输入:、/、?这三个中的任意一个就可以进入到命令行模式。
/xxx,表示在文件中查找xxx
三、保存退出
当文件编辑好以后,输入:wq来保存退出。:q退出,:q!不保存退出,:w保存。
四、其他操作方式
1、按下键盘上的上下左右键来控制光标。
一般模式下:
1、dd,删除光标所在行,ndd,删除光标所在行及其下n行。
2、u,撤销,恢复上一步。
3、. ,重复前一个操作。
4、yy,复制光标所在行
5,nyy,复制光标所在向下n行,比如10yy就是复制光标下10行。
6,p和P,p为复制到光标下一行,P复制到光标上一行。
### 第15讲 Linux C编程
### 第18讲 shell脚本入门
一、什么是shell脚本
我们已经能够熟练的在终端中输入命令来完成一些常用的操作,但是我们都是一条一条输入命令。这样会很麻烦,那么有没有一种方式可以将很多条命令放到一个文件里面,然后直接运行这个文件即可?肯定有,这个就是shell脚本!
shell脚本类似windows的批处理文件,shell脚本就是将连续执行的命令写成一个文件。
shell脚本提供数组、循环、条件判断的等功能。shell脚本一般是Linux运维或者系统管理员要掌握的,作为嵌入式开发人员,只需要掌握shell脚本最基础的部分即可。
二、shell脚本写法
shell脚本是个纯文本文件,命令从上而下,一行一行的开始执行。shell脚本扩展名为.sh。
shell脚本第一行一定要为:
#!/bin/bash
表示使用bash。
三、shell脚本语法
3.1第一个shell脚本
3.2、交互式shell脚本
read。
3.3shell脚本的数值计算
shell仅支持整形,数值计算使用$((表达式))。
3.4、test命令
test命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。
&&和||命令:
cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。
cmd1 || cmd2 当cmd1执行完毕并正确,那么cmd2不执行,反之cmd2执行。
3.5中括号[]判断符
[ ] ==或 !=
3.6默认变量
$0~$n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0
$#:#表示最后一个参数的标号。
$@:表$1、$2、$3......
一、shell脚本条件判断
shell脚本支持条件判断,虽然可以通过&&和||来实现简单的条件判断,但是稍微复杂一点的场景就不适合了。shell脚本提供了if then条件判断语句,写法
if 条件判断 ; then
//判断成立要做的事情
fi
还有if then else 语句,写法
if 条件判断 ; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
或:
if 条件判断 ; then
//条件判断成立要做的事情
elif [条件判断]; then
//条件判断成立要做的事情
else
//条件判断不成立要做的事情。
fi
最后还有case语句
case $变量 in
“第1个变量内容”)
程序段
;; //表示该程序块结束!!
“第2个变量内容”)
程序段;;
“第n个变量内容”)
程序段
;;
esac
二、shell脚本函数
shell脚本也支持函数,函数写法如下:
function fname () {
//函数代码段
}
三、shell循环
shell脚本也支持循环,比如 while do done,表示当条件成立的时候就一直循环,直到条件不成立。
while [条件] //括号内的状态是判断式
do //循环开始
//循环代码段
done
还有另外一种until do done,表示条件不成立的时候循环,条件成立以后就不循环了,写法如下:
until [条件]
do
//循环代码段
done
for循环,使用for循环可以知道有循环次数,写法
for var in con1 con2 con3……
do
//循环代码段
done
for循环数值处理,写法
for((初始值; 限制值; 执行步长))
do
//循环代码段
done