文章目錄
- vim 主要模式介紹
- vim 編輯器的四種操作模式
- 在正常模式下做的操作
- Visual mode 可視塊模式
- 命令列模式 Command-line 操作技巧
- 自定義 vim 使用環境
- 其它編輯器
- 實戰:在 Centos6/RHEL6 上恢復 ext4 檔案系統下誤洗掉的檔案
- 實戰:在 ext4 檔案系統上恢復被誤洗掉的檔案
- 準備測驗環境
- 安裝 extundelet
- 恢復資料
- 實戰:使用 xmanager 等遠程連接工具管理 Linux
vim 主要模式介紹
vim 命令模式
問:vi 和 vim 是同一個軟體包安裝的嗎?
答:NO,vim 是 vi 的增加版,最明顯的區別就是 vim 可以語法加亮,它完全兼容 vi
查看一個命令,是哪個軟體包,安裝的:
[root@xuegod63 ~]# rpm -qf /usr/bin/vim
[root@xuegod63 ~]# which vim
[root@xuegod63 ~]# rpm -qf `which vim` #`反引號,esc 按鍵下的鍵,反引號中可執行命
令
[root@xuegod63 ~]# rpm -qf $(which vi) #$(可執行命令)
$() 與`` 都可以進行命令替換,命令替換與變數替換差不多,都是用來重組命令列的,先完成引號里
的命令列,然后將其結果替換出來,再重組成新的命令列
vim 編輯器的四種操作模式
1.Vim 常用 4 種模式.
正常模式(Normal mode,俗稱命令模式) ,命令列模式(Command-line mode)
插入模式(Insert mode ,俗稱編輯模式), 可視模式(Visual mode,俗稱可視塊模式)
root@xuegod63 ~]# cp /etc/passwd a.txt
[root@xuegod63 ~]# vim a.txt
首次進入檔案 ----正常模式(Normal mode,俗稱命令模式)
按下 I 鍵,出現 “Insert” ----插入模式(Insert mode ,俗稱編輯模式)
按 Esc 鍵,再輸入冒號: ----命令列模式(Command-line mode)
例 1 從編輯模式到命令列模式怎樣切換?
編輯模式->esc->命令模式->: ->命令列模式
注意在命令模式下,輸入命令無效時,檢查下輸入法是不是中文輸入法,切換為英文輸入法
例 2 字符操作(怎樣進入編輯模式?)
進入編輯模式 a i o A I O
說明:
i 當前字符之前插入 (游標前)
I 行首插入 (行首)
a 當前字符之后插入 (游標后)
A 行尾插入(行尾)
o 下一行插入 (另起一行)
O 上一行插入(上一行插入)
x 向后洗掉一個字符
X 向前洗掉一個字符
等同于 delete
u 撤銷一步
每按一次就撤銷一次
ctrl+r 恢復,每按一次就恢復一次
r 替換
在正常模式下做的操作
1、游標定位
hjkl
左下上右
0 和 home 鍵表示切換到行首, $和 end 鍵表示切換到行尾
gg 快速定位到檔案的首行 , G 定位到未行
3gg 或者 3G 快速定位到第 3 行
/string(字串) -----找到或定位你要找的單詞或內容然后敲回車,如果相符內容比較多,我們可
以通過 N、n 來進行向上向下查找,并且 vim 會對查找到的內容進行高亮顯示,取消高亮用 :noh
/^d
----尖括號^意思表示以什么開頭 ,查找以字母 d 開頭的內容
-----$意思表示以什么結尾,查找以字母 bash 結尾的內容
/bash$
vim + /etc/passwd 打開檔案后,游標會自動位于檔案的最后一行, 了解一下這個技巧,
vim +23 /etc/passwd 打開檔案后,游標會自動位于檔案的第 23 行,方便后期排錯,如:服務
器啟動報錯,第 23,有語法錯誤,使用 vim +23 /etc/passwd 可以快速定位到 23 行,
分享心得:我更喜歡 vim 打開檔案,然后按 G,跳到最后, 因這個 vim + a.txt
一段時間肯定會忘,Linux 中有太多的小技巧,大家應該記那些常用的,
2、在正常模式對文本進行編輯
洗掉、復制、粘貼、撤銷
yy 復制整行
復制 N 行: Nyy ,比如: 2yy ,表示復制 2 行
dd(洗掉,以行為單位,洗掉當前游標所在行)
洗掉 N 行: Ndd ,比如: 2dd ,表示洗掉 2 行
p : P 粘貼
剪切: dd
x 洗掉游標所在位置的字符
D 從游標處洗掉到行尾
u
撤銷操作
ctrl+r
還原撤銷過的操作,將做過的撤銷操作再還原回去,也就是說撤銷前是什么樣,再還原成什
么樣
r 替換,或者說用來修改一個字符
總結:vim 如何進入其它模式
a A o O i I 都是可以進行插入,編輯模式
: 進入命令列模式
ctrl+v 進入可視塊模式
R 擦除、改寫,進入替換模式
你進入以上模式后,想要退出 ,按 esc
Visual mode 可視塊模式
編程或修改服務器組態檔的時候,需要進行多行注釋,會使用 Visual 模式,
1、進入 Visual 模式的批量洗掉,方法如下:
洗掉:再按 ctrl+v 進入可視塊模式;向下或向上移動游標 ;選中部分內容,然后按 d, 就會洗掉注
釋符號,
例:將 sshd_config 檔案中 17 行到 20 行前面的#號洗掉
[root@xuegod63 ~]# vim /etc/ssh/sshd_config
改:

