zoukankan      html  css  js  c++  java
  • 第七天 vim编辑器的使用与文件误删除恢复

    1.1 查看是否安装vim
    rpm -qf ‘which vim’
    rpm -qf ‘which vi’ #vim不等于vi,vim是vi的加强版不是同一个包


    vim语法 vim [选项] 参数(文件)

    vim的几种模式与切换
    命令模式 -->esc 编辑模式 -->esc 命令行模式 按esc键切换
    首次进入为命令模式 按i进入编辑模式 输入:表示命令行模式

    字符操作
    进入编辑模式 a i o A I O
    i 当前字符之前插入(光标前)
    I 行首插入(行首)

    a 当前字符之后插入(光标后)
    A 行尾插入(行尾)

    o 下一行插入(另起一行)
    O 上一行插入(上一行插入)

    x 向后删一个字符 等同于delete
    X 向前上一个字符

    u 撤销一步,每按一次就撤销一次

    1.2行操作

    home键或^ (shift 6) 行首
    $ (shift 4)end键 行尾


    删除
    dd
    dd 删除一行 数字+dd 删除多行

    如删除5行,使用5dd

    删除光标后全部内容 d+G

    复制粘贴
    yy 复制一行 数字+yy 复制N行
    p 将复制行粘贴

    扩展:剪切
    先删除,再粘贴
    删除到行首 d + HOME 或^ (shift+6)
    删除到行尾 d + END 或$ (shift+4)

    1.2-1 V模式
    进入v模式 移动光标选择区域、
    编程的时候需要进行多行注释:
    1、ctrl+v 进入列编辑模式
    2向下或向上移动光标
    3把需要注释的行的开头标记起来
    4然后按大写的I
    5再插入注释符,比如"#"。
    6再按Esc,就会全部注释了。


    删除:再按ctrl+v 进入列编辑模式;向下或向上移动光标 ;选中注释部分,然后按d, 就会删除注释符号。

    1.2-2 VIM命令行模式操作

    :w 保存 save
    :q 没有进行任何修改,退出 quit
    :q! 修改了,不保存,强制退出
    :wq 保存并退出
    :wq! 强制保存并退出。

    :!ifconfig 调用系统命令
    !+命令

    1.3替换
    格式: %所有内容 s替换 旧的内容 新的内容
    默认是每一行的第一个符合要求的词 (/g全部)

    :% s/a/b 每一行的第一个a被替换成b
    :% s/a/b/g 将文本中所有的1替换成5


    :2,3 s/a/b
    /g 全部
    #替换2到3行 的5


    我们怎么知道是第二行还是第三行呢?
    :set nu #显示行号
    set nonu #不显示行号


    / 正向查找 :/san n 往下查找,N 往上查找


    我想要编辑写入我的网卡地址,但是我忘记了,我要查看一下,当前在vim编辑文档
    怎么办呢? 要退出文档吗? 这样好麻烦.

    :!ifconfig 调用系统命令
    !+命令

    定位:
    vim中定位到某行:
    gg 定位到行首
    G 定位到最后一行,行首
    #G 定位到某一行
    :# 定位到某一行
    #gg 定位到某一行
    #代表行号


    读取其他文件
    :r /etc/passwd
    保存退出 :wq
    1.3-3vim打开多个文件:
    [root@xuegod60 ~]# vim -o /etc/passwd /etc/hosts
    [root@xuegod60 ~]# vim -O /etc/passwd /etc/hosts
    ctrl+ww 在文件之间进行切换

    大写O左右分屏,小写的o上下分屏

    在windows中编辑好的汉字文本文档,上传到Linux下打开乱码,解决方法
    安装工具iconv 安装包名glibc-common

    通过iconv命令转码
    输入/输出格式规范:

    -f, --from-code=名称 原始文本编码
    -o, --output=FILE 输出文件
    -l, --list 列举所有已知的字符集
    GB2312编码适用于汉字处理、
    格式: Iconv -f 编码 源文件 -o 转换后文件
    [root@xuegod60 ~]# iconv -f gb2312 san.txt -o new.txt¥列如

    1.4 数据误删除恢复
    删除文件和文件夹
    rm -rf 文件名或目录名
    -r 递归删除(可以删除目录和目录里面的东西)
    -f 强行删除

    ext4文件系统上删除文件,可以恢复: extundelete
    windows恢复误删除的文件: final data v2.0 汉化版 和 easyrecovery

    Linux文件系统由三部分组成:文件名,inode,block


    a.txt -->inode -> block
    文件名 存放文件元数据信息 真正存放数据

    查看inode号:
    常识: 每个文件,最少有一个inode号。
    [root@xuegod63 ~]# ls -i a.txt
    393788 a.txt

    查看inode中的文件属性; 通过stat命令查看inode中包含的内容
    [root@xuegod63 ~]# stat a.txt #查看inode信息:
    File: `a.txt'
    Size: 1720 Blocks: 8 IO Block: 4096 regular file
    Device: 802h/2050d Inode: 393788 Links: 1
    Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
    Access: 2015-10-25 10:21:07.368552471 +0800
    Modify: 2015-10-25 10:21:02.773527478 +0800
    Change: 2015-10-25 10:21:02.773527478 +0800


    block块:真正存储数据的地方
    块 2M 数据 101M

    为什么删除比复制快?
    因为删除只删除了文件名,元数据并未被删除
    误删除后:为了保证数据不被覆盖丢失,可以把误删除的那个分区卸载或只读挂载(因为写入数据会占用inode号,有可能会覆盖)

    stat:查看设备inode号和块大小 ls -i 文件 :查看inode号
    编译安装工具 extundelete

    安装tree可以查看目录结构 语法 tree 目录

    extundelete 恢复方法

    开始恢复:
    方法1:通过inode结点恢复
    方法二:通过文件名恢复
    方法三:恢复某个目录,如目录a下的所有文件:
    方法四:恢复所有的文件

    准备测试文件后
    通过inode结点查看被删除的文件名字:
    [root@xuegod63 test]# extundelete /dev/sdb1 --inode 2


    方法1:通过inode结点恢复
    [root@xuegod63 test]# extundelete /dev/sdb1 --restore-inode 12
    [root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/file.12 # 没有任何输出,说明一样

    方法二,通过文件名恢复
    [root@xuegod63 test]# extundelete /dev/sdb1 --restore-file passwd


    方法三:恢复某个目录,如目录a下的所有文件:
    [root@xuegod63 test]# extundelete /dev/sdb1 --restore-directory a
    [root@xuegod63 test]# tree RECOVERED_FILES/a/
    ├── a.txt
    └── b
    └── a.txt

    方法四:恢复所有的文件
    [root@xuegod63 test]# extundelete /dev/sdb1 --restore-all

    [root@xuegod63 test]# tree RECOVERED_FILES/
    RECOVERED_FILES/
    ├── a
    │ ├── a.txt
    │ └── b
    │ └── a.txt
    ├── hosts
    └── passwd

    这是删除前的数据:
    [root@xuegod63 ~]# tree /tmp/sda4/
    /tmp/sda4/
    ├── a
    │ ├── a.txt
    │ └── b
    │ ├── a.txt
    │ ├── c #空目录
    │ └── kong.txt #空文件
    ├── hosts
    ├── lost+found
    └── passwd

    extundelete在恢复文件的时候能不能自动创建空文件和目录?
    答:不能。
    REHL7 xfs系统 可以的
    总结:
    方法1:通过inode结点恢复
    方法二:通过文件名恢复
    方法三:恢复某个目录,如目录a下的所有文件:
    方法四:恢复所有的文件

  • 相关阅读:
    Swift和Objective-C混编注意
    【算法设计与数据结构】为何程序员喜欢将INF设置为0x3f3f3f3f?(转)
    baidu网盘下载神器 Pandownload
    为什么大学要学一堆纸上谈兵的课程?(转)
    数据结构实训——校园导游系统
    数据结构实训——哈希表设计
    数据结构实训——员工管理系统
    数据结构实训——成绩统计系统
    数据结构——链表实现一元多项式的表示和加法
    数据结构——顺序表的一些算法
  • 原文地址:https://www.cnblogs.com/tinfeng/p/6118506.html
Copyright © 2011-2022 走看看