1、解决昨天的问题:
- touch和mkdir
验证的方法,ls -l和
- touch 9.avi
假设你是迅雷软件工程师(迅雷):解析文件格式
用touch命令创建的文件就是一般的文件,文件的后缀只是一个后缀或者标志;当你用视频软件或者画图软件打开.jpeg的时候,视频软件或者画图软件会首先检查文件的头部信息,看是不是合法的.avi或者.jpeg文件,如果不是,就没必要继续向下解析。
所以9.avi用winhex打开的时候,发现里面是空的,在文件的头部并没有发现avi标志,所以说9.avi并不是一个合法的avi文件(不同软件设计可能不同)
2、基本命令补充;
mv:
文件或者文件夹重命名:mv 原名 新名
文件路径的改变(剪切):
table键自动补全:避免输入错误和提高速度
cp:
复制功能
cp 要复制的文件或文件夹 复制后的路径
cp -r :递归复制
shutdown:关机
reboot:重启
只有在root用户下才能创建用户,设置密码
新增用户:useradd 用户名---------随后会在/home下面自动生成以用户名命名的文件夹;
设置密码:passwd 用户名
删除用户:userdel 用户名(在/home保留用户目录)
userdel -r 用户名(同时删除用户及其文件夹)
切换用户:su 用户名
root超级用户→普通用户。:su 用户名
普通用户→root超级用户:su (需要输入root密码)
普通用户→普通用户:su 用户名
返回上个用户:exit
3、超级用户,用户组,用户的概念
超级用户:root→window里的管理员
用户组:组群
用户:个体,用户组里的具体成员
4、文件的权限
-rwxrw-rw-1 root root 5 05-12 22:48 demo.txt
第一个字符表示的是文件的类型:
linux下一切皆文件
-:一般文件
d:目录文件
c:设备文件中字符设备
c:设备文件中的字符设备;b:设备文件中的块设备;p:管道文件1:链接文件;s:socket文件:紧接着的9个字符依次代表用户、用户组、其他人的权限,每三个字符进行划分
rwx rw- rw-
r:可读权限。 4
w:可写的权限。 2x:可执行的权限。 1:不具备相应的权限:
修改权限;
chmod 权限 文件或者文件夹的名字
需求:把demo.txt改为:用户可写可执行,用户组可读可写可执行,其他人没有权限
chmod 370 demo.txt
修改文件所有者或者所有的用户组
chown 用户名 文件或者文件夹名字
chgrp 用户组
补充:如何产看当前系统用户组:cat/etc/group
5、目录介绍;
/bin:存放常用命令/boot:存放启动程序/dev:存放设备文件/etc:存放启动、关闭、配置程序与文件/home:用户工作根目录/lib:存放共享链接库/root:超级用户的工作目录/sbin:系统管理员的常用管理程序/tmp:存放临时文件Lost+found:系统出现异常,用来保存部分资料
6、共享文件夹;
window和linux系统之间的文件共享
问题
- 执行reboot重启虚拟机
- vmhgfsclient
- 直接复制,拖拽
7、vim编辑器:
vi/vim 文件名
首先进入“一般模式”:下面会显示文件的名字
一般模式→编辑模式:按下a/i/g 键,下面会显示insert
写好之后保存退出:在编辑模式下按下esc键,回到一般模式,然后再按shift+: 进入“底行模式”下,在底行模式下,可以输入wq(保存退出),wq!(强制保存退出),q(不保存退出),q!(强制不保存退出)
在window中文档软件 ( vim编辑器 )可能有的操作: / etc/vimrc
作业 :查找资料,修改vim编辑器的配置
编辑;
保存关闭;
查找; 在底行模 式下输入:
/ 查找的内容 (从光标所在行向下查找)
?查找的内容(从光标所在行向上查找)
替换; 对于某一行的替换:首先 把光标定位到这一行
s/替换前的内容/替换厚的内容 只替换一个
s/替换前的内容/替换后的内容/g 全部替换
对于从m行到n行的替换
m,ns/替换前的内容/替换厚的内容 只替换一个
m,ns/替换前的内容/替换后的内容/g 全部替换
复制; 单行 复制:在光标停留的那一行,按下yy键
多行复制:
粘贴; p
删除; 删除行 :dd
删除字符:nx/nX→删除多个
x是向后删除;
X是向前删除;
剪切;
撤销; 按下 u键
格式; 写 c语言程序时,可以用n==缩进
移动光标; nG:光标定位到第n行
n→:向右移动n个字符
.. 上一级目录
. 当前目录
* 同类
8、gcc编译工具链;
- 什么是编译器
机器只能识别0和1的语言,不能识别高级语言编写的程序;
高级语言编写的程序→机器语言;
→编译器承担翻译的角色→本质上编译器是一个程序;
- 为什么需要编译器
- 没有编译器行不行
- 有了编译器之后有什么好处
人类可以编写更适合人类思维的高级语言,而不用编写机器程序的语言,也不用考虑语言的转换
gcc编译器,也是一个交叉编译器→就是编译和运行的平台不一样
从高级语言到机器语言要经过以下步骤
1. 预处理:gcc -E 文件名.c -o 文件名.i
处理什么?
- 头文件;#include
- 宏定义;
- 条件编译;
- 注释;
目的:处理一些不是核心的东西,让编译器处理最核心的东西;
2. 编译:gcc -S (.s)
将文件编译成汇编文件
做的事情:词法(main)分析和语法(if/else)
- gcc -S demo.i
- gcc -S demo.i -o demo.s
- gcc -S demo.c
- gcc -S demo.c -o demo.s
3. 汇编(.o)
将文件生成机器码(.o文件)
gcc -c demo.c
gcc -c demo.i
gcc -c demo.s
4. 链接阶段
平时常用: gcc demo.c. (默认生成a.out文件)
静态库的封装:
man手册; 鸟哥p123
实现作用:能够调用自己写的加法函数
1. 编辑要封装到库里面的函数实现;add.c
- 需要两个加数;
- 对两个加数进行相加;
- 返回或者输出加数和;
2.把add.c封装成库
-w关闭警告。-Wall打开警告
-链接函数库
- 生成目标文件; gcc -c demo.c
- 将目标文件封装成库;ar rcs libadd.a add.o
libadd.a :lib是前缀,表明这是一个库;add是库的名字, .a表示是静态库
下午:
1、C语言入门;
什么是编程语言
为什么要学习c语言
如何学习c语言
- 有想法才有做法
- 用编程语言把想法实现
怎么考察c语言
hello.c分析
- 首先找到main函数,他是函数的入口,有且只有一个。int main()
- { }里面的时main的代码块
- printf("");
- c语言里以分号作为语句的结尾;
- #include<>头文件不能丢→系统路径 #include ""→当前路径
- return是关键字;
2、gdb调试;
练习
1.请在/tmp这个目录下建立一个名为vitest的目录;
2.进入vitest这个目录当中;
3.将/etc/man.config 拷贝到本目录底下
4 .使用vi开启本目录下的man.config这个档案;
5.在vi中设定一下行号:
6.移动到第58行,向右移动40个字符,请问您看到的双引号内是什么自录?
7.移动到第一行,并且向下搜寻一下“bzip2”这个字符串、请问他有几
8.接着下来,我要将50到100行之间的man改地Mu,并且十一个挑选是否需要修改,如何下达指令?
9.修改完之后,突然反悔了,要全部复原,有哪些方法
10.我要复制51到60行这十行的内容,并且贴到最后一征必看
11.删除11到30行之间的20行;
12.将这个文件另存成一个man.test.config的文件;
13.到第29行,并且删除15个字符;14.储存后离开
作业:
1、virtual box中安装centos;
3、training训练 ;
4、修改vim编译器