linux链接文件与编辑工具vim
一,lnode与Block
文件有文件名与数据,在Linux上被分为两部分:数据date与文件元数据metadata
1.数据data block:数据块是用来记录文件真实内容的地方,称为:Block
2.元数据metabata:用来记录文件大小,创建时间,所有者等信息,称为Inode
3.注意:Inode并不包含文件名称,inode仅包含文件的元数据信息
①文件的字节数
②文件的时间戳
③文件数据block的位置
④文件的User ID Group ID
⑤文件的读,写,执行权限
⑥链接数,即有多少个文件名指向这个inode
4.每一个inode都是一个编号,操作系统是通过Inode来识别不同的文件
①对于系统,文件名只是inode便于识别的别名或绰号,便于识别
②表面上,用户是通过文件名打开的文件,事实上系统内部这个过程分为三步:
Ⅰ:系统找到这个文件名对应的inode编号
Ⅱ:通过inode编号,获取inode信息
Ⅲ:根据inode信息,找到文件数据所在的block,读出数据
大量的小文件,会消耗innode,一旦被使用完;就会提示空间不足,实际情况空间还能继续存数据;大文件存储;消耗1个innode,多个Block,如果是block会占用完毕,说明空间是真的不足了
软连接
什么是软连接:
①软连接文件会将inode指向源文件的block当我们访问这个链接文件时,其实访问的是源文件本身,类似windows的快捷方式
软连接使用场景
①软件升级
②代码发布
#1:准备1.1版本的网站代码
[root@localhost ~]# mkdir -p /data/rainbow-v1.1
[root@localhost ~]# echo "123" > /data/rainbow-v1.1/index.html
#2:创建软连接
[root@localhost data]# ln -s /data/rainbow-v1.1/ /data/rainbow
[root@localhost data]# ll
total 0
lrwxrwxrwx. 1 root root 19 Dec 1 00:19 rainbow -> /data/rainbow-v1.1/
drwxr-xr-x. 2 root root 24 Dec 1 00:18 rainbow-v1.1
#3:检查网站程序
[root@localhost data]# cat /data/rainbow/index.html
123
#4:更新网站程序代码
[root@localhost data]# mkdir /data/rainbow-v1.2
[root@localhost data]# echo "456" > /data/rainbow-v1.2/index.html
#5:升级
[root@localhost data]# rm -f /data/rainbow && ln -s /data/rainbow-v1.2/ /data/rainbow
[root@localhost data]# cat /data/rainbow/index.html
456
#6:退回v1.1版本
[root@localhost data]# rm -f /data/rainbow && ln -s /data/rainbow-v1.1/ /data/rainbow
[root@localhost data]# cat /data/rainbow/index.html
123
硬链接
不同的文件名指向同一个inode,简单来说就是指向同一个真实的数据源,类似:超市有多个门,无论从哪个门进入,看到的内容都是一样的,如果关闭其中一扇门,但都不会影响进入超市
硬链接与软连接的区别
①ln命令创建硬链接,ln -s命令创建软链接
②目录不能创建硬链接,硬链接不可以跨越分区系统
③硬链接文件与源文件的inode相同,软连接文件与源文件inode不同
④软链接支持对目录传创建,同时也支持跨越分区系统
⑤删除源文件及其硬链接文件,整个文件会被真正的删除
⑥删除链接文件的源文件,对硬链接无影响,会导致软链接失效
⑦删除文件的硬链接文件,对源文件及链接文件无任何影响
⑧删除软链接文件,对源文件及链接文件无任何影响
二,linux编辑工具vim
vim 基础
什么是vim
vi 和 vim 是linux下的文本编辑工。(类似于windows的记事本)
为什么需要vim
Linux下一切皆文件,而最多的就是修改服务的配置(修改文件内容),也就是说没有vi及vim,我们很多在linux上的工作则无法完成。
vi与vim的区别
vi和vim都属于文本编辑器,vim只不过是vi的增强版,比vi多了语法高亮显示,其他功能基本一致
采用最小化安装操作系统所以没有vim命令,安装命令:yum install vim
如何使用vim
vim的三种模式:普通模式,编辑模式,末行模式,(视图模式)
每种模式分别支持多种不同的快捷键,要想高效率的操作文本,必须学习三种模式的操作区别,模式之间的切换方法
vim三种模式介绍
-
1.普通模式:主要是用来控制光标移动,可以对文本进行复制,粘贴,删除等工作
+ 使用vim 编辑一个文件时,一进入该文件就是普通模式 + 在这个模式下,可以进行光标移动,复制,粘贴,删除等等
-
2.编辑模式:主要进行文本内容编辑和修改
- 从普通模式进入编辑模式,只需要按其中一个键即可:i,I,a,A,o,O
- 当进入编辑模式时,屏幕最下面会出现INSERT或“插入”标记
- 从编辑模式回到普通模式只需要按ESC键即可
-
3.末行模式:主要用于保存或退出文本
- 在普通模式下,输入 :或者 / 即可进入末行模式
- 在命令该模式下,可进行的操作有:显示行号,搜索,替换,保存,退出。
-
4.总结:vim编辑打开文件整体流程
- 默认打开文件处于普通模式
- 从普通模式切换至编辑模式使用i,a,o
- 编辑模式修改完毕需要先使用ESC返回普通模式
- 在普通模式下输入:或 / 进入末行模式,可实现文件的保存与退出
注意:在vim中,无法直接从编辑模式切换到末行模式
vim模式的使用
普通模式
1.普通模式:主要用于光标移动,复制,粘贴,删除,替换
G #光标跳转至末端
gg #光标跳转至顶端
Ngg #光标跳转至当前文件内的第N行
$ #光标跳转至当前光标所在行的尾部
^ #光标跳转至当前光标所在行的首部
****************************************************************************************
2.文件内容较多
ctrl+f #往下翻页
ctrl+b #往上翻页
****************************************************************************************
3.复制与粘贴
yy #复制当前光标所在行
5yy #复制当前光标以及光标向下4行
p[小写] #粘贴至当前光标下一行
P[大写] #粘贴至当前光标上一行
****************************************************************************************
4.删除,剪贴,撤销
dd #删除当前光标所在行
4dd #删除当前光标所在的行以及往下的3行
dG #删除当前光标以后的所有行子i
D #删除当前光标及以后的内容
x[小写] #删除当前光标标记往后的字符
X[大写] #删除光标当前标记往前的字符
dd & p #剪贴,先前删除dd9(numner dd),后粘贴
u #撤销上一次的操作
****************************************************************************************
5.替换
r[小写] #替换当前光标标记的单个字符
R[大写] #进入REPLACE模式,连续替换,ESC结束
编辑模式
编辑模式:主要用于编辑文件
i #进入编辑模式,光标不做任何操作
a #进入编辑模式,将当前光标往后一位
o #进入编辑模式,并在当前光标下添加一行空白内容
****************************************************************************************
I #进入编辑模式,并且光标会跳至本行的头部
A #进入编辑模式,将光标移动至本行的尾部
O #进入编辑模式,并在当前光标上添加一行空白内容
末行模式
末行模式:主要用于搜索,保存,退出文件
1.文件保存与退出
:w #保存当前状态
:w! #强制保存当前状态
:q #退出当前文档(文档必须保存才能退出)
:q! #强制退出文档不会修改当前内容
:wq #先保存,后退出
:wq! #强制保存并退出
:x #先保存,在退出
ZZ #保存退出,shift+ZZ
:number #跳转至对应的行号
****************************************************************************************
2.文件内容查找
/string #需要搜索的内容
n #按搜索到的内容依次往下进行查找
N #按搜索到的内容依次往上进行查找
****************************************************************************************
3.文件内容替换
:1,5s#sbin#test#g #替换1——5行中包含sbin的内容为test
:%s#sbin#test#g #替换整个文本文件内中包含sbin的内容为test
g:global全局的意思
****************************************************************************************
4.文件内容另存为
:w /root/test.txt #将所有内容另存为/root/test.txt文件中
****************************************************************************************
5.文件内容读入
:r /etc/hosts #读取/etc/osts文件至当前光标下面
:5r /etc/hosts #指定插入/etc/hosts文件至当前文件的第五行下面
视图模式
视图模式:从普通模式进入视图模式,主要进行批量操作
ctrl+v #进入可视行模式,选中需要注释的行
1.插入:按shift+i进入编辑模式,输入# ,结束按ESC键
2.删除:选中内容后,按x或d键进行删除
3.替换:选中需要替换的内容,按下r键,让后输入替换后的内容
****************************************************************************************
ctrl+v #进入可视行模式,选中正行内容
1.复制:选中行内容后按y键即可复制
2.删除:选中行内容后按d键即可删除
vim扩展知识
vim环境变量
1.环境变量临时生效
:set nu #显示行号
:set ic #忽略大小写,在搜索的时候用
:set ai #自动缩进
:set list #显示制表符(空行,tab键)
:set no [nu|ic|ai..] #取消临时设定的变量
****************************************************************************************
2.环境变量永久生效:~/.vimrc个人环境变量(优先级高)/etc/vimrc全局环境变量
#vim ~/.vimrc #当下次再次打开文件自动显示行号并忽略大小写
set nu
set ic
##如果个人vim环境没有配置,则使用全局vim环境变量配置
##如果个人vim环境和全局环境变量产生冲突,优先使用个人vim环境变量
vimdiff文件比对
相同文件之间差异对比,通常用于对比修改前后差异
diff #文件对比
vimdiff #以vim方式打开两个文件对比,高亮显示不同的内容
vim异常退出处理
如果vim非正常退出(ctrl+z)挂起或强制退出终端没关闭vim后
#假如打开test文件意外关闭,需要删除同文件名.swp文件即可jiejue
#rm -f .test.swp