grep正则表达式

grep:这是一个搜索命令,搜文本并且将文本行显示出来

(1)grep -i 表示搜索的时候忽略大小写

(2)grep --colour 表示搜索关键字带颜色

例如:grep --colour 'root' /etc/passwd
显示为在etc的passwd里的 root 选项有颜色

*为了方便我们可以定义个别名,让他搜索的时候默认显示为带颜色 alias grep='grep --colour' (3)grep -v 表示显示出没有被匹配到的行

例如:grep -v 'root' /etc/passwd
显示为 不包含root关键字的行

(4)grep -o 只显示匹配到的字符串

正则表达式:Regular Expression,简写为REGXP

元字符:

*:任意长度的任意字符

?:任意单个字符

[]:任意指定范围内的

[^]:任意指定范围外的

.:点 表示匹配任意单个字符

例如:

grep 'r..t' /etc/passwd 

这个命令显示出来的是 root 和 r任意 任意t
可以理解为r1ot,或者ro1t,或者r11t.

匹配次数: 1) *:匹配其前面的字符任意次

例如:a,b,ab,aab,acb,adb,amnb,amnbamnbamnb

a * b匹配上述, 这里a * b可以理解成为a* b 意思就是a出现了几次 后面跟一个b.    a可以出现零次,所以匹配的结果为:
b ,ab ,aab 其它都不符合 2) .*:任意长度的任意字符

例如:a,b,ab,aab,acb,adb,amnb,amnbamnbamnb

a.*b匹配上述 这里a.*b可以理解为 a开头b结尾 ab中间是啥都行.所以匹配结果为:ab,aab,acb,adb,amnb,amnbmanbmanb. 3) ?:匹配其前面的字符1次或0次

例如:a,b,ab,aab,acb,adb,amnb,amnbamnbamnb0

a\?b匹配上述 \代表转义,相当于b前面一次或者没有a都可以匹配
所以匹配结果为:b,ab,aab,acb,adb,amnb,amnbmanbmanb.

要注意的是 这个命令 只是部分匹配就可以了不是全部匹配. 4) \{m,n\}:匹配其前面的字符至少m次,至多n次.

例如 \{1,\}:至少一次,至多不限
     \{0,3\}:最多三次,最少不限
     
grep 'a\{1,3\}b' /app/test.txt 
a出现最少一次最多三次 后面跟个b

匹配结果为:ab aab

grep 'a.\{1,3\}b' /app/test.txt 
a和b之间出现至少1个字符-至多3个字符

匹配结果为: aab,acb,adb,amnb,amnbmnbmnb. ############用户与权限########## 用户 组 其他用户
用户:标识符
用户组:标识符
输入ls -l total 112 -rw-r--r--. 1 root root 0 Jul 17 11:55 2017-07-17.log
-rw-r--r--. 1 root root 2 Jul 20 09:04 A
-rw-r--r--. 1 root root 0 Jul 20 14:56 aaaaa
-rw-------. 1 root root 1894 Jul 15 08:32 anaconda-ks.cfg
-rw-r--r--. 1 root root 0 Jul 24 16:27 a.out
drwxr-xr-x. 2 root root 6 Jul 20 15:01 bbb
drwxr-xr-x. 2 root root 6 Jul 20 15:01 bbbb
drwxr-xr-x. 2 root root 6 Jul 19 21:56 Desktop
-rw-r--r--. 1 root root 1912 Jul 15 08:45 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 15 08:45 Music
drwxr-xr-x. 2 root root 6 Jul 15 08:45 Pictures
drwxr-xr-x. 2 root root 6 Jul 15 08:45 Public
-rw-r--r--. 1 root root 0 Jul 20 11:26 qwer
drwxr-xr-x. 2 root root 6 Jul 15 08:45 Templates
-rw-r--r--. 1 root root 99946 Jul 17 17:18 typescript
drwxr-xr-x. 2 root root 6 Jul 15 08:45 Videos
drwxr-xr-x. 2 root root 6 Jul 20 15:01 wenjianjia
其中第一数列 显示的-rw-r--r--这些
- (rw-)属主的权限 (r--)属组的权限 (r--)其它用户的权限
权限有三种r,w,x
其中每一类都有三种权限
对于文件来说:
r:可读,可以使用类似cat等命令查看文件内容
w:可写,可以编辑或删除此文件
x:可执行,可以再命令提示符下当做命令提交给内核运行
对于目录来说:
r:可以对此目录执行ls以列出内部的所有文件
w:可以再此目录创建文件
x:可以使用cd切换进此目录,也可以使用ls-l查看内部文件的详细信息
例如 4(数字48进制)100r--:表示只读 5(数字58进制)101r-x:读和执行 0(数字98进制)000---:无权限 1(数字18进制)001--x:执行 3(数字38进制)011-wx:写和执行 6(数字68进制)110rw-:读写 7(数字78进制)111rwx:读写执行
使用8进制的数字可以表示某一类用户的权限

例如: 数字显示均为8进制 755:rwx r-x r-x
rw- r-- ---:640 660:rw-rw----
rwx rwx r-x:775 用户:UID /etc/passwd 这个目录存储每一个用户的id号来标识用户
组:GID /etc/group 这个目录存储每个组的id
用户的密码存储在/etc/shadow
组的密码存储在/etc/gshadow

