一、命令总结
1、chmod:修改文件的用户权限
语法:
chmod [OPTION]... MODE[,MODE]... FILE...
chmod [OPTION]... OCTAL-MODE FILE...
chmod [OPTION]... --reference=RFILE FILE...
参数:
-R:递归修改 --reference=/path/to/somefile file... chmod 755 file... 修改某类用户的某些权限: u:属主 g:属组 o:其他 a:所有 chmod 用户类别=MODE ... chmod u=rw,g=r /fiel... 修改某类的用户某位或某些位权限 chmod 用户类别[-/+]MODE fiel...
示例1:修改/tmp/fstab文件的权限:属主为rwx,属组为rw,其他为rw
[root@node1 ~]# cp /etc/fstab /tmp/ [root@node1 ~]# ll /tmp/fstab -rw-r--r--. 1 root root 860 Aug 28 08:21 /tmp/fstab [root@node1 ~]# chmod 755 /tmp/fstab [root@node1 ~]# ll /tmp/fstab -rwxr-xr-x. 1 root root 860 Aug 28 08:21 /tmp/fstab [root@node1 ~]#
示例2:修改/tmp/fstab文件的权限:删除属组和其他的执行权限
[root@node1 ~]# ll /tmp/fstab -rwxr-xr-x. 1 root root 860 Aug 28 08:21 /tmp/fstab [root@node1 ~]# chmod go-x /tmp/fstab [root@node1 ~]# ll /tmp/fstab -rwxr--r--. 1 root root 860 Aug 28 08:21 /tmp/fstab [root@node1 ~]#
2、chown:修改文件的属主、属组,只有管理员使用此命令
语法:
chown [OPTION]... [OWNER][:[GROUP]] FILE...
chown [OPTION]... --reference=RFILE FILE...
参数:
-R 递归修改(修改目录及其内部文件的属主) --reference=/path/to/somefile file... 把file的属主设定为与somefile的属主一样 chown USERNAME:GRPNAME fiel...同时改变属主和属组 chown USERNAME,GRPNAME fiel...同时改变属主和属组 chown :GROUPNAME fiel... 只修改属组
示例1:修改/tmp/fstab文件的属主和属组为centos用户
[root@node1 tmp]# ll total 4 -rwxr--r--. 1 root root 860 Aug 28 08:21 fstab [root@node1 tmp]# chown centos:centos /tmp/fstab [root@node1 tmp]# ll total 4 -rwxr--r--. 1 centos centos 860 Aug 28 08:21 fstab [root@node1 tmp]#
示例2:修改/tmp/fstab文件的属组为root用户
[root@node1 tmp]# ll total 4 -rwxr--r--. 1 centos centos 860 Aug 28 08:21 fstab [root@node1 tmp]# chown :root /tmp/fstab [root@node1 tmp]# ll total 4 -rwxr--r--. 1 centos root 860 Aug 28 08:21 fstab [root@node1 tmp]#
3、grep:基于正则表达式的文本过虑的工具
grep是一个支持正则表达式,基于正则表达式能够完成文本过虑的工具。根据用户指定的文本模式(正则表达元字符以及正常字符组合而成)对目标文件进行逐行搜索,显示能匹配到的行。
语法:
grep [OPTIONS] PATTERN [FILE...]
参数:
--color[=WHEN], --colour[=WHEN]-o:只显示被模式匹配到的内容
-i:ignore case,不区分字符大小写
-v:显示不能够被模式匹配到的行
-o:只显示被模式匹配的字符串
-E:使用扩展的正则表达式
-A NUM:显示匹配行数的后NUM行
-B NUM:显示匹配行数的前NUM行
-C NUM:显示匹配行数的前后各NUM行
示例1:搜索有root的行,并语法作色
[root@node1 ~]# grep --color=auto "root" /etc/passwd #语法作色 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@node1 ~]#
示例2:引用变量搜索有root的行,并语法作色
[root@node1 ~]# user=‘root‘ [root@node1 ~]# grep --color=auto "$user" /etc/passwd #变量替换需要加双引号 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@node1 ~]#
示例3:给grep临时添加别名grep,通过别名搜索有root的行,并语法作色
[root@node1 ~]# alias grep=‘grep --color=auto‘ #给grep添加别名 [root@node1 ~]# grep ‘root‘ /etc/passwd #不加--color=auto也可以匹配字符作色 root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin [root@node1 ~]#
二、正则表达式
基本正则表达式:REGular EXPression 简写:REGEXP
是由元字符及正常字符所书写的模式,其中的元字符不表示字符本身的意义,而是用于表达控制或通配等功能;
基本正则表达式元字符:
字符匹配:
.:匹配任意单个字符;
[]:匹配指定范围内的任意单个字符;
[^]:匹配指定范围内的任意单个字符;
[0-9]或[[:digit:]]:匹配任意单个数字;
[^0-9]或[^[:digit:]]:匹配非数字的单个字符;
[a-z]或[[:lower:]]:匹配任意单个小写字母;
[A-Z]或[[:upper:]]:匹配任意单个大写字母;
[0-9a-zA-Z]或[[:alnum:]]:匹配所有的字母或数字(区分大小写)
[a-zA-Z]或[[:alpha:]]:匹配所有的字母
[[:space:]]:匹配所有的空白符
[[:punct:]]:匹配所有的标点符
次数匹配:
在期望匹配字符后面提供一个控制符,用于表达匹配其前面字符指定的次数;
*:任意长度,前面的字符的任意长度,表示0次、1次或多次;
.*:任意长度的任意字符,工作于贪婪模式,尽可以长的去匹配;
\?:匹配其前的字符0次或1次:表示其左侧字符可有可无;
\+:1次或多次:表示其左侧字符必须要有1个,或表示其左侧字符至少出现1次;
\{m\}:m次:表示其左侧字符精确出现m次;
\{m,n\}:精确m次,至多n次:表示其左侧字符精确出现m次,最多出现n次;
位置锚定:
^:锚定行首 ^PATTERN
$:锚定行尾 PATTERN$
^PATTERN$:用模式来匹配整行;
^$:匹配纯空白行;
单词锚定:
由非特殊字符组成的连续的字符串;
\<:锚定词首,也可用\b:\<PATTERN,或\bPATTERN
\>:锚定词尾,也可以用\b:PATTERN\>,或PATTERN\b
\<PATTERN\>:匹配PATTERN能匹配到的整个单词
分组:\(\)
注意:分组中的模式,在某次的具体匹配过程中所匹配到的字符,可以被grep记忆(保存于内置的变量中,这些变量是\1,\2,...),因此,还可以被引用;
\1:引用,模式中自左而右,由第一个左括号以及与之对应的右括号中的模式所匹配到的内容;
\2:引用,模式中自左而右,由第二个左括号以及与之对应的右括号中的模式所匹配到的内容;
扩展的正则表达式:
grep一般情况下支持基本正则表达式,可以通过参数-E支持扩展正则表达式,另外grep单独提供了一个扩展命令叫做egrep用来支持扩展正则表达式,这条命令和grep -E等价。虽然一般情况下,基本正则表达式就够用了。特殊情况下,复杂的扩展表达式,可以简化字符串的匹配。
grep:基本正则表达式
grep -E,egrep:扩展正则表达式
fgrep:fast,不支持使用正则表达式
扩展正则表达式就是在基本正则表达式的基础上,增加了一些元字符。
扩展正则表达式的元字符:
次数匹配:
*:任意长度,前面的字符的任意长度,表示0次、1次或多次;
.*:任意长度的任意字符,工作于贪婪模式,尽可以长的去匹配;
?:匹配其前的字符0次或1次:表示其左侧字符可有可无;
+:1次或多次:表示其左侧字符必须要有1个,或表示其左侧字符至少出现1次;
{m}:m次:表示其左侧字符精确出现m次;
{m,n}:精确m次,至多n次:表示其左侧字符精确出现m次,最多出现n次;
三、作业
1、显示/etc/passwd文件中以bash结尾的行
[root@node1 tmp]# grep "bash\>" /etc/passwd root:x:0:0:root:/root:/bin/bash duyong:x:500:500::/home/duyong/:/bin/bash centos:x:501:502::/home/centos:/bin/bash ubuntu:x:502:503::/home/ubuntu:/bin/bash grid:x:498:498::/home/grid:/bin/bash [root@node1 tmp]#
2、显示/etc/passwd文件中的两位数或三位数
[root@node1 tmp]# grep "\<[0-9]\{2,3\}\>" /etc/passwd mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin duyong:x:500:500::/home/duyong/:/bin/bash centos:x:501:502::/home/centos:/bin/bash ubuntu:x:502:503::/home/ubuntu:/bin/bash grid:x:498:498::/home/grid:/bin/bash [root@node1 tmp]#
3、显示`netstat -tan`命令结果中以‘LISTEN’后跟0个、1个或者多个空白字符结尾的行
[root@node1 tmp]# netstat -tan | grep "LISTEN[[:space:]]*$" tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 :::22 :::* LISTEN tcp 0 0 ::1:25 :::* LISTEN [root@node1 tmp]#
4、添加用户bash、testbash、basher以及nologin用户(nologin用户的shell为/sbin/nologin);而后找出/etc/passwd文件中用户名与其shell名相同的行
5、显示当前系统上root、centos或者user1用户的默认shell和UID (请事先创建这些用户,若不存在)
6、找出/etc/rc.d/init.d/functions文件中某单词(单词中间可以存在下划线)后面跟着一组小括号的行
7、使用echo输出一个路径,而后egrep找出其路径基名;进一步的使用egrep取出其目录名
8、找出ifconfig命令执行结果中1-255之间的数字
本文出自 “啊杜” 博客,请务必保留此出处http://253737.blog.51cto.com/243737/1689360
原文地址:http://253737.blog.51cto.com/243737/1689360