p24
vim +12 file 打开文件后处于第12行,有利于快速定位
vim + 打开文件定位最后一行
vim + /pattern 打开文件,定位至第一次被pattern匹配到的行首
vim模式:
编辑模式
输入模式
末行模式
模式转换:
编辑模式—>输入模式
i:在当前光标所在字符的前面,转为输入模式
a:在当前光标所在字符的后面,转为输入模式
o:在当前光标所在字符的下方,新建一行,并转为输入模式
I:在当前光标所在行的行首,转为输入模式
A:在当前光标所在行的行尾,转为输入模式
O:在当前光标所在字符的上方,新建一行,并转为输入模式
编辑模式—>末行模式
输入:进入;敲击esc键退出末行模式
关闭文件
编辑模式下退出:按两下大写的Z
移动光标
1逐字符移动
h 左
l 右
j 下
k 上
4h 向左移动4个字符
2以单词为单位移动
w 移至下一个单词的词首
e 跳至当前或下一个单词的词尾
b 跳至当前或前一个单词的词首
支持数字加移动符
3行内跳转:
0 跳转绝对行首
^ 跳转行首的第一个非空白字符
$ 跳转行尾
4行间跳转
G 跳转最后一行
支持数字跳转 6G:跳转第6行
翻屏
Ctrl+f 向下翻一屏
Ctrl+b 向上翻一屏
Ctrl+d 向下翻半屏
Ctrl+u 向上翻半屏
删除单个字符
x:删除光标所在处的单个字符
5x 删除光标所在处及以后的5个字符
删除命令:d
d命令通常和跳转命令组合使用
4dw; 4de; 4db
dd:删除当前光标所在行
4dd:删除包括当前光标行所在的4行
末行模式删除
. 表示当前行
$ 表示最后一行
+4 向下的4行
删除当前行到100行之间的所有行,包括第100行
粘贴命令 p
p:如果删除或复制为整行内容,则粘贴至光标所在行的下方,如删除或复制为非整行内容,则粘贴至光标所在行的后面。
P:如果删除或复制为整行内容,则粘贴至光标所在行的上方,如删除或复制为非整行内容,则粘贴至光标所在行的前面。
复制命令 y
用法同d命令
修改:先删除内容,再转为输入模式
c:用法同d命令
替换:r
R:替换命令
撤销编辑操作 u
u:撤销前一次的编辑操作,可和数字结合使用5u(最多可撤销50次)
撤销最近一次撤销操作:Ctrl+r
重复前一次编辑操作: .
可视化模式
v:按字符选取
V:按矩形选取
查找
/pattern:从文件首部向尾部查找
?pattern:从光标所在处向首部查找(n;N查找多处可以用n;和N移动)
查找并替换
在末行模式下使用,同sed使用方法
从当前行到最后一行的上一行将he替换成HE
1,,$(表示从第一行到最后一行,可以用%代替)
p25
使用vim编辑多个文件
vim file1 file2 file3;默认打开file1,末行模式下使用next切换下一个文件,prev切换前一个文件,last最后一个文件,first切换第一个文件。末行模式使用qall即可退出。
分屏显示文件
Ctrl+w ,s :水平拆分窗口
Ctrl+w ,v:垂直拆分窗口
Ctrl+w ,arrow :窗口间移动光标
qa关闭所有窗口
分窗口编辑多个文件
vim -o file file 水平分割显示
vim -O file file 垂直分割显示
qa关闭多有窗口
将当前文件中部分内容另存为另一个文件
末行模式下使用w命令
1,2w /path/to/somefile
将另一个文件的内容填充在当前文件中
r /path/to/somefile
同shell交互
末行模式下 ! command
显示/取消行号
set nu
set nonu
设定/取消自动缩进
set ai
set noai
显示忽略或区分字符大小写
set ic
set noic
查找到的文本取消或显示高亮
set hlsearch
set no hlsearch
语法高亮
syntax on
syntax off
vim配置文件
/etc/vimrc 针对全局
~/.vimrc 针对个人用户
组合条件测试
组合条件测试
-a 与
-o 或
! 非
if [ $# -gt 1 -a $# -le 3 ]
if [ $# -gt 1 ] && [ $# -le 3 ]
p26文件查找
文件查找
locate:非实时,模糊匹配,查找是根据全系统文件数据库进行的
updatedb 生成查找数据库,刚建立的计算机需要生成数据库才能使用locate命令。
find:实时、精确、支持众多标准、速度慢
find 查找路径 查找标准 查找到以后的处理运作
查找标准:
-name
文件名通配:*、?、[]
-iname 文件名匹配不区分大小写
-regex PATTERN 基于正则表达式进行文件名匹配
-user USERNAME 根据属主查找
-group GROUPNAME 根据属组查找
-uid UID 根据UID查找【一些用户被删除后属主就会变成UID】
-gid GID根据GID查找
-nouser 查找没有属主的文件
-nogroup 查找没有属组的文件
-type 根据文件类型查找
f、d、c、b、l、p、s
-size 根据大小查找
[+]10k至少为10k的文件、#M、#G
组合查找条件
-a 与
-o 或
-not 非
#查找属主不是user1也不是user2的用户
find ./ -not -user user1 -a -not -user user2
find ./ -not \( -user user1 -o -user user2 \)
-mtime:修改的
-ctime :改变的
-atime :访问的
[+|-]# +5五天之内没有访问过的文件,-5五天之内访问过的文件,5距现在刚好5天整访问过的文件。
-mmin
-cmin
-amin
[+|-]#
-perm MODE 根据权限查找
-perm mode 精确匹配,要求每一位都匹配 【644,三位权限都啊要匹配】
-perm -mode 要求属主、属组、其它对应的权限都被找到的文件包含。
-perm /mode 只要有一位权限匹配即可【644,匹配的文件有一个匹配即可】
查找动作:
-print 显示结果
-ls 类似ls -lh 详细显示每一个结果
-ok command {} \; 每一次操作都需要用户确认
-exec command {} \; 每次操作不需要用户确认
#1
find /var -user root -a -group mail
#2
find /usr -not \( -user root -o -user bin -o -user student\)
#3
find /etc -mtime -7 -not \( -user root -o -user student \)
#4
find / -atime -1 -a \( -nouser -o -nogroup \) -exec chown root {} \;
find / -atime -1 -a \( -nouser -o -nogroup \) -exec chgrp root {} \;
或者
find / -atime -1 -a \( -nouser -o -nogroup \) -exec chown root:root {} \;
#5
find . -type d -a \( -size +10k \) -ls
#6
find /etc -not -perm -222 -ls
p27
特殊权限
SUID:运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者;
chmod u+s file :添加suid权限
chmod u-s file :去掉suid权限
如果file原来就有执行权限,添加suid后显示s;否则显示为S
SGID:运行某程序时,相应进程的属组是程序文件自身的属组,而不是启动者;
chmod g+s file
chmod g-s file
Sticky:在一个公共目录,每一个人都可以创建文件,删除自己的文件,但不能删除别人的文件。
chmod o+t DIR
chmod o-t DIR