我制作了这个剧本。它在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
答案 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查询。