共计 9268 个字符,预计需要花费 24 分钟才能阅读完成。
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/…
也能够下载官网免费版
各位小伙伴想要学习视频 + 笔记和材料的 | |
增加咱们的小姐姐就能够支付哦! |