vim的使用
一、vim
在vim异常退出系统中会在所编辑的文件目录中生成.file.swpvim再次编辑此文件时会出现相应提示
按 "o" open
按 "e" edit
按 "r" recover(恢复)
按 "d" delete.swap file
按 "q" quit
2.在vim的命令模式下可以配置vim的工作方式
:set nu 行号添加
:set nonu 取消行号
:set mouse=a 添加鼠标选择
:set cursorline 行线显示
以上设定都是临时的,因为每打开一次vim时,就是一个新的进程,故不会保留旧进程的vim工作方式。
永久设定方式
vim /etc/vimrc 此文件为vim的配置文件,在此文件最后加入以上参数。然后wq退出保存。
注意:当不确定对vim配置文件的修改时,可以先将配置文件备份。
3.vim命令模式下关键字搜索
/关键字
n向下匹配
N向上匹配
高亮显示freya
4.vim命令模式下字符的管理
(1).字符的复制
yl 复制一个字母
y3l 复制3个字母
yw 复制一个单词
y3w 复制3个单词
yy 复制一行
y3y 复制3行
p 复制完成后按“P”粘贴
(2).字符的删除
dl 删除一个字母
d3l 删除3个字母
dw 删除一个单词
d3w 删除3个单词
dd 删除一行
d3d 删除3行
(3).字符的剪切
cl 剪切一个字母
c3l 剪切3个字母
cw 剪切一个单词
c3w 剪切3个单词
cc 剪切一行
c3c 剪切3行
esc ---> p 剪切过后会进入到插入模式,在执行粘贴动作时一定要退出插入模式
注意:u表示撤回前一个更改。
(4).vim的可视化模式
在命令模式下按“ctrl+v”进入到可视模式在可视模式下可以区域选择字符
可视模式下批量添加字符
*>> ctrl+v选中要加入字符所在列
*>> 按“I”进入插入模式,写入要加入的字符
*>> 按esc
批量更改后的内容:
(5).批量修改字符
:%s/原有字符/替换后字符 只替换每一行中出现的第一个原有字符
:%s/原有字符/替换后字符/g 替换所有
:1,ns/原有字符/替换后字符/g 替换1-n行
$ 追加
4.vim的分屏功能
ctrl+w--> s 上下分屏
ctrl+w--> v 左右分屏
ctrl+w c 关闭光标所在屏幕
ctrl+w 上下左右 光标移动到指定屏幕
:sp file2 同时编辑当前文件和file2
vimdiff file1name fie2name 在vim里查看两个文件的不同
如:vimdiff file1 file2
![]()
注意:ctrl和w同时按,再加上其他。
5.vim光标移动
在命令模式下
:数字 移动到指定的行
G 文件最后一行
gg 第一行
在插入模式下
i 光标所在位置插入
I 光标所在行行首
a 标所在字符的下一个位置
A 光标所在行行尾
o 光标所在行下一行
O 光标所在行上一行
s 删除光标所在字符插入
S 光标所在行插入
6.vim的退出模式
:q 当用vim打开文件但没有对字符作任何操作时可直接退出
:q! 当用vim打开文件并对字符作操作,放弃所有操作退出
:wq 保存退出
:wq! 强行保存退出,对超级用户及文件所有人生效
当文件提示是只读类型时,可以强制退出保存(对超级用户及文件所有人生效)
7.vim手册
vimtutor vim的手册
:q 退出vimtutor
二、管理输入输出
1.在系统中用普通用户做该实验,执行下述命令例:find /etc -name passwd -name表示按照姓名查找
因为student用户权限问题会有以下输出
find: ‘/etc/pki/CA/private’: Permission denied 因为普通用户没有进入权力,所以报错
find: ‘/etc/pki/rsyslog’: Permission denied
find: ‘/etc/audit’: Permission denied
/etc/passwd 正确输出
find: ‘/etc/polkit-1/rules.d’: Permission denied
find: ‘/etc/polkit-1/localauthority’: Permission denied
find: ‘/etc/dhcp’: Permission denied
find: ‘/etc/selinux/targeted/modules/active’: Permission denied
find: ‘/etc/lvm/archive’: Permission denied
find: ‘/etc/lvm/backup’: Permission denied
find: ‘/etc/lvm/cache’: Permission denied
find: ‘/etc/grub.d’: Permission denied
/etc/pam.d/passwd 正确输出
find: ‘/etc/audisp’: Permission denied
find: ‘/etc/firewalld’: Permission denied
find: ‘/etc/cups/ssl’: Permission denied
find: ‘/etc/ipsec.d’: Permission denied
find: ‘/etc/libvirt’: Permission denied
find: ‘/etc/sudoers.d’: Permission denied
find: ‘/etc/named’: Permission denied
上图表示/etc下的文件,标志“×”的就是普通用户没哟访问权限的文件。
在linux系统中,正确输出的编号为1,错误输出编号为2
find /etc -name passwd > file 重定向正确输出(将错误输出通过字符设备显示在shell里,正确输出保存在file里)
错误输出显示在shell里:
正确输出保存在文件中:
find /etc -name passwd 2> file 重定向错误输出(将正确输出通过字符设备显示在shell里,错误输出保存在file里)
find /etc -name passwd &> file 重定向所有输出(将正确和错误输出都保存在file中,shell中不显示任何内容)
注意:将错误输出也保存在file中,当点击reload(重新加载)时,如下图,会将原来file中的文件覆盖。故>, 2> ,&> 都会覆盖源文件内容 ,附加“>file”表示清空file。
覆盖原文件后,file内容变为:
2.为解决覆盖源文件的问题,有下面解决方法
find /etc -name passwd >> file 追加正确输出
find /etc -name passwd 2>> file 追加错误输出
find /etc -name passwd &>> file 追加所有输出
注意:>> 2>> &>>不会覆盖源文件内容,会把相应的输出字符方到文件的最后
3.管道(|)
管道的作用是将前一条命令的输出变成管道后命令的输入
(1)ls /bin | wc -l
统计ls /bin 命令输出的行数
(2)由于系统中错误的输出是无法通过管道的。所以用2>&1可以把错误的输出编号由2变成1
比如 find /etc -name passwd 2>&1 | wc -l 显示正确输出和错误输出的总数
find /etc/ -name passwd 2>&11>/dev/null |wc -l 显示错误输出的个数
注意:1>/dev/null 表示将正确输出重定向到根下的字符设备的空里(字符设备的内容用于显示与shell里)2>&1和1>/dev/null,按顺序执行,而一旦有输出就执行|wc -l,即先将错误输出转化为正确输出,每转化一次,就执行|wc
-l,则错误输出的数目不断更新,直至2>&1执行结束。然后再执行1>/dev/null每次执行都没有输出,故不执行|wc -l,那么最后就统计出错误输出的数目了。如果调换顺序,如find /etc/ -name passwd 1>/dev/null 2>&1 |wc -l,表示先执行1>/dev/null,没有输出,故|wc
-l为0,将所有正确输出(1)都重定向到/dev/null后,再执行2>&1,将所有错误输出都转化为正确输出,然后将转化的正确输出再重定向到/dev/null,最后|wc -l的结果就是0,如上图。
(3)tee 复制输出到指定位置
date |tee file |wc -l tee命令复制date命令的输出到file中,并统计输出行数
三、gedit
1.快捷键
ctrl+n 在gedit中打开一个新的tab
ctrl+s 保存文件
ctrl+o 打开文件
ctrl+x 剪切字符
ctrl+v 粘贴字符
ctrl+c 复制字符
yelp help:gedit gedit的图形手册
2.
< 输入
cat >>文件名<<end 向文件内追加内容
注意:end表示结束标志,即当在shell中输入end时,在file里追加的内容截止。
3.更改密码
以root身份更改普通用户密码
passwd student <<end
>密码
>密码
>end