為:

2、進入 Visual 模式的批量修改,方法如下:
1)、ctrl+v 進入列編輯模式
2)、向下或向上移動游標,把需要注釋、編輯的行的開頭選中起來
4)、然后按大寫的 I
5)、再插入注釋符或者你需要插入的符號,比如"#"
6)、再按 Esc,就會全部注釋或添加了
例:在 sshd_config 檔案中 17 行到 20 行前面加一個#號
[root@xuegod63 ~]# vim /etc/ssh/sshd_config
改:

為:

命令列模式 Command-line 操作技巧
1、命令列模式 Command-line 操作技巧
:w 保存 save
:w! 強制保存
:q 沒有進行任何修改,退出 quit
:q! 修改了,不保存,強制退出
:wq 保存并退出
:wq! 強制保存并退出
:x 保存退出
:e! 復原,恢復到檔案打開后,沒有進行修改時的狀態, 修改了很多,不想保存,想復原,按:e!
在正常模式下,按下大寫的 ZZ,也可以保存并退出
例: wq! 強制保存并退出
[root@xuegod63 ~]# ll /etc/shadow
----------. 1 root root 1179 9 月 19 12:57 /etc/shadow
[root@xuegod63 ~]# vim /etc/shadow
例 1:呼叫外部檔案或命令
語法:在命令列模式下輸入: !+命令
例:在 vim 編輯檔案寫要寫入 MAC 地址,
[root@xuegod63 ~]# cp /etc/passwd a.txt
[root@xuegod63 ~]# vim a.txt
:!ifconfig
#在 vim 中呼叫 ifconfig 命令
讀取其他檔案,(把其他檔案中的內容追加到當前檔案中)
:r /etc/hosts
2、文本替換
格式 : 范圍(其中%所有內容) s 分隔符 舊的內容 分隔符 新的內容(分隔符可以自定義)
默認是每一行的第一個符合要求的詞(/g 全部)
[root@xuegod63 ~]# vim a.txt
:1,3 s/bin/xuegod
:1,3 s/bin/xuegod/g
:3 s/xue/aaaaa/g
#替換第 1 到 3 行中出現的第一個 bin 進行替換為 xuegod
#替換第 1 到 3 行中查找到所有的 bin 進行替換為 xuegod
#只把第 3 行中所有 xue 替換為 aaaaa 了
修改 a.txt ,先在檔案中隨意插入幾個 do 和 DO 字符
:% s/do/xuegod/g
:% s/do/xuegod/gi
#將文本中所有的 do 替換成 xuegod
#將文本中所有的 do 替換成 xuegod, 并且忽略 do 的大小寫
:% s@xuegod@do@g #將文本中所有的 xuegod 替換成 do,替換時,也可以使用@做分隔符
自定義 vim 使用環境
1、臨時設定
[root@xuegod63 ~]# vim a.txt
:set nu
設定行號
:set nonu 取消設定行號
:noh
取消高亮顯示
2、永久設定環境
vim /etc/vimrc #設定后會影響到系統所有的用戶
~/.vimrc #在用戶的家目錄下,創建一個.vimrc,這樣只影響到某一個用戶,沒有自己建一個
例 1:臨時定制 vim 開啟顯示行號功能
[root@xuegod63 ~]# echo "set nu" > /root/.vimrc
[root@xuegod63 ~]# vim /etc/passwd #發現默認已經有行號了

