vim的工作特性:
!!!在末行模式下的设定,仅对当前vim进程有效;(温馨提示)
1、分为两种:
全局:/etc/vimrc
用户个人:~/.vimrc
2、行号
显示:set number(set nu) 操作:让vi进入命令模式之后,可以输入set number并按回车打开行号;
取消显示: set nonu 操作:在末尾用set nonumber命令行关闭或者是 set number即set nu和 set nonu的简写。
3、括号匹配高亮
匹配:DoMatchParen 例子:~/.vimrc中修改,可以使用“set loaded_matchparen=1”
扩展(
如果要再开启,可以用:DoMatchParen
如果要更改颜色,可以用hi,例如:hi MatchParen ctermbg=blue ctermfg=white)
取消:NoMatchParen
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190722205924931.jpg)
输入set nocursorline
4、自动缩进:
启用:set ai (让vi自动对齐)
禁用:set noai (取消自动对齐)
一些其他set命令参观地址[添加链接描述](https://www.cnblogs.com/client-server/p/5606260.html)
5、高亮搜索
启用:set hlsearch
例子:
1、临时设置:vim打开文档-->命令行形式输入:set hlsearch。
缺点:关闭文档后,下次打开,又需要重新设置一遍。
2、永久设置(推荐):在~/.vimrc中配制vim ~/.vimrc在文件中加上set hlsearch然后保存退出便可。
优点:一 次设置,永久生效。
禁用:set nohlsearch
例子:
用 :nohlsearch 可以暂时关闭对之前使用搜索串的高亮。再次搜索之后,还是会再次高亮。
如果找到搜索串之后不希望它们高亮,就在 .vimrc 里设置 set nohlsearch
6、语法高亮
syntax on 开启代码高亮
syntax off 关闭代码高亮
syntax enable 开启代码高亮
7、忽略字符大小写
启用:set ic
禁用:set noic
8、设置tab键缩进4个字符
set tabstop=4 简写 ts=4
如果设置为空格需要添加一行 set expandtab
获取帮助:内置的帮助文档 用法就是在 末行模式下输入
:help
:help subject
`
bash脚本编程之算术运算
+,-,*,/, %
算术运算格式:
(1) let VAR=算术运算表达式 ;例如:let result=1+1
(2) VAR=$[算术运算表达式] 例如:result=$[1+1]
(3) VAR=$((算术运算表达式)) 例如:result=$((1+1))
(4) VAR=$(expr $ARG1 $OP $ARG2) 注意 彼此之间必须有空格 例如 expr 1 + 1
文件查找
实现工具:locate ,find
locate命令参数
依赖于事先构建好的索引库;
系统自动实现(周期性任务);
手动更新数据库(updatedb);
工作特性: 查找速度快;模糊查找;非实时查找;
locate命令参数
-b:只匹配路径中的基名;
-c:统计出共有多少个符合条件的文件;
-r:BRE 可以基于基本正则表达式来实现正则表达式
-n:显示多至n个输出
-h:显示辅助信息
-v:显示程序的版本信息
-d:指定资料库的路径
实例
查找和pwd相关文件
locate pwd
搜索/etc目录下所有sh开头的文件
locate /etc/sh
find命令
实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找;
工作特性:查找速度略慢;精确查找;实时查找;
find语法
查找当前目录下的所有文件
find命令的一般格式为:
find [-H] [-L] [-P] [path...] [expression]
查找起始路径:指定具体搜索目标起始路径;默认为当前目录;
查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等等标准进行;默认为找出指定路径下的所有文件;
处理动作:对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;
查找条件:表达式:选项和测试
根据文件名查找:
-name "pattern"
-iname "pattern" 不区分文件名中的大小写
pattern 支持glob风格的通配符;不支持正则表达的写法
*, ?, [], [^] 例如:~]# find /etc/ -name "pass*" -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名;
例如:
当前目录及子目录中查找文件名以一个大写字母开头或者以小写a或b开头的文件
$ find . -name "[A-Za-b]*" -print
./a_book_of_c.chm
./TMP1234
当前目录查找文件名不以大写字母开头,之后跟一个小写字母,再之后是两个数字,最后是.txt的文 件:
$ find . -name "[^A-Z][a-z][0-9][0-9].txt" -print
./@y38.txt
注意:此处的模式匹配并不符合正则表达式。
根据文件从属关系查找:
-user USERNAME:查找属主指定用户的所有文件;
-group GRPNAME:查找属组指定组的所有文件; -uid UID:查找属主指定的UID的所有文件;
-gid GID:查找属组指定的GID的所有文件; -nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
根据文件的大小查找:
-size [+|-]#UNIT
常用单位:k, M, G
#UNIT:(#-1, #)
-#UNIT:[0,#-1]
+#UNIT:(#, oo) 不包含#
1.文件有三个时间属性:创建时间、最近修改时间、最近访问时间。
2.最近修改时间又包括两种,一是文件的状态(也即权限如rwx等)最近被修改时间,一是文件的数据(也即内 容)最近被修改时间。touch命令改变的即是文件数据最近被修改时间。
3.最近访问时间,指的是最近一次文件数据(内容)被访问的时间。因此,使用ls命令输出文件的相关信息并不 会 修改文件的最近访问时间。
"-amin n"和"-atime n"的处理方法都是:根据当前时间和文件的相应时间属性求n值,然后比较n值和参数n,看 是否符合要求。但是这个求n值的过程却有很大不同,他们的不同也代表了两组(基于分钟和基于天)的不同: 可参考:
$ find . -amin 3
根据权限查找
-perm [/|-]mode
mode:精确权限匹配;
/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;
9位权限之间存在“或”关系;
-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;
9位权限之间存在“与”关系;
- perm基本上有下面这几中形式:
-perm mode File's permission bits are exactly mode.
-perm -mode All of the permission bits mode are set for the file.
-perm /mode Any of the permission bits mode are set for the file.
-perm +mode (此形式已经不推荐使用,功能与/mode相同)
例子
查找主目录下所有的后缀名为.txt .pdf .rm并且具有可执行权限位的文件。
$ find ~ /( -name ".txt" -o -name ".pdf" -o -name "*.rm" /) /
-not /( -type d -o -type l /) /
-perm /111 -print
处理动作
对符合查找条件的文件做出的操作,例如删除等操作;默认为输出至标准输出;
练习:
1、查找/var目录下属主为root,且属组为mail的所有文件或目录;
~]# find /var -user root -a -group mail -ls
2、查找/usr目录下不属于root, bin或hadoop的所有文件或目录;用两种方法;
~]# find /usr -not -user root -a -not -user bin -a -not -user hadoop ~]# find /usr - not \( -user root -o -user bin -o -user hadoop \) -ls
3、查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是hadoop用户的 文件或目录;
~]# find /etc -mtime -7 -a -not \( -user root -o -user hadoop \) -ls ~]# find /etc - mtime -7 -a -not -user root -a -not -user hadoop -ls
4、查找当前系统上没有属或属组,且最近一周内曾被访问过的文件或目录;
~]# find / \( -nouser -o -nogroup \) -atime -7 -ls
5、查找/etc目录下大于1M且类型为普通文件的所有文件;
~]# find /etc -size +1M -type f -exec ls -lh {} \;
6、查找/etc目录下所有用户都没有写权限的文件;
~]# find /etc -not -perm /222 -a -not -type d$:
7、查找/etc目录至少有一类用户没有执行权限的文件;
~]# find /etc -not -perm -111 -type f -ls
8、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的所有文件;
~]# find /etc -perm -113 -type f -ls