1.命令别名 alias的用法
通过alias命令实现:
(1)alias不带任何选项将显示当前shell下所有的可用的命令别名的信息,其中,等号之前表示新的命令名称,等号右边表示的是要替代的命令及其参数。
(2)定义别名:
alias new_name='old_name options'
注:通过命令行定义的命令别名只对当前shell有效,如果想永久有效,需要定义在配置文件中
仅对当前用户有效,其配置文件为:~/.bashrc
对所有用户都有效的配置文件为/etc/bashrc
2. grep
grep基本介绍:
grep是一款文本过滤工具
作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查,打印匹配到的行
模式:由正则表达式字符及文本字符所编写的过滤条件
正则表达式:是由一类特殊字符及文本字符所编写的模式,其中有些字符不表示字符字面的意思,而是表示控制或通配的功能
正则表达式分两类:基本正则表达式和扩展正则表达式,其中grep支持正则基本正则表达式,egrep支持扩展正则表达式
grep语法:
grep [OPTIONS] PATTERN [FILES...]
--color 高亮显示匹配到的字符串
-v : 显示不能被匹配到的行
-i : 忽略字符大小写
-o : 仅显示匹配到的字符串
-q : 静默模式,不输出任何信息
基本正则表达式元字符:
字符匹配:
. :匹配任意单个字符
[] :匹配指定范围内的任意单个字符
[^] : 匹配指定范围外的任意单个字符
其中:[:alnum:]表示所有的字母和数字
[:alpha:]表示所有的字母(不区分大小写)
[:dight:]表示所有的数字
[:lower:]表示所有的小写字母
[:upper:]表示所有的大写字母
[:space:]表示所有的空白字符
[:punct:]表示所有的标点符号
次数匹配:
用于在要指定的字符后面,用于指定前面的字符要出现的次数
* :匹配前面的的字符任意次,仅表示次数
.* : 表示任意长度的任意字符
\? :表示匹配前面的字符0次或1次,即前面的字符可有可无
\+ : 表示匹配前面的字符至少一次
\{m\} : 匹配前面的字符m次
\{m,n\} :表示匹配前面的字符至少mci,至多n次
\{0,n\} :表示匹配前面的字符至多n次
\{m,\} :表示匹配前面的字符至少m次
位置锚定:
对特定位置进行定位
^:行首锚定:用于模式的最左侧
¥:行尾锚定:用于模式的最右侧
^PATTERN :用于模式匹配整行
^$:空行,不含有空格的行
^ [:space:]*$:空行,包含有空格的行
\<:词首锚定,用于单词匹配的左侧
\>:词尾锚定,用于单词匹配的右侧
\<PATTERN\>:匹配整个单词
分组:分组是指将一个或多个字符捆绑在一起,当做一个整体来处理,其符号为: \(\)
例如:\(xy\)*ab:表示xy这个整体可以出现任意次
注:1 分组括号中的模式匹配到的内容会被正则表达式记录在内部变量内,这些变量命名为:\1,\2,\3...
\1:表示的是从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符
2 后向引用:引用前面分组括号中的模式所匹配到的字符,而非模式本身
扩展正则表达
字符匹配:
[] :匹配指定范围内的任意单个字符
[^] : 匹配指定范围外的任意单个字符
基本与基本正则表达式相同
次数匹配:
*:任意次
?:0次或1次
+ :至少1次
{m}:精确匹配m次
{m,n}:至少m次,至多nci
{m,}:至少m次
{0,n}:至多n次
锚定:与基本正则表达式相同
分组:():用括号括起来表示要引用的内容,不需要进行转义
后向引用:\1,\2,\3
本周作业作业:
(1)定义一个对所有用户都生效的命令别名,例如:lftps='lftp 172.168.0.1/pub'
演示:vim /etc/bashrc 在末行加上如下命令,并且加上注释,重启后生效
也可以通过bash进程重新读取配置文件:
source /path/to/config_file 或 ./path/to/config_file
(2)显示 /etc/passwd文件中不以 /bin/bash结尾的行
grep -v "/bin/bash$" /etcpasswd
(3)显示 /etc/passwd文件中,包含2位数字或者三位数字的行
grep "\<[0-9]\{2,3\}\>" /etc/passwd
(4)显示/proc/meminfo文件中以大写或小写S开头的行,用三种方式实现
(5)使用echo输出一个绝对路径,使用egrep取出路径名,类似执行dirname /etc/passwd的结果
echo "/etc/passwd" | egrep -o "[^/]+/?$" | cut -d/ -f1
(6) 找出ifconfig中的ip地址,要求结果只显示ip地址
ifconfig | grep -o -E "\<["
(7)编写脚本,实现自动添加三个用户,并计算这三个用户的uid之和
(8)vim 定制自动缩进4个字符
在末行模式下输入 set ai 就可以保证此行再输入命令前缩进了4个字符,当设置了自动缩进后,按ENTER键时就会按照此行缩进字符自动缩进
(9)find用法以及常用用法:
find命令是在目录层级结构中查找符合条件的文件,所以它可以同时查指定目录及其子目录。同时它还可以对搜索结果执行一定的文件处理操作。
命令语法:
find [选项] [查找路径]... [查找条件] [处理操作]
其中:
(1)查找路径:缺省值为当前路径,路径可有有多个,路径之间以空格隔开
(2)查找条件:
-name "文件名称”,支持通配符
-iname "文件名称“ ,与name基本相同,但是它忽略字母大小写
-user username 查找指定用户属主的文件,同样还有-uid UID
-group groupName查找属于指定组的文件,同样还有-gid GID
-type filetype:根据文件类型查找,常用的类型为"f"普通文件,"d"目录文件
-size [+|-]数字单位:常用单位为k、M、G,+号表示大于,-号表示小于等于,无符号则以10M为例,表示9M<文件大小<=10M。
-atime [+|-]数字 :表示文件的最后被访问时间,以天为单位,+号表示大于等于天数+1,-号表示小于天数,无符号则以10为例,表示 10<=文件最后访问时间<11 。同样还有-mtime表示文件内容数据的最后修改时间,-ctime表示文件的元数据的最后修改时间
-amin表示文件的最后被访问时间,以分钟为单位,规则与-atime一样。同样还有-mmin表示文件内容数据的最后修改时间 和-cmin 表示文件的元数据最后修改时间
-perm [+|-] MODE 表示根据文件的访问权限为条件。
-a表示前后两个条件要同时满足(与的关系)
-o表示前后两个条件满足一个即可(或的关系)
-not 或 !表示后面的条件取反。
(3)处理操作
-print 显示结果在屏幕上,这是默认操作
-ls 对结果文件使用ls -l 长格式显示有屏幕上。
-delete: 删除查找到的文件
-fls /路径/结果文件名 : 把结果以长格式信息保存到指定的文件中
-exec 命令 {} \; :表示对查找到的文件执行相应的命令,{}表示查找到的文件在命令中的占位符。
-ok 命令 {} \; :与exec相同,但是对每个文件进行操作前,会弹出提示信息等用户确认。
常用用法的实例演示如下:
$find /etc -name hosts
在目录/etc中查找文件hosts
$find / -size +204800
在根目录下查找大于100MB的文件,size是以块为单位,2块=1K
$find /tmp -user user1
在/tmp目录下查找所有者为user1的文件
$ find /etc -cmin -5
在/etc下查找5分钟内被修改过属性的文件和目录
$ find /etc -size +163840 -a -size -204800
在/etc下查找大于80MB小于100MB的文件
$ find /etc -name hosts -exec ls -l {} \;