3、vim 打開多個檔案
方法 1:以上下形勢,打開兩個檔案
[root@xuegod63 ~]# vim -o /etc/passwd /etc/hosts

注:輸入:qa 一次退出所有打開的檔案
方法 2:以左右方式打開兩個檔案
[root@xuegod63 ~]# vim -O /etc/passwd /etc/hosts
注:ctrl+ww 在兩檔案之間進行切換編輯,大寫 O 左右分屏,小寫的 o 上下分屏
比較兩個檔案內容
[root@xuegod63 ~]# cp /etc/passwd mima.txt
[root@xuegod63 ~]# echo aaa >> mima.txt
方法 1:
[root@xuegod63 ~]# diff /etc/passwd mima.txt
40a41 > aaa
方法 2:
[root@xuegod63 ~]# vimdiff /etc/passwd mima.txt
其它編輯器
nano 編輯器
emacs 編輯器
GHOME 編輯器 gedit
例:
[root@xuegod63 ~]# gedit /etc/passwd
實戰:在 Centos6/RHEL6 上恢復 ext4 檔案系統下誤洗掉的檔案
[root@xuegod63 ~]# rm -rf /
#這個可以執行成功嗎?
執行不成功的,
rm: 在"/" 進行遞回操作十分危險
rm: 使用 --no-preserve-root 選項跳過安全模式
[root@xuegod63 ~]# rm -rf /* #這個可以執行成功,
ext4 檔案系統上洗掉檔案,可以恢復: extundelete ,ext3 恢復使用:ext3grep
windows 恢復誤洗掉的檔案: final data v2.0 漢化版 和 easyrecovery
xfs 檔案系統上洗掉檔案,暫時沒有太好的辦法進行完全恢復,需要找專業資料恢復公司
擴展:
Linux 檔案系統由三部分組成:檔案名,inode,block
windows 也由這三部分組成,
a.txt -->inode --> block
檔案名 存放檔案元資料資訊 真正存放資料
查看檔案檔案名:
[root@xuegod63 ~]# cp /etc/passwd a.txt
[root@xuegod63 ~]# ls a.txt
a.txt
查看 inode 號:
常識: 每個檔案,有一個 inode 號,
[root@xuegod63 ~]# ls -i a.txt
440266 a.txt
查看 inode 中的檔案屬性; 通過 stat 命令查看 inode 中包含的內容
[root@xuegod63 ~]# stat a.txt #查看 inode 資訊:
[root@xuegod63 ~]# ls -l a.txt
-rw-r--r-- 1 root root 1720 Oct 25 10:21 a.txt
block 塊:真正存盤資料的地方
邏輯洗掉:
為什么洗掉比復制快?


誤洗掉檔案后,第一件事要做什么??? 你不心洗掉把存了幾十年的大片洗掉了,
避免誤洗掉的檔案內容被覆寫, 如何避免?
卸載需要恢復檔案的磁區或以只讀的方式掛載
實戰:在 ext4 檔案系統上恢復被誤洗掉的檔案
下載 extundelete
http://sourceforge.net/
準備測驗磁區:
開源軟體發布中心
先添加一塊硬碟

