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行

QQ截图20220203205805.png
删除当前行到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使用方法

QQ截图20220203212120.png
从当前行到最后一行的上一行将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 非

  1. #查找属主不是user1也不是user2的用户
  2. find ./ -not -user user1 -a -not -user user2
  3. 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 {} \; 每次操作不需要用户确认

QQ截图20220204160018.png

  1. #1
  2. find /var -user root -a -group mail
  3. #2
  4. find /usr -not \( -user root -o -user bin -o -user student\)
  5. #3
  6. find /etc -mtime -7 -not \( -user root -o -user student \)
  7. #4
  8. find / -atime -1 -a \( -nouser -o -nogroup \) -exec chown root {} \;
  9. find / -atime -1 -a \( -nouser -o -nogroup \) -exec chgrp root {} \;
  10. 或者
  11. find / -atime -1 -a \( -nouser -o -nogroup \) -exec chown root:root {} \;
  12. #5
  13. find . -type d -a \( -size +10k \) -ls
  14. #6
  15. 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