我找到了一个包含以下代码段的脚本: -
userid=`expr "\`id\`" : ".*uid=[0-9]*(\(.[0-9a-z]*\)) .*"`
返回用户ID。
当我试图了解它是如何做的时候: -
#id
#uid=11008(adilm) gid=1200(cvs),1400(build)
所以我意识到(。[0-9a-z] *)与userid匹配。但如果我放置如下:
#userid=`expr "uid=11008(ADILM) gid=1200(cvs),1400(build)" : ".*uid=[0-9]*(\(.[0-9a-z]*\)) .*"`
#echo $userid
ADILM
有效。根据我的理解'。'与ADILM匹配。但当我删除'。'如下: -
#userid=`expr "uid=11008(ADILM) gid=1200(cvs),1400(build)" : ".*uid=[0-9]*(\([0-9a-z]*\)) .*"`
#echo $userid
ADILM
它仍然有效吗?我们只提供了小写字母,但它仍在使用。
答案 0 :(得分:3)
(\(.[0-9a-z]*\))
匹配包含括号和用户ID的组。[a-z0-9]
,因此仍然匹配。(\([0-9a-z]+\))
。答案 1 :(得分:0)
这不会解释正则表达式,而是替代方法来获取您的身份。
$ id -u -n
$ id|sed 's/uid=[0-9]*(//;s/).*//'