Linux历史:
一、历史了解
丹利斯*里奇 C语言的创造者
李纳斯 Linux内核的创造者
二、linx体系架构
linux内核
shell
文件系统
实用程序
三、操作系统
思考:操作系统的作用是什么?
答:合理的管理和分配资源(硬件资源:CPU,ARM和其他外设,软件资源:进程,线程,应用程序)
PC:
检测硬件
BIOS自检
| 初始化内存
|
引导程序
|
|
OS启动
|
|
应用程序
ARM开发板
BOOTleader 初始化我们的硬件设备
|
|
引导程序
|
|
引导内核
|
|
系统初始化(init进程)
|
|
用户登陆
使用小技巧:ctrl + alt + F1-F6 进入命令界面
crlt + atl + F7 切换回图形界面
vimtutor zh 进入vim中文阅读手册
四、vi编辑器的三种模式
1、命令模式:vi默认进入的模式
h———–光标左移
j———–光标下移
k———–光标上移
l———–光标右移
2、插入模式:我们可以编写我们的数据
i——–光标前插入
a——–光标后插入
o——–下一行插入
3、底行模式:对文件进行保存,退出
w——write 可理解为保存
q——quit 退出
a——all 所有的文件
!——- 强制执行
常用:wq 保存和退出
q! 强制退出
wqa 保存所有的文件
x 相当于wq 保存和退出。
练习:写一个程序1+2+3…+10的和,要求用h,j,k,l进行移动
四、vi使用方法
详见《vi使用进阶》
五、ubuntu 软件包管理机制
a.deb软件包格式
Deian,ubuntu
b.rpm软件包格式
RedHat
命名规范:例如:sl_3.0.3-16_i386.deb
软件包名:sl
版本号:3.0.3
修正版本号:16
可用平台:i386
包类型:deb
1、dpkg软件包管理[本地安装]
特点:
(1)不会检查软件包之间的依赖关系,需要手动安装
A.安装软件
sudo dpkg -i 软件包(iptux-3.0.8-13-i386.deb)
或
sudo dpkg -i *.deb [多个软件包一起安装]
B.卸载软件
sudo dpkg -r 软件包名(iptux)
C、清除已经安装的软件包及其配置文件
sudo dpkg -P 软件包名
D、列出软件包所在系统的安装的文件
sudo dpkg -L 软件包名
2、apt-get软件包管理
特点:(1)支持在线安装(本质:先把软件下载先来,然后在安装)
(2)会检查软件包之间的依赖关系,并且会将依赖的软件包一起下载下来安装
三个特殊路径:
/etc/apt/source.list[file]—>镜像站点服务器(可以立即成软件包下载下来的网站)
/var/lib/apt/lists[dir] —>索引文件(可以理解成我们软件下载具体内容的在本地的缓存)
/var/cache/apt/archives[dir] —-> 下载下来的软件包存放的地方
原理讲解:我们使用apt-get命令下载文件的时候,默认是在镜像站点服务器的索引文件搜索我们软件
一些信息,当搜索到我们软件的信息之后,就到我们的镜像站点服务器对应的网址中
下载我们需要的软件,把软件下载完成之后,就存放到我们的/var/cache/apt/archives。
并且安装该软件。
A.安装软件
sudo apt-get install 软件包名(sl)
B.卸载软件
sudo apt-get remove 软件包名
C.更新索引文件
sudo apt-get update
D.清空存放下载软件包的目录
sudo apt-get clean
六、Linux基础命令(必须记住)
详见<<1.linux基础命令.txt>>
文件系统简介
/
| | | |
etc dev bin home
|
test.c
绝对路径:以根目录为起点,依次向下递增。
相对路径:以当前目录为起点
vi /etc/test.c
Linux基础命令:
一、常用基本命令了解(必记)
<1>ls 显示当前目录下的文件及目录
参数:
-a 显示所有的文件,包括隐藏文件(以.开头的文件)
-l 显示当前目录下的文件及目录属性
-lh 显示当前目录下的文件及目录属性,并且K,M,G为单位显示文件大小
<2>pwd 显示当前工作目录所在的绝对路径
<3>cd 切换工作目录
常用:
cd + 回车 切换到用户主目录
cd + 路径名称 切换到指定路径下面
例如:cd /home/chw/work
cd .. 切换到上一层目录
cd ~ 切换到用户主目录
cd – 切换到前一个工作目录
<4>mkdir 新建一个目录
常用:
a.在当前目录下新建一个目录
mkdir /home/chw/dir
b.在当前目录下递归创建多个目录
mkdir -p /home/chw/one/two/three
<5>cp 拷贝源文件或者目录到指定路径
常用:
a.将普通文件拷贝到指定的路径
sudo cp /mnt/hgfs/share/test.c /home/chw
b.将目录拷贝到指定的路径
sudo cp /mnt/hgfs/share/dir /home/chw -a
c.实现备份的功能,将源文件备份一次
sudo cp test.c test_bak.c
d.实现备份的功能,将目录备份一次
sudo cp dir dir_bak -a
练习:1、在用户主目录递归创建one/two/three 三个文件夹 /home/ubuntu
2、在用户主目录写一个hello.c
3、在用户主目录新建一个test文件夹,并把hello.c移动到test文件夹中
4、把test文件夹备份成test_farsight
5、把test_farsight文件夹复制到/home/ubuntu/one/two/three 该文件夹下
cd /home/ubuntu
mkdir -p one/two/three
vi hello.c
mkdir test
cp hello.c test
cp test test_farsight -a
cp test_farsight /home/ubuntu/one/two/three -a
<5>touch 新建文件
常用:
touch test1.c test2.c test3.c
<6>cat 显示文件的内容
常用:
cat /home/chw/test.c
参数:-n 加行号来显示内容
cat -n /home/chw/test.c
<7>mv 移动源文件或者目录到指定的位置
常用:
a.将普通文件移动到指定位置
mv /home/chw/test.c /mnt/hgfs/share
b.将文件实现重命名的功能
mv test.c hello.c
c.将目录实现重命名的功能
mv dir dir_list
<8>rm 删除一个或者多个文件或目录,物理删除,不可恢复
常用:
rm test.c
参数:
-r 删除目录文件
-f 强制删除
例如: 删除当前目录下的hello.c文件
rm -rf dir_list
<9>file 查看文件的类型
例如:
a.查看普通文件类型
file test.c
b.查看目录的类型
file dir_list
作业:
1.将/etc/passwd文件拷贝到用户主目录(例如:/home/ubuntu)
2.将用户主目录下的passwd文件备份为passwd-bak
3.在用户主目录下新建目录test_dir
4.将passwd-bak移动到test_dir目录下
5.将test_dir目录下的passwd-bak文件改名为passwd
6.将test_dir目录拷贝到你的用户主目录的Desktop目录下(例如:/home/ubuntu/Desktop)
7.将Desktop目录下的test_dir目录改名为dir
Vi编辑器的三种模式:
一、简介
Vi编辑器是一个命令行编辑器,类似于我们windows下的记事本。它有以下三种模式。
<1>命令模式:vi界面默认进入的模式,可以输入命令来执行多种功能。例如:光标的
移动,字符、行的移动等。
当有文本中有内容的时候,在命令模式下:
h——-表示光标向左移动
l——-表示光标向右移动
j——-表示光标向下移动
k——-表示光标向上移动
<2>插入模式(编辑模式):输入我们文本内容。在命令模式下一般按下以下三个键之
一就进入了我们的插入模式。按下esc键回到命令模式。
i————>光标前插入
a———–>光标后插入
o———–>下一行插入
<3>底行模式: 将写好的文件保存或者退出。也可以执行其他的操作。
按下”esc”键进入命令模式,在命令模式下,
按下shif + “:” 就进入了我们的底行模式。
(注:由于都与我们的命令模式有关,在有的书籍中把底行模式也划入命令模式中。)
常用:在底行模式下 w———>保存文件(write的缩写,我们这里理解为保存)
q———->退出文件(quit的缩写,即退出的意思)
!———–>强制执行(有些权限无法退出,需要用到它)。
Vi使用进阶:
以下命令均在vi命令模式有效
h 光标左移一个字符
l 光标右移一个字符
j 光标下移一行
k 光标上移一行
一.对整行操作
1.复制光标所在行 yy
粘贴光标所在行 p(注:是在当前行的下一行粘贴)
2.删除光标所在行 dd
3.选中光标所在行 shift + v
结合j k选取多行
4.复制选中内容 y
5.粘贴选中内容 p(向光标所在行的下一行粘贴)
shift + p(向光标所在行的上一行粘贴)
数字 + p 指定粘贴次数
6.剪切选中内容 x
可当退格键使用,删除光标处字符
7.撤销上次操作 u
作业:1、大家自己来写一个hell.c
2、利用组合键来复制和粘贴5行 printf("hello world!\n");这一项
3、第二个printf要求输出hello
4、第三个printf要求输出world!
二.对单词操作
8.选取几个字符 v 结合h l选择
9.粘贴选中内容 p(注意此时我们是在光标的当前行粘贴)
10.替换单个字符 r+要替换字符
11.替换多个字符 R+要替换字符 Esc结束替换
12.查找字符串
/向下查找字符串
?向上查找字符串
*查找当前光标处单词
n下一个匹配的字符串
N上一个匹配的字符串
取消高亮 :nohls
13.替换字符串
:m,n s/oldstring/newstring/g
:.,$ s/oldstring/newstring/g
:%s/oldstring/newstring/g
m,n 指定替换从m行到n行
. 表示光标当前行
$ 表示文件最后
g 替换所有找到字符串,若无g则只替换每行找到的第一个字符串
% 表示所有的行
作业:1、大家自己写一个“my name is XX”,然后输出
2、利用替换字符串符号来把XX替换成自己的名字。
14.定位到某行
<1>打开文件后定位到某行
:行号
<2>在打开文件的时候定位到某一行
vi 文件名 +行号
例如: vi hello.c +3
terminal 快捷键
15.另开一个终端(默认进入了当前目录) ctrl + shift + n
16.当前终端再开一个终端(默认进入用户目录/home/用户名) ctrl + shift + t
Ubuntu软件包详解:
一、简单介绍
Ubuntu Linux采用了Debian的软件包管理机制。由于软件包具有易用性、灵活性和扩展性的特点,再加上再加上Internet的支持,使用户随时都能拥有最新的 Ubuntu系统,这也是Ubuntu受到推崇的一个重要原因。因而,Deb软件包管理也成为Ubuntu中最有活力的部分。本章将介绍ubuntu软件包管理器。
二、目前流行的两种软件包管理机制
最初,基于Linux系统的开发者在完成应用程序的开发之后,将很多的二进制文件发送给用户。因此,Debian Linux首先提出“软件包”的管理机制——Deb软件包,将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用 户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。
随即,Redhat Linux基于这个理念推出了自己的软件包管理机制——Rpm软件包。当然,Redhat Linux采用了自己的打包格式生成Rpm包文件,由Rpm包管理器负责安装、维护、查询,甚至软件包版本管理。由于Redhat Linux系统的普及,Rpm软件包被广泛使用,甚至出现第三方开发的软件管理工具,专门管理Rpm格式的软件包。
ubuntu Linux系统的软件包管理机制延续了Debian的包管理方法。
三、目前流行的两种软件包管理机制
<1>简介
Debian包文件包含了二进制可执行文件、库文件、配置文件和man/info帮助页面等文档。通常Debian包文件的后缀为.deb,因此称为“Deb软件包”。Ubuntu有两种类型的软件包:二进制软件包(deb)和源码包(deb-src)。
● 二进制软件包(Binary Packages):包含可执行文件、库文件、配置文件、man/info页面、版权声明和其他文档。
● 源码包(Source Packages):包含软件源代码、版本修改说明、构建指令以及编译工具等。先由tar工具归档为.tar.gz文件,然后再打包成.dsc文件。
注:我们可以在/etc/apt/source.list中来查看我们的两种包类型
打开之后的页面,
二进制/源码包 访问的地址 ubuntu发行版本的一种 软件包组件
这里的deb就是我们的二进制包,这里的deb-src就是我们的源码包.
<2>软件包的命名规则
在Ubuntu Linux中,软件包的命名遵循以下约定:
例如:
软件包名: g++
软件版本:4.1.2
修正版本:9
体系架构:i386
包类型:deb包
软件包:g++_4.1.2-9ubuntu2_i386.deb
<2>软件包的安装工具简介
(1)dpkg软件包管理(本地安装)
1.1概念了解
我们常常使用的软件包管理工具有两种,一种叫做dpkg软件包管理工具,它是”debian package”的简写,是Debian软件包管理器的基础。它是最早的deb软件包管理工具,他在Debian Linux一提出软件包管理模式后就诞生了。使用dpkg可以实现软件包的安装、编译、卸载、查询,以及应用程序打包等功能。但是由于当时Linux系统规模 和Internet网络条件的限制,我们使用dpkg安装软件包的时候需要考虑软件包之前的依赖关系。也有人把它叫做本地安装工具。总之,dpkg是一个底层的软件包管理系统,主要用于对已下载到本地和已安装的软件包进行管理.
图1.1 软件包依赖关系
基于这个特性,我们的dpkg安装一般来说有可能要安装多个软件包。而我们linux系统中的依赖关系相对复杂,因此就定义了一个依赖关系表。
图1.2 依赖关系表
既然有了依赖关系,那么我们肯定会安装多个软件包,那么哪个软件包先安装,那个软件包后安装呢?于是,这里就又有了一个叫做优先级的说法。Ubuntu中为每个软件包指定了一个优先级,作为软件包管理器选择安装和卸载的一个依据。下图中有关于优先级的描述。
1.2dpkg命令详解
特点:不会检查软件包之前的依赖关系。故可能安装多个软件包。
A.安装软件
sudo dpkg -i 软件包 [安装单个软件包]
或者
sudo apkg -i *.deb [多个软件包一起安装]
例如:sudo dpkg -i nano_2.2.6-1_i386.deb
B.移除已经安装的软件包
sudo dpkg -r 软件包名
例如:sudo dpkg -r nano
C.移除已安装的软件包及配置文件
sudo dpkg -P 软件包名 移除已安装的软件包及配置文件
D.列出软件包在系统所安装的文件
sudo dpkg -L 软件包名
E.列出软件包安装状态
sudo dpkg -s 软件包名
(2)apt-get软件包管理(联网安装)
1)镜像站点服务器
APT系列工具可能是Deb软件包管理工具中功能最 强大的。它会自动检测软件包之间的依赖关系。因为它采用了集中式的软件仓库的机制,将各式各样 的软件包分门别类地存放在软件仓库中,进行有效地组织和管理。然后,将软件仓库置于许许多多的镜像服务器中,并保持基本一致。(可理解为我们上网的时候,有很多的网站,网站中有一些下载的链接,这里下载的链接中就又很多的软件包,这就是软件包仓库,这里的镜像站点服务器可理解为下载的网站)。这些镜像服务器就是它们的软件源(下载网站的集合)。
我们可以在/etc/apt/source.list中来查看我们的软件源。这个路径就叫做镜像站点服务器
内容如下:
2)索引文件
我们的镜像站点服务器只是告诉了我们。我们的软件包应该在哪里去下载。但是我们这些镜像站点具体拥有哪些资源,对我们来说,不是很清楚。如果,我们每安装一个软件包就到我们的服务器上去寻找一遍,这样的话效率就太低了。因此,我们提出了一个概念,叫做索引文件。它的本质就是我们为服务器上的软件资源在本地列了一个清单,以便于主机进行查询操作。(可理解为网站服务器在本地的缓存)。
我们可以在/var/lib/apt/lists/ 这个目录来查看
3)下载软件包存放的路径
我们在windos上下载软件的时候,一般是会把.exe的安装包下载到一个指定的路径,然后双击它进行安装。我们的ubuntu也是一样的。只不过这个下载路径是固定的。
我们可以到/var/cache/apt/archives这个目录下来查看我们的软件包
4)安装命令
A.安装软件
sudo apt-get install 软件包名(sl)
B.卸载软件
sudo apt-get remove 软件包名
C.更新索引文件
sudo apt-get update
D.清空存放下载软件包的目录
sudo apt-get clean
总结:三个重要的路径
/etc/apt/sources.list [文件] -> 镜像站点服务器地址(可以理解成软件包的下载网站)
/var/lib/apt/lists [目录] -> 每个镜像站点软件包的索引文件(可以理解成我们软件包下载 网站具体内容的缓存,例如:软件版本,软件名等等)
/var/cache/apt/archives [目录 ] -> 下载下来软件包存放路径
原理:我们使用apt-get命令下载文件的时候,默认是在镜像站点软件包的索引文件中查找该软件的一些信息,当我们找到索引文件中的软件信息之后,就进入了我们的镜像站点服务器地址来下载我们需要的软件,下载的文件存放在/var/cache/apt/archives目录下。