bash脚本编程之算术运算和vim的工作特性

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值