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文件当前文件的哪行下面