Linux基础06 软链接, 硬链接, 文件编辑vim
一.文件的软硬链接
1.软链接
一个文件,被分为两个部分:
1)用户数据(真实数据)
2)元数据
元数据:用来描述文件的属性(包括inode)
block:数据块,默认4k(不到4k要占用一个block)
ln -s /root/soft_link /tmp/soft_link (注: 使用相对路径可能会失败, mac本可以软链接到Desktop桌面)
源文件 目标
软链接的应用场景
1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取
2.硬链接
1)具有同一个inode号的文件,互为硬链接文件 ls -i 查看文件inode, 系统通过inode号找到文件数据块block, 唯一
[root@localhost ~]# touch hard_link [root@localhost ~]# ln hard_link hard_link1
如图,说明有两个硬链接,inode值相同
需要注意当创建文件夹是,该硬链接数为2。如下图,该文件夹下,有个代表自己的硬链接。
如果在他下面创建个123文件夹。那么在123文件夹下也有个a的硬链接 .. 。所以此时a有3个硬链接
一次类推,如果在123下面再创建一个文件夹。那么a的硬链接还是3。如果在a下面再创建一个文件夹,那么a的硬链接会再加1
2)目录不能创建硬链接
软硬链接 ln -s:做软软链 -f:强制做 -v:反向做链接 &&:衔接多条命令,前面执行成功之后,再执行后面的 ||:衔接多条命令,前面执行不成功,后面也要执行
软硬链接总结:
1)创建命令不同
软链接:ln -s
硬链接:ln
2)目录不能创建硬链接,并且硬链接不可以跨越系统的分区(inode可能冲突),软链接可以
3)硬链接文件与源文件inode相同,软链接文件与源文件inode不同
4)删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
5)删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响
企业面试题:
当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。
查看磁盘容量使用情况df -h
查看inode是否被用完 df -i
查看磁盘信息 df -h:人类可读 -i:查看磁盘inode
然后通过find命令查找文件夹下小文件删除
文件编辑
vi和vim (vim是升级版, 有高亮)
[root@oldboyedu ~]# yum install -y vim
1)三种模式
a.命令模式
[root@oldboyedu ~]# vim /etc/my.cnf
G: shift+g ,将光标移动到文件的末尾
gg: 将光标移动到文件的开头
dd: 删除(剪切)一行,(删除多行 ndd dnd :n为数字 + p = 剪切)
D: 将光标之后的内容都删除
u: 撤销
dG: 删除光标以下的所有内容(包括光标所在行)
dgg: 删除光标以上的所有内容(包括光标所在行)
$(shift+4): 将光标移动到行尾
^(shift+6): 将光标移动到行首
ctrl+r: 恢复撤销
x: 删除光标所在字符
X: 删除光标之前的字符
yy: 复制,nyy,yny(2yy从光标开始往下复制2行)
p(小写): 粘贴(光标所在行的下一行)
P(大写): 粘贴(光标所在行的上一行)
ctrl+f 往下翻页(行比较多)
ctrl+b 往上翻页
r: 单个字符替换
R: 多个字符替换(按ESC退出替换,退格键删除替换的恢复原来的)
b.编辑模式
[root@oldboyedu ~]# vim /etc/my.cnf
i:进入编辑模式
I:将光标跳至行首,并进入编辑模式
A:将光标跳到行末,并进入编辑模式
a:将光标向后移动一个字符,并进入编辑模式
o:将光标调至下一行(新建),并进入编辑模式
O:将光标调至上一行(新建),并进入编辑模式
s:删除光标所在的字符,并进入编辑模式
S:删除光标所在的行,并进入编辑模式
注:当文件编辑时非正常退出,或者编辑的时候,别人也打开改文件,会出现 警告,存在".该文件名.swp"的临时文件(就是正在编辑的内容)
非正常退出的话,可以把该临时文件删除,就能正常打开了。
c.末行模式(底下输入的)
[root@oldboyedu ~]# vim /etc/my.cnf
:w //保存当前状态
:w! //强制保存当前状态(例如权限问题, 需要强制保存)
:q //退出当前文档(文档必须保存才能退出)
:q! //强制退出文档不会修改当前内容
:wq //先保存,在退出
:wq! //强制保存并退出
:x //先保存,在退出
ZZ //保存退出, shfit+zz相当于 :wq 相当于:x
:number //跳转至对应的行号,和普通模式Ngg一个意思
:set nu //显示行号
:set nonu //不显示行号
末行模式的报错
E37: No write since last change (add ! to override) # 没保存就退出报错
E45: 'readonly' option is set (add ! to override) # 只读, 比如root用户强制才有用
E212: Unable to open and write files
末行模式(查找和替换)
查找 /string 需要搜索的内容(查找)
n 按搜索到的内容依次往下进行查找
N 按搜索到的内容依次往上进行查找
替换 :s///g (/,#或@分割都行, /碰到路径需要转义\/)
:1,5s#sbin#test#g 替换1-5行中包含sbin的内容为test
:%s#sbin#test#g 替换整个文本文件中包含sbin的替换为test
:%s#sbin#test#gc 替换内容时时提示是否需要替换
%表示所有行 s表示替换 g表示所有匹配到的内容 c表示提示
替换为 w (y/n/a/q/l/^E/^Y)?
y:替换一次
n:选中下一个
a:全部替换
q:退出
l:替换一次并退出询问
另存
:w /root/test 将文件所有内容另存为/root/test
读入
:r /etc/hosts 读入/etc/hosts文件至当前光标下面
:5r /etc/hosts 指定/etc/hosts文件当前文件的哪行下面