物联网技术部第五次培训
0.VMware安装Ubuntu详细步骤
1.操作系统简介
1.1 操作系统
讲: 操作系统就是一种特殊的软件
作用:
- 直接操作硬件
- 把操作硬件的代码封装成一个个系统调用,供用户通过应用程序间接地调用硬件。
1.2 不同应用领域的主流操作系统
- 桌面操作系统
- 服务器操作系统
- 嵌入式操作系统
- 移动设备操作系统
1.2.1桌面操作系统:
- windows 1. 用户群体大 2. 不是特别稳定
- mac 适用于开发人员
- linux应用软件少
1.2.2服务器操作系统:
- linux安全、稳定、免费、占有率高
- windows server 付费、占有率低
简单讲: 服务器就是一个硬件,通常通过远程控制来维护
1.2.3嵌入式操作系统:
- linux 内核小、开源
1.2.4移动设备操作系统:
- IOS
- android(基于linux)
2.操作系统的发展历史
2.1 Unix
1965年之前,电脑并不像现在一样普及,他可不是一般人能消费得起,除非是或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘、显示器),连接一台电脑
为了解决数量不够用的问题
-
1965年左右由 贝尔实验室 加入了 麻省理工学院 以及 通用电气 合作的计划–该计划要建立一套 多使用者(multi-user)、多任务(multi-processor)、多层次(multi-level)的 MULTI 操作系统、想让大型机支持300台终端
(多任务:多个用户同一时间登入到同一电脑上使用的操作系统)
-
1969年项目进展缓慢、资金短缺、贝尔实验室推出了研究
-
1969年从这个项目中退出的 Ken Thompson 当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行(Space Travel)”游戏,在8月份左右乘着其妻子探亲的时间、用了1个月的时间,使用汇编写出了 Unix操作系统 的原型
-
1970年,美国贝尔实验室的 Ken Thompson ,以 BCPL 语言为基础、设计出很简单且很接近硬件的 B语言(取BCPL的首字母),并且用 B语言 写出了第一个操作系统
-
1971年,同样酷爱“星际旅行”的 Dennis M.Ritchie 为了能早点儿玩上游戏,加入了 Thompson 的开发项目,合作开发 Unix ,他的主要工作是改造 B语言 ,因为 B语言 的跨平台性较差
-
1972年,Dennis.M.Ritche 在 B语言 的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是 C语言
-
1973年初, C语言 的主体完成, Thompson 和 Ritchie 迫不及待地用它完全重写了现在大名鼎鼎的 Unix操作系统
肯尼思·汤普森和丹尼斯·里奇
2.1.1 c语言
- 在把 UNIX 移植到其他类型的计算机上使用时, C语言 强大的移植性在此显现
- 而 C语言 程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的 C语言编译器 和库、然后将C源代码编译、连接成目标二进制文件之后即可运行
2.1.2 UNIX图谱
2.2 Minix
- 因为AT&T(通用电气) 的政策改变,在Version 7 Unix 推出之后,发布新的使用条款,将UNIX源代码私有化、在大学中不再使用UNIX源代码
- Andrew S.Tanenbaum(塔能鲍姆) 教授为了能在课堂上教授学生操作系统运作的细节,决定在不使用AT&T源码的前提下、自行开发与UNIX兼容的操作系统、以避免版权上的争议
- 以小型UNIX(mini-UNIX) 之意,将它命名为MINIX
2.3 Linux
- 1991 年林纳斯(Linus) 就读于赫尔辛基大学期间,对Unix产生浓厚兴趣、尝试在Minix上做一些开发工作
- 因为Minix只是教学使用,因此功能并不强、林纳斯经常用他的终端仿真器去访问大学主机上的新闻组和邮件,为了方便读写和下载文件,他自己编写了磁盘驱动程序和文件系统,这些在后来成为了Linux第一个内核的雏形,当时,他年仅21岁!
- 林纳斯利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核,一开始Linux并不能兼容Unix
- 即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致
- 一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件
林纳斯
3.Linux内核及发行版
3.1 Linux 内核
内核 是系统的心脏,是运行程序和管理像磁盘和打印机硬件设备的核心程序,它提供了一个裸设备与应用程序间的抽象层
3.2 Linux 发行版本
-
Linux发行版通常包含了包括桌面环境,办公套件,媒体播放器,数据库等应用软件
-
常见的发行版本如下:
- Ubantu:多年来,得益于 Canonical 和开源社区的支持,Ubuntu 已经成为 Linux 桌面场景的一大亮点。由于其受欢迎程度和持续发展,这个 Debian 衍生物在云和服务器应用程序中被大量使用。它也有多种风格来满足人们的不同需求。LTS 版本提供了良好的体验,可以快速解决问题。 Ubuntu 也支持流行的 .deb 包管理系统。
- Redhat
- CentOS
4.Linux终端命令
4.1 终端命令基本格式
一个命令由命令名、选项、参数组成,其基本格式为command [-options] parameter
- command : 命令名
- [-options]: 选项,可省略
- parameter: 传给命令的参数
4.2 终端热键使用技巧
Tab
键补全名称↑
/↓
曾经使用的命令来回切换ctrl
+c
退出当前命令
4.3 查看目录命令
ls 是list的简写,列出文件夹目录
4.3.1 Linux下文件和目录的特点
- Linux 文件 或者 目录 名称最长可以有 256 个字符
- 以 . (点)开头的文件为隐藏文件, 需要用 -a 参数才能显示
- .(点) 代表当前目录
- …(两个点) 代表上一级目录
4.3.2 ls常用选项
参数 | 含义 |
---|---|
-a | 显示指定目录下所有子目录与文件,包括隐藏文件 |
-l | 以列表方式显示文件的详细信息 |
-h | 配合 -l 以人性化的方式显示文件大小 |
4.3.3 通配符的使用
含义 | 含义 |
---|---|
* | 代表任意个数个字符 |
? | 代表任意一个字符,至少一个 |
[] | 表示可以匹配字符组中的任意一个 |
[abc] | a或b或c |
[a-f] | a到f范围任意一个字符 |
Tips: 其实就是类似正则表达式的用法 (命令 : ls *1.text => 就是1结尾的所有text文件)
4.4 切换目录
4.4.1 cd命令
cd 是英文单词 change directory 的简写, 其功能为更改当前的工作目录
使用方法:cd 路径
Tips: Linux 所有的目录 和 文件名都是大小写敏感的
4.4.2 绝对路径和相对路径
相对路径 在输入路径时, 最前面不是 / 或者 - ,表示相对当前目录 所在的目录位置
绝对路径 在输入路径时, 最前面是 / 或者 - ,表示从 **根目录/家目录 **开始的具体目录位置
4.5 创建和删除操作
4.5.1 touch命令
创建文件或者修改文件时间 (文件不存在,则创建若存在 ,则修改末次时间)
4.5.2 mkdir命令
创建一个新的目录
选项 | 含义 |
---|---|
-p | 可以递归创建目录 |
4.5.3 rm命令
删除文件或者目录
选项 | 含义 |
---|---|
-f | 强制删除, 忽略不存在的文件, 无需提示 |
-r | 递归地删除目录下的内容, 删除文件夹 时必须加此参数 |
Tips:rm -rf /* 删库跑路咯
4.6 拷贝和移动文件
命令 | 对应英文 | 作用 |
---|---|---|
tree[目录名] | tree | 以树状图列出文件目录结构 |
cp 源文件 目标文件 | copy | 复制文件或目录 |
mv 源文件 目标文件 | move | 移动文件或者目录 / 文件或者目录 |
4.6.1 tree命令
- tree 可以以树状图列出文件目录结构
- tree -d 只显示目录
Tips:tree ~表示家目录中所有文件
4.6.2 cp命令
cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中 ,相当于DOS 下的 copy 命令
选项 | 含义 |
---|---|
-f | 已经存在的目标文件直接覆盖, 不会提示 |
-i | 覆盖文件前提示 |
-r | 若给出的源文件是目录文件, 则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须是一个目录名 |
4.6.3 mv命令
mv 命令可以用来 移动文件 或 目录 , 也可以给 文件或目录重命名
选项 | 含义 |
---|---|
-i | 覆盖文件前提示 |
4.7 查看文件内容
命令 | 对应英文 | 作用 |
---|---|---|
cat 文件名 | concatenate | 查看文件内容,创建文件,文件合并,追加文件内容等功能 |
more 文件名 | more | 分屏显示文件内容 |
grep 搜索文本文件名 | grep | 搜索文本文件内容 |
4.7.1 cat命令
cat 命令具有 查看文件内容、创建文件、追加文件内容 等功能
- cat用于查看文件内容:
- cat 会一次显示所有的内容, 适合 查看内容较少 的文本文件
选项 | 含义 |
---|---|
-b | 对非空输出行编号 |
-n | 对输出所有行编号 |
- cat用于创建文件:
cat 文件名 >>结束标志
,我们当然可以仅用cat >文件名,然后Ctrl + C退出bash
-
cat用于清空文件内容(覆盖):如果我们想清空文件内容,可以直接输入结束标记,这样便向文件中写入0字符,文件即被清空了
-
cat也可以用来追加文件内容,用法为:
cat >>文件名 <<结束标志
,这里面关键是两个追加符号
4.7.2 more命令
- more 命令可以用于分屏显示文件内容, 每次只显示一页内容
- 适合于 查看内容较多的文本文件
操作键 | 功能 |
---|---|
空格键 | 显示手册页的下一屏 |
回车键 | 一次滚动手册的一行 |
b | 回滚一屏 |
f | 前滚一屏 |
q | 退出 |
4.7.3 grep命令
- Linux 系统中 grep 命令是一种强大的文本搜索工具
- grep 允许文本文件进行 模式查找, 所谓模式查找, 又被称为正则表达式,
选项 | 含义 |
---|---|
-n | 显示匹配行及行号 |
-v | 显示不包含匹配文本的所有行(相当于求反) |
-i | 忽略大小写 |
参数 | 含义 |
---|---|
^a | 行首, 搜寻以a 开头的行 |
b$ | 行位, 搜寻以b 结束的行 |
4.8 打包与压缩
4.8.1 打包与解包
打包压缩 是日常工作中备份文件的一种方式
在不同操作系统中, 常用的打包压缩方式是不同的
- Windows 常用 rar
- Mac 常用 zip
- Linux 常用 tar.gz
tar
命令如下:
-
打包文件:
tar -cvf 打包文件名称.tar 被打包的文件 / 路径
-
解包文件:
tar -xvf 打包文件.tar
选项 | 含义 |
---|---|
c | 生成档案文件,创建打包文件 |
x | 解开档案文件 |
v | 列出归档解档的详细过程,显示进度 |
f | 指定档案文件名称, f 后面一定是 tar 文件, 所以必须放选项最后 |
提醒: f 选项必须放在最后, 其他选项顺序可以随意
4.8.2 压缩与解压缩
要点:
tar
命令负责打包与解包,gzip
命令负责将打包后的文件压缩与解压缩tar
打包后的文件的扩展名为.tar,gzip
压缩后文件的扩展名为.tar.gztar
命令中有个选项-z
可以调用gzip
,从而可以实现压缩和解压缩的功能
压缩与解压缩的两种实现方式:
- 压缩文件:
tar -zcvf 打包文件名.tar.gz 被压缩的文件 / 路径
gzip 打包文件名.tar.gz 被压缩的文件/路径
- 解压缩文件:
tar -zxvf 打包文件.tar.gz
gzip -b 打包文件.tar.gz
- 解压到指定路径:
tar -zxvf 打包文件.tar.gz -C 目标路径
Tips:linux中的压缩文件除了.gz文件,还有.bz2、.zip文件等,都有相应的压缩与解压缩的命令
5.用Linux编写c语言程序
Ubuntu自带gcc编译器且已经配置好了环境变量,我们可以使用gcc -v
这个命令查看gcc的版本信息
c语言源文件需要经过编译、汇编、连接后形成产生可执行文件
- Win:源文件(.c文件)-> 目标文件(.obj文件) -> 可执行文件(.exe文件)
- Unix:源文件(.c文件)-> 目标文件(.out文件)
Linux编写C语言:
- 编写源文件(注意扩展名一定是c)
- 编译文件:
gcc 源文件名.c
- 运行可执行文件:
./a.out