搜索用户的部分名称

时间:2014-02-26 16:39:59

标签: linux bash shell

我制作了这个剧本。它在passwd中搜索后返回用户名,但用户名完全相同。我想知道是否有可能以一种方式更改它,如果用户输入为“r”,它会搜索名称中带有r的每个用户,而不是搜索名为r的用户。

    if [ $# -eq 0 ]
    then
            echo "Enter your username ( ./user123 user here )"
    else
            nameList=$(getent passwd $@|cut -f1 -d:)
            for i in $nameList;
            do echo $i;
            done
    fi

2 个答案:

答案 0 :(得分:2)

为什么不只是grep密码数据库? E.g。

 getent passwd | cut -f1 -d: | grep $1

当然,处理多个名称需要更多代码。

答案 1 :(得分:0)

您永远无法使用getent执行此操作,因为它有效地隐藏了passwd地图的后端存储,并且只搜索整个键。

但是,对于文件后端,这可以工作:

$ getent passwd | nawk -F: '$1 ~ /oot/ { print $1 }'
root

对于 ldap ,您需要了解ldap查询。