一 linux简介
1.linux历史:
1969 ---- unix 1991---Linux 林纳斯·本纳第克特·托瓦兹
GNU-----组织 (GNU IS NOT UNIX)-----软件(GCC MAKE)
红旗linux ---中国(生态链太弱了)
SUSE ------- 德国 (界面漂亮)
open suse 操作系统
redhat---红帽----企业版本(做服务器使用)稳定度高
---fadroa(个人使用,免费)
debian---(组织:最遵循于标准协议的系统)
----CentOS (服务器,付费)
----centos(个人版本停止更新)
----ubuntu (个人)
ucos: 特殊的linux系统,没有mmu模块,没有内存处理模块(系统代码量小,适合嵌入式系统)
重点: 在linux中一切皆文件。
2.linux特点:
免费;开源;稳定;速度快;多用户多任务;安全;软件库多;
二.linux体系结构 (重点)
第一个部分: 用户空间
分为:命令、程序、脚本
分为: shell
第二个部分: 内核空间(不允许用户直接操作)
系统调用
内核模块
3.vm的使用
开机:点击绿色箭头,
关机:点击两个竖线挂起或者点击黄色正方形关机,不允许点击右上角x
虚拟机:模拟一台机器,方便使用。占用硬件资源。
硬件设置: xxxx
ctrl + alt +移动鼠标
三.shell命令
1.shell(贝壳):他是linux的内核保护工具,用来做用户和内核之间的交互的(翻译工具)
2.终端:字符设备,是一个模拟器,用啦编写命令
3.关机命令:shutdown -t now (重点)
命令组成: 指令 选项 参数
注意: 指令是必备,选项和参数可有可无,并且可以以后多少个选项 也可以有多个参数。
提示符:student@student-machine: ~ $
用户名 主机名 当前目录 提示符(普通用户$,root用户提示符是#)
补充1:root为超级用户,相当于windows下的管理员
补充2:一行有多个命令,用分号隔开,如果命令一行写不完需要续航,用斜杠换行符。
补充3:当输入一个或多个字母后,按tab键会自动补齐剩下部分。
补充4:如果想查看历史命令,用键盘上下键或者history命令。
四、linux文件系统 (重点--面试)
linux的文件系统:文件在存储设备的组织方式。
1.EXT系统: ubuntu中普遍使用的EXT4(1T)
2.NTFS系统: windows目前的文件系统(2T)
3.VFAT系统: windows下的文件系统,fat32:(U盘)最大支持4G文件。
4.iso9660文件系统:光盘文件系统,包括*.iso文件。(PE安装)
5.NFS系统:linux的网络文件系统(windows中的共享目录)
五、vim的使用
vim:是一个编辑器,相当于windows的记事本。全程用命令
在编写c语言-系统编程-c++--系统移植--驱动编程 都要使用
1.安装vim :sudo apt-get install vim
2.进入vim: vi+ 文件名 (如果文件存在则打开,不存在则创建)
3.三种模式:
命令模式:刚进入vim是命令行模式。
插入模式: 输入i ,o ,a进入到编辑模式,按下ESC进入命令模式
底行命令:由命令模式输入冒号进入底行命令模式
4.进入插入模式:
i : 在光标前输入内容
I: 在当前行行首输入
o:当前行重启下一行输入
O:当前行重启上一行输入
a:当前光标的后一个位置插入
A:在当前行末尾插入
5.命令模式下的命令
dd------- 删除当前行
u---------撤销最后一次操作
ctrl+r---- 重做,也是回复撤销的动作
end------光标移动到当前行末尾
home----光标移动到当前行行首
yy--------复制一行,复制两行 2yy
p---------粘贴一次,如果需要粘贴两次则2p
gg--------到文件行首第一个字母
G---------到当前文件最后一行行首
x -------- 删除光标所在的字符
dw------- 删除一个单词
y$--------复制当前光标当当前行末尾的内容
6.底行命令模式
/关键词---在文件中查找关键字。部分匹配。n是往下查找,/good 则在文件中查找有good字眼的文字。gooda也是匹配的。
/\<关键字\> 在文件中查找关键字,完全匹配。 /\<good\> 其中gooda不匹配,只有good才匹配。
:wq------保存文件退出
:q!----- 强制退出
:q -------直接退出
:w ------保存 (相当于ctrl + s
:x ------ 保存退出
:set number (:set nu) 给vim设置行号
: set nonumber 给vim取消行号
: vsplit --- 设置垂直分屏
: split --- 设置水平分屏
:set ai sw=8 设置缩进为8空格
练习:删除光标到当前行行首的内容 d+ <home>
删除当前光标到文件首的内容 dgg
删除当前光标到最后一行内容 dG
7.补充:vim非正常退出,会产生swp文件,会影响到c程序的编译,直接通过rm .xxx.swp 删除临时文件。
五、linux文件类型
0 前奏:ls -l 或者 ll
打印当前目录下文件的详细信息
格式: drwxrwxr-x 3 student student 4096 7月 2 23:05 day01
1.文件类型 (第一个字母)
普通文件: -开头,表示普通的二进制文件,可执行文件,字符文件
目录文件: d开头,相当于windows下的文件夹
链接文件:l开头,相当于windows下的快捷方式
软连接:xxx
硬链接:xxx
2.设备文件:用来表示某一个设备,设备文件放在/dev
c开头,表示字符设备文件
b开头,块设备,比如说硬盘sda
s开头,套接字设备(网卡) socket
p开头,管道设备。
3.字符设备:console---终端设备
null--------空设备-3-6
mouse1---鼠标
event4----键盘设备
tty0~20--串口设备
4.补充:ROM:只读内存,只能读出事先存储的内容的存储器,断电不丢失(可以安装多少程序)
RAM:运行内存,可读可写,断电会丢失内容(手机同时运行多少程序)
六、文件访问权限
1格式: d rwxrwxr-x 3 student student 4096 7月 2 23:05 day01
2权限: rwx rwx r-x 分成3组,第一组是创建者权限(u),第二组是 组员权限(g) 第三组是 其他人权限(o)
3.解释: r 是可读权限(read) w是可写权限(write) x是可执行权限(excute) -表示没有此权限
---rw-r-x : 创建者不可读不可写不可以执行,同组只有读写权限,其他人读和执行权限
4.表示: 字符表示:rwx r-x r--
绝对表示:111 101 100 用8进制表示:754
文件创建默认权限 rw-rw-r-- 是110 110 100 则是664
目录创建默认权限 rwxrwxr-x 是111 111 101 则是775
5.第十一个字母
如果当前详细信息是目录(day01),则3表示有3个子目录
如果当前详细信息是文件(danny.c) 则1表示有几个链接。
6.ls-l格式中剩下部分
第一个student:创建者
第二个student:当前文件放在哪个组中
第三个4096: 表示文件大小
第四个7月xx: 表示最后的修改时间
第五个day01: 表示文件名
7.补充:在windows下复制 ctrl +c 在linux下复制 ctrl+shift +c
在windows下粘贴:ctrl+v 在linux下粘贴 ctrl+shift+v
在windows下锁屏 win+L 保存 ctrl+s 撤销 ctrl+z 全选 ctrl+a ; 查找 ctrl+f ; 剪切 ctrl+x
七、linux系统目录结构
1.linux的目录结构是树状结构(只有一个根目录 /),在windows是森林结构,有多个盘符
2.根目录/下有很多一级子目录
1> /bin 用来存放命令文件 如ls cd等
2> /etc 用来存放系统配置文件 xx.conf (passwd文件)
3> /dev 用来存放设备文件 比如说块设备 字符设备 鼠标 串口.....
4> /media 用来存放媒体
cdrom 挂载
5> /home 用户的家目录,在家目录中为每个用户创建一个字文件夹,例如student 用户 有/home/student目录
6> /root 是root用户的家目录
7> /lib 用来存放库文件。
动态库:在windows下是dll文件,在linux下是so文件
静态库:在windows下是lib文件,在linux下是.a文件
8> /proc 和/sys 特殊文件系统(虚拟文件系统)
9> /tmp 临时目录,存放临时数据
10> /usr 用户的应用程序的安装目录
11> /mnt 用来外部文件系统(例如挂载u盘)
/
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,
保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,
称为索引节点号(Inode Index)。在Linux中,
多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名
这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。
只删除一个连接并不影响索引节点本身和其它的连接,
只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。
软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
区别:
软链接:
以路径形式存在,类似于快捷方式
可以跨文件系统
可以对一个不存在的文件名进行链接
可以对目录进行链接
硬链接:
以文件副本形式存在,但不占用实际空间
不允许给目录创建硬链接
只能在同一个文件系统中才能创建
//
动态库 静态库区别:
三、命名方式
静态库:lib库名.a
动态库:lib库名.so
区分一个概念:库是包含前缀lib以及后缀.a或者.so的一个整体
库名是去掉前缀和后缀剩下的部分
四、动态库和静态库的特点
静态库的特点:
1、使用静态库的时候,会将静态库的信息直接编译到可执行文件中
2、优点:当静态库被删除,对可执行文件没有影响
3、缺点:浪费内存空间。如果静态库被修改,可执行程序要重新编译
动态库的特点:加载器在加载动态库时,
操作系统会先检查动态库是否因为其它程序已经将这个动态库信息加载到了内存中
如果没有加载到内存中,操作系统会将动态库载入内存,
并将它的引用计数设置为1;如果已经加载到内存,仅将动态库的引用计数加1。