Linux的用户类别:
管理员:ID号为0(默认)
普通用户:系统用户[1-499]/一般用户[500-60000]普通用户(ID号为1-65535)即使超出了也会显示65536 系统用户:是不允许登录的
一般用户:是可以登录的
Linux的用户组:
管理员组:
普通组:系统组/一般组

私有组:创建用户的同时会给用户创建一个私有组,名字为其本身
基本组:用户额外的组(附加组,额外组,默认组以外的其他组)


例如:
进程:一个进程 god用户 god组
对象:rwxrw-r-- girl god a.txt
进程的god用户对应访问对象的god属组如果一样则以rw-的权限去访问这个文件a.txt 如果god用户与对象girl不一样,也不同于对象god组,则以r--的权限访问.
记住Linux一切皆文件,所有进程都是文件.
访问文件取决于用户而不取决于文件本身

输入cat /etc/passwd后:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
取前两个作为例子说明:':'这个里面有7个详细信息,root代表账户名;x代表密码(密码存储在etc/shadow/文件里)0代表用户ID即UID;0代表组ID即GID;root(包含信息电话一类的,用户的注释信息);root(家目录HOME DIR);/bin/bash(为SHELL)


/etc/shadow
输入cat /etc/shadow 显示如下:
root:$6$YsiwrDUWlkWxp6Mf$FvB5NAzc9lDBmtCEZThTpg6Jtzs7dCZHM0bjezjEZNyYc4fYzaKgtvo1W5g6AoHTi6GIMVS0Znm//dqTsAh1J0::0:99999:7:::
bin:*:17110:0:99999:7:::
取前两个显示如上:
冒号里面显示顺序如下: 1:登录名 2:加密的密码 $6 3:从197011日开始上一次修改密码的时间到今天经历了多长时间 4:密码最小使用期限(0为不限定,如有数字则变成在时间内不能修改密码) 5:密码最长使用期限(99999为无限) 6:密码还剩多长时间提示用户 7:在禁用账户之前的日期



创建用户:useradd 或adduser
学习在这里的时候我遇到了一个问题就是软链接的问题
在这里讲下,useradd是可执行文件,用which useradd 来查看显示为:/usr/sbin/useradd,由此得知在上面的目录下, 在输入ls /usr/sbin/useradd显示为:usr/sbin/adduser(为蓝色,一般蓝色代表该文件有软链接),然后我们接着输入ll usr/sbin/adduser显示为:lrwxrwxrwx. 1 root root 7 Jul 14 20:56 /usr/sbin/adduser -> useradd,由此看出useradd是被adduser指向的一个蓝色的链接.相当于adduser是useradd的一个快捷方式.

使用:
useradd 用户
例如:useradd wenwen 输入cat /etc/passwd显示的最后一行为:wenwen:x:1003:1003::/home/wenwen:/bin/bash,以上就是你新建立的用户.

给用户增加密码:
在root(系统管理员)下,输入passwd wenwen会提示配置密码的信息:
Changing password for user wenwen.
New password: 
Retype new password: 
Sorry, passwords do not match.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.
少于8个字符是不可以更改的,另外密码过于简单也是不能更改的.

*******chfn wenwen 这个命令可以给用户备注信息,finger wenwen这个命令可以看更详细的用户信息(可能会需要安装一下,安装使用的是rpm -ivh /run/media/root/Centos\ 7\ x86_64/Packages/finger -0.17-52.e17.x86_64.rpm[在Centos7下安装finger命令])
输入rpm -ivh /misc/cd/Packages/finger,这个命令是Centos6自带的 misc是挂载到安装文件,很方便很实用.

添加组的命令:groupadd 组名
例如:groupadd mygroup添加完成后,输入getent passwd wenwen可以看到:wenwen:x:1002:1002:laopo,jia,1,1:/home/wenwen:/bin/bash,的信息

总结一下:
用户管理需要用到的命令: useradd userdel usermod passwd chsh(更改使用者 shell 设定 ,chsh -l查看机器安装的SHELLS) chfn(改变finger指令显示的信息语  法:chfn [-f <真实姓名>][-h <家中电话>][-o <办公地址>][-p <办公电话>][-uv][帐号名称] ) finger(可以让使用者查询一些其他使用者的资料) id chage(命令是用来修改帐号和密码的有效期限)

组管理:groupadd groupdel groupmod gpasswd

权限管理:chown chgrp chmod umask 用法:输入useradd -u 1000 user1(-u直接给出用户ID也就是UID) ,useradd -g 存在的组名,useradd -G 附加组(可以有多个使用,隔开)
useradd -c (组的注释信息) useradd -d (目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录) useradd -s (指定SHELLS)


PS(查看ifconfig中的IP地址):ifconfig |grep -Eo "\<(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\>" PS:echo "welcome to magedu linux" |grep -o "." |sort |uniq -c |sort -nr的执行结果: 3 e 3 2 u 2 o 2 m 2 l 1 x 1 w 1 t 1 n 1 i 1 g 1 d 1 c 1 a

PS:ifconfig |egrep -o "(<\[1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]\>)" 找出ifconfig 命令结果中1-255之间的数字.

原创文章,作者:charlest,如若转载,请注明出处:http://www.178linux.com/82983

联系我们

400-080-6560

在线咨询

工作时间:周一至周五,9:30-18:30,节假日同时也值班

QR code