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