[root@xuegod63 /]# fdisk /dev/sdb #創建一個 sdb1 磁區
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 204800 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 /dev/sda3
26 1301 1428 10240000 1024000 83
Linux
1301 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.
[root@xuegod63 ~]#reboot
或
[root@xuegod63 ~]# partx -a /dev/sdb #獲得新磁區表
擴展:
如果在根下洗掉檔案了,想恢復,怎么辦?
方法 1: 立即斷電,然后把磁盤以只讀方式,掛載到另一個電腦中進行恢復
方法 2:把 extundelete 在虛擬機上(虛擬機系統要和服務器版本一樣),提前安裝好后再復制到 U
盤中,把 U 盤插入服務器,恢復時,恢復的檔案要保存到 U 盤中,(不要讓恢復的資料寫到/下,那樣會覆寫之前洗掉的檔案)
使用新的磁區表:
[root@xuegod63 /]# mkdir /tmp/sdb1 #創建掛載點
[root@xuegod63 ~]# mkfs.ext4 /dev/sdb1 #格式化
[root@xuegod63 ~]# mount /dev/sdb1 /tmp/sdb1 #掛載
準備測驗環境
復制一些測驗檔案,然后把這些檔案再洗掉,然后演示恢復:
[root@xuegod63 ~]# cp /etc/passwd /tmp/sdb1
[root@xuegod63 ~]# cp /etc/hosts /tmp/sdb1
[root@xuegod63 ~]# echo aaa > a.txt
[root@xuegod63 ~]# mkdir -p /tmp/sdb1/a/b/c
[root@xuegod63 ~]# cp a.txt /tmp/sdb1/a
[root@xuegod63 ~]# cp a.txt /tmp/sdb1/a/b
[root@xuegod63 ~]# touch /tmp/sdb1/a/b/kong.txt
安裝 tree 命令:
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/tree-1.5.3-2.el6.x86_64.rpm
[root@xuegod63 ~]# tree /tmp/sdb1
/tmp/sdb1/
├── a
├── a.txt
└── b
├── a.txt
├── c #空目錄
└── kong.txt #空檔案
├── hosts
├── lost+found
└── passwd
lost+found
使用標準的 ext3/ext4 檔案系統格式才會產生的一個目錄,目的在于當檔案系統發生錯誤時, 將一
些遺失的片段放置到這個目錄下,
可以洗掉 rm -rf lost+found
可以創建 mklost+found
洗掉檔案:
[root@xuegod63 ~]# cd /tmp/sdb1/
[root@xuegod63 sdb1]# ls
a hosts lost+found passwd
[root@xuegod63 sdb1]# rm -rf a hosts passwd
誤洗掉檔案后,第一件事要做什么???
如何避免誤洗掉的檔案內容被覆寫???
卸載需要恢復檔案的磁區:或以只讀的方式掛載
[root@localhost ~]#cd /root
[root@localhost ~]# umount /tmp/sdb1
安裝 extundelet
上傳 extundelete 到 linux 中:
從 windows 上傳 extundelete 檔案到 linux,安裝 xmanager v5 或者CRT
[root@xuegod63 ~]# rpm -ivh /mnt/Packages/lrzsz-0.12.20-27.1.el6.x86_64.rpm
安裝后,就有了rz命令和sz命令 rz:
上傳 windows 中的檔案到 linux
sz 檔案名 :下載,將 linux 中的檔案傳到 windows
解壓并安裝 extundelet
[root@centos63~]#mount /dev/sr0 /mnt
[root@centos63~]# vim /etc/yum.repos.d/Centos-6.repo
[CentOS6]
name=CentOS-server
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@xuegod63]# yum -y install e2fsprogs-devel gcc gcc-c++ gcc-g77
[root@xuegod63 extundelete-0.2.4]# tar xf extundelete-0.2.4.tar.bz2
[root@xuegod63 ~]# cd extundelete-0.2.4
[root@xuegod63 extundelete-0.2.4]# ./configure #檢查系統安裝環境
[root@xuegod63 extundelete-0.2.4]# make
-j 4 #編譯,把源代碼編譯成可執行的二進制檔案,
-j 4 使用 4 行程同時編譯,提升編譯速度 或 使用 4 核 CPU 同時編譯,
[root@xuegod63 extundelete-0.2.4]# make install #安裝
install 和 cp 有什么區別?
install 復制時可以指定權限 cp 不可以
例:
[root@xuegod63 ~]# install -m 777 /bin/find /opt/find
[root@xuegod63 ~]# ll /opt/
恢復資料
方法 1:通過 inode 結點恢復
方法二:通過檔案名恢復
方法三:恢復某個目錄,如目錄 a 下的所有檔案:
方法四:恢復所有的檔案
[root@xuegod63 ~]# umount /tmp/sdb1/
[root@xuegod63 ~]# mkdir test #創建一個目錄使用于存放恢復的資料
[root@xuegod63 ~]# cd test/
方法 1:
通過 inode 結點查看被洗掉的檔案名字:
[root@xuegod63 test]# extundelete /dev/sdb1 --inode 2
lost+found 11
passwd 12 Deleted
hosts 13 Deleted
a 7313 Deleted
擴展:ext4 檔案系統的磁區根目錄的 inode 值為 2,xfs 磁區根目錄的 inode 值為 64
[root@xuegod63 test]# ls -id / #xfs 檔案系統
64 /
[root@xuegod63 test]# mount /dev/sdb1 /tmp/sdb1/
[root@xuegod63 test]# ls -id /tmp/sdb1/
2 /tmp/sdb1/
[root@xuegod63 test]# umount /tmp/sdb1/
方法 1:通過 inode 結點恢復
root@xuegod63 test]# extundelete /dev/sdb1 --restore-inode 12
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 9 groups loaded.
Loading journal descriptors ... 63 descriptors loaded.
[root@xuegod63 test]# ls
RECOVERED_FILES
[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/file.12
#沒有任何輸出,說明一樣
方法二,通過檔案名恢復
[root@xuegod63 test]# extundelete /dev/sdb1 --restore-file hosts
[root@xuegod63 test]# diff /etc/passwd RECOVERED_FILES/hosts
#沒有任何輸出,說明一樣
方法三:恢復某個目錄,如目錄 a 下的所有檔案:
[root@xuegod63 test]# extundelete /dev/sdb1 --restore-directory a
[root@xuegod63 test]# tree RECOVERED_FILES/a/
RECOVERED_FILES/a/
├── a.txt
└── b
└── a.txt
下面是原來的目錄結構:
[root@xuegod63 ~]# tree /root/sdb1-back/a/
/root/sdb1-back/a/
├── a.txt
└── b
├── a.txt
├── c
└── kong.txt
方法四:恢復所有的檔案
[root@centos6 test]# rm -rf RECOVERED_FILES/
[root@xuegod63 test]# extundelete /dev/sdb1 --restore-all
[root@centos6 test]# tree RECOVERED_FILES/
洗掉前后的資料:

實戰:使用 xmanager 等遠程連接工具管理 Linux
1.Linux 下常用遠程連接工具介紹

2.xmanager 使用方法

安裝以后打開

1、xshell 使用方法
例 1:連接一臺新的服務器

例 2:調整 xshell 字體大小

例 3:調整 rz 和 sz 命令的默認路徑

2、xftp 使用方法
例 1:上傳一個檔案夾到 Linux 服務器上

3、xstart 使用方法
方法 1:使用 xshell 直接運行圖形界面的程式
例 1:[root@xuegod63 ~]# gnome-terminal
例 2:[root@xuegod63 ~]# firefox &
方法 2:使用 xstart 呼叫桌面

注:使用 MK 給的 xmangaer5 安裝后,后期運行,提示更新到新版本, 你不要更新,更新,有可能
序列號就不能使用了,
https://www.netsarang.com/zh/free-for-home-school/
也可以下載官方免費版
各位小伙伴想要學習視頻+筆記和資料的
添加我們的小姐姐就可以領取哦!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/291860.html
標籤:其他
