Centos7.5 -Vim編輯器和恢復ext4下誤刪除的檔案-Xmanager工具
本節所講內容:
- 5.1 vim的使用
- 5.2 實戰:恢復ext4檔案系統下誤刪除的檔案
- 5.3 實戰:使用xmanager等遠端連線工具管理Linux
5.1 vim主要模式介紹,vim命令模式。
5.1.1 vim編輯器模式
-
確保系統已經安裝了VIM工具
[[email protected] ~]# rpm -qf
which vim
[[email protected] ~]# rpm -qfwhich vi
擴充套件: 問:vi和vim是同一個軟體包安裝的嗎? 答:NO,vim是vi的增加版,最明顯的區別就是vim可以語法加亮,它完全相容vi
-
首次進入檔案 ---- 命令模式
-
出現 “Insert” ---- 編輯模式
-
輸入: ---- 命令列模式
-
A:從編輯模式到命令列模式怎樣切換? 編輯模式->esc->命令模式->: ->命令列模式
-
B:字元操作(怎樣進入編輯模式?) 進入編輯模式 a i o A I O
說明:
-
i 當前字元之前插入 (游標前)
-
I 行首插入 (行首)
-
a 當前字元之後插入 (游標後)
-
A 行尾插入(行尾)
-
o下一行插入 (另起一行)
-
O上一行插入(上一行插入)
-
x 向後刪除一個字元 等同於delete
-
X 向前刪除一個字元
-
u 撤銷一步 每按一次就撤銷一次
-
r 替換
5.1.2 在命令模式下做的操作:
- 游標定位
- hjkl 左下上右
- 0 和 home鍵表示切換到行首, $和end鍵表示切換到行尾
- gg 快速定位到文件的首行 , G定位到未行
- 3gg 或者 3G 快速定位到第3行
- /string(字串) -----找到或定位你要找的單詞或內容,如果相符內容比較多,我們可以通過N、n來進行向上向下查詢,並且vi會對查詢到的內容進行高亮顯示,取消用 :noh
- /^d ----^意思表示以什麼開頭 ,,查詢以字母d開頭的內容
- /t$ -----$意思表示以什麼結尾,,查詢以字母t結尾的內容
- vim + a.txt 開啟檔案後,游標會自動位於檔案的最後一行
如何對文字進行編輯:
1.刪除、複製、貼上、撤銷
2.y 複製(以字元為單位) :表示對單個字元進行復制,如果要複製整行,用yy(以行為單位)
3.複製N行: Nyy ,比如: 2yy ,表示複製2行
4.dd(刪除,以行為單位,刪除當前游標所在行)
5.刪除N行: Ndd ,比如: 2dd ,表示刪除2行
6.p : P貼上
7.剪下: dd
8.x 刪除游標所在位置的字元
9.D 從游標處刪除到行尾
10.u 撤銷操作
11.ctrl+r 還原撤銷過的操作,將做過的撤銷操作再還原回去,也就是說撤銷前是什麼樣,再還原成什麼樣
12.r 替換,或者說用來修改一個字元
總結:vim如何進入其它模式
- a A o O i I 都是可以進行插入,編輯模式
- : 進入命令列模式
- v 進入可視模式
- ctrl+v 進入可視塊模式
- V 進入可視行模式
- R 擦除、改寫,進入替換模式
- 你進入以上模式後,想要退出 ,按esc
擴充套件:插入模式中的操作 ctrl+p可以進行補全操作,所需要的內容必須是在當前開啟的檔案記憶體在的,它只針對當前檔案
5.1.3 V模式(列)
- 進入v模式 移動游標選擇區域、
- 程式設計的時候需要進行多行註釋:
- 1)、ctrl+v 進入列編輯模式
- 2)、向下或向上移動游標,把需要註釋、編輯的行的開頭選中起來
- 3)、然後按大寫的I
- 4)、再插入註釋符或者你需要插入的符號,比如"#"
- 5)、再按Esc,就會全部註釋或添加了
刪除:再按ctrl+v 進入列編輯模式;向下或向上移動游標 ;選中註釋部分,然後按d, 就會刪除註釋符號。
5.1.4 命令列模式操作
:w 儲存 save
:w! 強制儲存
:q 沒有進行任何修改,退出 quit
:q! 修改了,不儲存,強制退出
:wq 儲存並退出
:wq! 強制儲存並退出
:x 儲存退出
例: wq! 強制儲存並退出
[[email protected] ~]# ll /etc/shadow
----------. 1 root root 1179 9月 19 12:57 /etc/shadow
[[email protected] ~]# vim /etc/shadow
呼叫外部檔案或命令
假設:我想要寫入我的網絡卡MAC地址,我要檢視一下,當前在vim編輯文件,照著寫。這樣好麻煩。解決辦法呢?
- 在命令列模式下操作:
- :!ifconfig 呼叫系統命令
- !+命令
- 讀取其他檔案。(把其他檔案中的內容追加到當前文件中)
- :r /etc/hosts
文字替換
格式 : 範圍(其中%所有內容) s分隔符 舊的內容 分隔符 新的內容 (分隔符可以自定義)
預設是每一行的第一個符合要求的詞 (/g全部)
:1,3 s/bin/xuegod 替換第1到3行中出現的第一個bin進行替換為xuegod
:1,3 s/bin/xuegod/g 替換第1到3行中查詢到所有的bin進行替換為xuegod
:3 s/xue/aaaaa #只把第3行中內容替換了
:% s/do/xuegod/g 將文字中所有的do替換成xuegod
:% s/do/xuegod/gi 將文字中所有的do替換成xuegod, 並且忽略do的大小寫
:% [email protected]@[email protected] 將文字中所有的a替換成b
5.1.5 自定義vim使用環境
-
臨時設定
-
:set nu 設定行號
-
:set nonu 取消設定行號
-
:noh 取消高亮顯示
-
永久設定環境
-
vim /etc/vimrc 設定後會影響到系統所有的使用者
-
~/.vimrc #在使用者的家目錄下,建立一個.vimrc。這樣隻影響到某一個使用者,沒有自己建一個
例: [[email protected] ~]# cat /root/.vimrc set nu [[email protected] ~]# vim /root/.vimrc
-
vim開啟多個檔案
-
方法1:以上下形勢,開啟兩個文件
-
[[email protected] ~]# vim -o /etc/passwd /etc/hosts 方法2:以左右方式開啟兩個文件 [[email protected] ~]# vim -O /etc/passwd /etc/hosts 注:ctrl+ww 在兩文件之間進行切換編輯。大寫O左右分屏,小寫的o上下分屏
比較兩個檔案內容 [[email protected] ~]# cp /etc/passwd mima.txt [[email protected] ~]# echo aaa >> mima.txt [[email protected] ~]# diff /etc/passwd mima.txt 40a41
aaa [[email protected] ~]# vimdiff /etc/passwd mima.txt
5.1.6 其它編輯器
-
nano編輯器
-
emacs編輯器
-
GHOME編輯器gedit
-
例: [[email protected] ~]# gedit /etc/passwd
5.1.7 實戰1:在windows中編輯好的漢字文字文件,上傳到Linux下開啟亂碼。
-
實驗環境:centos7.4 現在系統預設使用的語言是漢語。(系統中必須安裝好中文包)。
-
將同目錄下“a此檔案在windows下開啟正常-到linux下vim開啟是亂碼.txt”上傳到Linux伺服器上。使用ssh遠端連線到Linux上,使用vim開啟顯示亂碼。
-
原因:編碼的問題
-
通過iconv命令轉碼 沒有使用過:1 引數:
-
-f, --from-code=名稱 原始文字編碼
-
-t, --to-code=輸出編碼
-
-o, --output=FILE 輸出檔名
-
[[email protected] ~]# mkdir test #建立一個測試目錄
-
[[email protected] ~]# cd test/
-
將測試的檔案上傳到Linux伺服器上: [[email protected] ~]# iconv -f gb2312 -t utf8 a此檔案在windows下開啟正常-到linux下vim開啟是亂碼.txt -o aa.txt [[email protected] ~]# cat aa.txt #!/bin/bash echo “學神IT” 資訊: -l, --list 列舉所有已知的字符集
5.1.8 實戰2:解決將公司Linux伺服器上指令碼導到windows上開啟序列的問題 原因:因為windows和linux處理回車方法不同。
上傳” b在Linux編輯的文件到windows下沒有換行.sh” 到Linux上,開啟後正常顯示
[[email protected] test]# sz b在Linux編輯的文件到windows下沒有換行.sh #傳送到本地
在window 上開啟顯示:
解決方法: [[email protected] ~]# rpm -ivh /mnt/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm 注: 在centos7上,unix2dos這個命令已經被整合到dos2unix-6.0.3-7.el7.x86_64.rpm包中。在centos6下需要安裝unix2dos.xxx.rpm。 [[email protected] test]# unix2dos b在Linux編輯的文件到windows下沒有換行.sh [[email protected] test]# sz b在Linux編輯的文件到windows下沒有換行.sh #傳送到windows本地 顯示正常。 注:dos2unix 這個命令是把windows下的回車轉成linux型別。 聯絡方式: 學神IT教育官方網站: http://xuegod.ke.qq.com 學神IT教育-Linux技術交流QQ群: 722287089 諮詢MK老師 QQ: 2659153446
5.2 實戰:在Centos6/RHEL6上恢復ext4檔案系統下誤刪除的檔案
[[email protected] ~]# rm -Rf / #執行不成功的,
rm: 在"/" 進行遞迴操作十分危險
rm: 使用 --no-preserve-root 選項跳過安全模式
[[email protected] ~]# rm -rf /* #這個可以執行成功。 呵呵。。。
ext4檔案系統上刪除檔案,可以恢復: extundelete ,ext3恢復使用:ext3grep
windows恢復誤刪除的檔案: final data v2.0 漢化版 和 easyrecovery
擴充套件: Linux檔案系統由三部分組成:檔名,inode,block windows也由這三部分組成。 a.txt -->inode --> block 檔名 存放檔案元資料資訊 真正存放資料 檢視檔案檔名:
[[email protected] ~]# cp /etc/passwd a.txt
[[email protected] ~]# ls a.txt
a.txt
檢視inode號:
常識: 每個檔案,有一個inode號。
[[email protected] ~]# ls -i a.txt
440266 a.txt
檢視inode中的檔案屬性; 通過stat命令檢視inode中包含的內容
[[email protected] ~]# stat a.txt #檢視inode資訊:
[[email protected] ~]# ls -l a.txt
-rw-r--r-- 1 root root 1720 Oct 25 10:21 a.txt
block塊:真正儲存資料的地方 邏輯刪除: 為什麼刪除比複製快? 誤刪除檔案後,第一件事要做什麼??? 你不心刪除把存了幾十年的大片刪除了。怎麼辦?
- 避免誤刪除的檔案內容被覆蓋。 如何避免?
- 解除安裝需要恢復檔案的分割槽或以只讀的方式掛載
5.2.2 實戰:在ext4檔案系統上恢復被誤刪除的檔案 下載extundelete http://sourceforge.net/ 開源軟體釋出中心 準備測試分割槽:
[[email protected] /]# fdisk /dev/sda #建立一個sda4分割槽
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): p #檢視現有分割槽表
Disk /dev/sda: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000b8b35
Device Boot Start End Blocks Id System /dev/sda1 * 1 26 204800 83 Linux Partition 1 does not end on cylinder boundary. /dev/sda2 26 1301 10240000 83 Linux /dev/sda3 1301 1428 1024000 82 Linux swap / Solaris
Command (m for help): n #建立一個新分割槽
Command action
e extended
p primary partition (1-4)
p #建立一個主分割槽
Selected partition 4
First cylinder (1428-2610, default 1428):
Using default value 1428
Last cylinder, +cylinders or +size{K,M,G} (1428-2610, default 2610): +1G #指定分割槽大小
Command (m for help): w #儲存
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. [[email protected] ~]#reboot [[email protected] ~]# partx -a /dev/sda #獲得新分割槽表
擴充套件:
- 如果在根下刪除檔案了,想恢復,怎麼辦? 方法1: 立即斷電,然後把磁碟以只讀方式,掛載到另一個電腦中進行恢復 方法2:把extundelete在虛擬機器上(虛擬機器系統要和伺服器版本一樣),提前安裝好後再複製到U盤中,把U盤插入伺服器,恢復時,恢復的檔案要儲存到U盤中,(不要讓恢復的資料寫到/下,那樣會覆蓋之前刪除的檔案)
使用新的分割槽表:
[[email protected] /]# mkdir /tmp/sda4 #建立掛載點
[[email protected] ~]# mkfs.ext4 /dev/sda4 #格式化
[[email protected] ~]# mount /dev/sda4 /tmp/sda4/ #掛載
5.2.3 複製一些測試檔案,然後把這些檔案再刪除,然後演示恢復:
[[email protected] ~]# cp /etc/passwd /tmp/sda4/
[[email protected] ~]# cp /etc/hosts /tmp/sda4/
[[email protected] ~]# echo aaa > a.txt
[[email protected] ~]# mkdir -p /tmp/sda4/a/b/c
[[email protected] ~]# cp a.txt /tmp/sda4/a/
[[email protected] ~]# cp a.txt /tmp/sda4/a/b/
[[email protected] ~]# touch /tmp/sda4/a/b/kong.txt
安裝tree命令:
[[email protected] ~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
[[email protected] ~]# tree /tmp/sda4/
/tmp/sda4/
├── a
│ ├── a.txt
│ └── b
│ ├── a.txt
│ ├── c #空目錄
│ └── kong.txt #空檔案
├── hosts
├── lost+found
└── passwd
刪除檔案:
[[email protected] ~]# cd /tmp/sda4/
[[email protected] sda4]# ls
a hosts lost+found passwd
[[email protected] sda4]# rm -rf a hosts passwd
誤刪除檔案後,第一件事要做什麼??? 如何避免誤刪除的檔案內容被覆蓋??? 解除安裝需要恢復檔案的分割槽:或以只讀的方式掛載
[[email protected] ~]#cd /root
[[email protected] ~]# umount /tmp/sda4
5.2.4 安裝extundelet 上傳extundelete到linux中:
-
從windows上傳extundelete檔案到linux,安裝xmanager v5 或者CRT
[[email protected] ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
安裝後,就有了rz命令和sz命令
- rz : 上傳windows中的檔案到linux
- sz :下載,將linux中的檔案傳到windows
解壓並安裝extundelet
[[email protected] extundelete-0.2.4]# tar jxvf extundelete-0.2.4.tar.bz2
[[email protected] ~]# cd extundelete-0.2.4
[[email protected]]# yum install e2fsprogs-devel
[[email protected] extundelete-0.2.4]# ./configure #檢查系統安裝環境
[[email protected] extundelete-0.2.4]# make -j 4 #編譯,把原始碼編譯成可執行的二進位制檔案。
-j 4 使用4程序同時編譯,提升編譯速度 或 使用4核CPU同時編譯。
[[email protected] extundelete-0.2.4]# make install #安裝
install 和cp 有什麼區別? install 複製時可以指定許可權 cp不可以 例:
[[email protected] ~]# install -m 777 /bin/find /opt/a.sh
[[email protected] ~]# ll /opt/
5.2.5 開始恢復:
-
方法1:通過inode結點恢復
-
方法二:通過檔名恢復
-
方法三:恢復某個目錄,如目錄a下的所有檔案
-
方法四:恢復所有的檔案
[[email protected] ~]# umount /tmp/sda4/ [[email protected] ~]# mkdir test #建立一個目錄使用於存放恢復的資料 [[email protected] ~]# cd test/
方法1:
-
通過inode結點檢視被刪除的檔名字:
[[email protected] test]# extundelete /dev/sda4 --inode 2 lost+found 11 passwd 12 Deleted hosts 13 Deleted a 7313 Deleted
擴充套件:ext4檔案系統的分割槽根目錄的inode值為2,xfs分割槽根目錄的inode值為64
[[email protected] test]# ls -id /boot/ #xfs檔案系統
64 /boot/
[[email protected] test]# mount /dev/sda4 /tmp/sda4/
[[email protected] test]# ls -id /tmp/sda4/
2 /tmp/sda4/
[[email protected] test]# umount /tmp/sda4/
方法1:通過inode結點恢復
[[email protected] test]# extundelete /dev/sda4 --restore-inode 12
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 9 groups loaded.
Loading journal descriptors ... 63 descriptors loaded.
[[email protected] test]# ls
RECOVERED_FILES
[[email protected] test]# diff /etc/passwd RECOVERED_FILES/file.12# 沒有任何輸出,說明一樣
方法二,通過檔名恢復
[[email protected] test]# extundelete /dev/sda4 --restore-file passwd
[[email protected] test]# diff /etc/passwd RECOVERED_FILES/passwd # 沒有任何輸出,說明一樣
方法三:恢復某個目錄,如目錄a下的所有檔案:
[[email protected] test]# extundelete /dev/sda4 --restore-directory a
[[email protected] test]# tree RECOVERED_FILES/a/
RECOVERED_FILES/a/
├── a.txt
└── b
└── a.txt
下面是原來的目錄結構:
[[email protected] ~]# tree /root/sda4-back/a/
/root/sda4-back/a/
├── a.txt
└── b
├── a.txt
├── c
└── kong.txt
方法四:恢復所有的檔案
[[email protected] test]# extundelete /dev/sda4 --restore-all
刪除前後的資料: extundelete在恢復檔案的時候能不能自動建立空檔案和目錄? 答:不能。
聯絡方式:
- 學神IT教育-Linux技術交流QQ群: 722287089
- 諮詢MK老師 QQ: 2659153446
5.3 實戰:使用xmanager等遠端連線工具管理Linux
5.3.1 Linux下常用遠端連線工具介紹 5.3.2 xmanager 使用方法 1、xshell使用方法
- 例1:連線一臺新的伺服器
- 例2:調整xshell字型大小
- 例3:調整rz和sz命令的預設路徑 2、xftp使用方法
- 例1:上傳一個資料夾到Linux伺服器上 3、xstart使用方法
- 方法1:使用xshell直接執行圖形介面的程式
- 例1:[[email protected] ~]# gnome-terminal
- 例2:[[email protected] ~]# firefox &
- 方法2:使用xstart呼叫桌面 聯絡方式:
- 學神IT教育-Linux技術交流QQ群: 722287089
- 諮詢MK老師 QQ: 2659153446
微信公眾號: 申老師微信賬號 總結:
- 5.1 vim的使用
- 5.2 實戰:恢復ext4檔案系統下誤刪除的檔案
- 5.3 實戰:使用xmanager等遠端連線工具管理Linux
- 注:更多學習資源,可以加MK講師QQ: 3175492114
- MK在最後,祝你:早日成為Linux牛人!