基础命令在之前已经展示,从这里开始就是对各种概念的理解,在面试中有很大概率会问到的问题。
操作系统的构成 = 系统内核 + 外部应用
外部应用就要看开发人员对系统的支持了,但是我们知道Linux下的游戏并不是很多,主要就是因为Linux为开源系统,大家都可以在内核的基础上,开发自己的特色上去,导致Linux的版本各有不同,很难统一,导致应用的支持很难实现。
权限:
用户:普通用户,超级管理员(root)
权限是什么?
对用户权力的限制,不允许用户随意操作文件
权限的分类:rwx(可读,可写,可执行)
用八进制的数字表示:7
用二进制的数字表示:111,刚好可以对应可读可写可执行的每一位。
权限会限制三个不同的用户:文件的所有者,文件的所属组,其他用户;所以权限由三个八进制的数字组成
权限相关的命令:
umask 设置或查看文件的创建权限掩码
规则:实际权限 = 给定权限 & (~umask)
例如: 777 & (~umask)
如果给定umask的掩码为002,那么文件创建之后的权限为775
chmod 修改文件的权限,相关命令chown(更改所有人) chgrp(更改所属组)
例:chmod 0777 file更改file文件的权限为777
还可以使用chmod u+x file(g-x o-x)
粘滞位:
主要针对目录的一个权限位,所有人都可以在目录下创建文件,可以删除自己的文件,但是不能删除其他人的文件。(Linux是一个多用户访问的操作系统,支持多个用户同时访问,所以粘滞位的使用是非常有必要的)
管道符:|
作用:连接两个命令,将前一个命令的输出结果当作后一个命令的输入,做处理
例:如何查看/etc/passwd文件的第二十行的内容
head -n /etc/passwd | tail -n 1
Linux下的常用工具:
1. yum软件包管理器
为什么不用源码安装呢?yum有什么好处呢?
答:不需要用户解决第三方库的依赖关系,在yum安装中会先把依赖库下载。
查看可以安装的软件包:yum list
安装软件包:yum install
移除软件包:yum remove
查看安装的软件包:yum list installed
安装特定软件时,使用管道yum list | grep **
2.vim文本编辑器
vim为了实现所有的操作,因此有很多种操作模式,每个模式下的功能各有不同
vim共有12种模式,6种基本模式,6种条件模式。最常用3种:插入模式(ESC)->,<-(i)普通模式(:)->,底行模式
i 从光标所在位置插入
a 从光标所在位置下一个字符位置插入
o 向光标所在行的下一行添加新行,插入
I 光标移动到行首进行插入
A 光标移动到行尾进行插入
O 向光标所在行的上一行添加新行,插入
底行模式:w保存 q退出 q!强制退出 wq保存并退出 !pwd临时执行命令,回车返回
普通模式下的操作:
指定编辑位置(移动光标):kjhl 上下左右操作 w b 按单词左右移动
ctrl+f +b 上下翻页 G gg 光标移动到文档的尾行或首行
复制:yy 复制光标所在行
复制一个单词:1.v进入选中模式 2.移动光标选中 3.y 复制 4.p粘贴
nyy 复制n行数据
粘贴:p 向光标所在行的下一行添加新行,粘贴
P 向光标所在行的上一行添加新行,粘贴
剪切:dd 剪切光标所在行
ndd 剪切光标所在行向下n行
dw 删除光标位置开始的单词
D 删除到尾行
x 剪切光标所在的字符
s 删除光标所在字符,并进入插入模式
其他操作:
u 撤销
ctrl+r 还原
gg=G 全文对齐
v ctrl + v 进入视图选中模式
3.gcc编译器:将高级语言代码编译成为机器语言可识别的指令代码
编译步骤:
1.预处理:展开所有代码
2.编译:纠错,没有错误则将c语言代码编译成汇编代码
3.汇编:将汇编代码编译为机器语言
走完汇编只是将当前的.c编译成了自己的机器指令。其他文件还没有拿过来,这个文件虽然是机器指令但是不能执行
4.链接:将所有调用的代码实现都拿来生成可执行程序
库:存放函数实现代码的文件
动态库:链接生成可执行程序,链接动态库称为动态链接
lib***.so
动态链接,只记录动态库的位置符号信息,代码冗余量小,占用资源少,但对库的依赖程度高。
静态库:链接生成可执行程序,链接静态库称为静态链接
lib***.a
静态链接,拷贝库中的代码,代码冗余量大,占用资源多,对库的依赖程度低
gcc编译器默认链接的是动态链接
gcc常用选项:-E 仅预处理
-S 仅编译
-C 仅汇编
-o 指定输出文件名
-static 链接静态库
4.Makefile:文本文件,但是有一个make命令,逐步记录makefile中记录的编译规则
Makefile就是用来记录项目的编译规则的,辅助项目的自动化编译
命名:Makefile makefile
编写:[table] 执行命令
执行:make
make解释执行规则:
1.到当前目录下查找makefile文件,找不到报错。有多个makefile时(makefile/Makefile)优先执行Makefile。
2.到文件中找第一个目标对象,,并把这个对象当作终极目标
3.检测这个文件对象和依赖对象的最后一次修改时间,判断是否需要重新编译,修改时间一样则不重新编译,退出
4.如果目标对象不存在则直接生成,但依赖对象可能不存在
5.为了生成终极目标,首先要保证依赖都存在,所以会先去生成所有的依赖关系(依赖对象生成的依赖关系也是用户在下边定义的)
预定义变量:$@ $^ $<
区别: =非即时赋值 :=直接赋值 ?=有变量不赋值 +=追加赋值
伪对象:不管对象是否最新,是否存在,每次都生成。(.PHONY: a)
6.git
svn项目版本控制工具:集中式管理
git项目版本控制工具:分布式管理
git clone (url) 从github上克隆代码到当前路径
git add ./* 添加要提交的文件
git commit -m "modify" "desc" 本地提交
git push origin master 上传代码
了解git的分支管理(git的精华)