第七天 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下的所有文件:
方法四:恢復所有的文件

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM