我正在寻找登录用户的真实(全名),以避免在我正在建立的应用程序中提示它.我看到finger
命令会输出一个包含此列表的圆柱列表数据,并且想知道grep是否有意义或是否有更简单的方法?我发现的手指开关都没有输出真实姓名.任何想法将不胜感激.
Tod*_*wen 13
getent passwd `whoami` | cut -d : -f 5
Run Code Online (Sandbox Code Playgroud)
(getent
通常比grepping更好/etc/passwd
).
getent passwd "$USER" | cut -d: -f5 | cut -d, -f1
Run Code Online (Sandbox Code Playgroud)
这首先从passwd
数据库中获取当前用户的行(也可能存储在NIS或LDAP 上)
在提取的行中,字段由:
分隔符分隔。该GECOS项是第5场,因此,第一cut
提取这一点。
该GECOS条目本身可能是由多个项目-通过分离,
其中的全称是第一个项目- 。这就是第二个cut
提取的内容。如果GECOS条目缺少逗号,这也有效。在这种情况下,整个条目是第一项。
您还可以将结果分配给变量:
fullname=$( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 )
Run Code Online (Sandbox Code Playgroud)
或者直接进一步处理:
echo "$( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 )'s home is $HOME."
Run Code Online (Sandbox Code Playgroud)
cat <<EOF
Hello, $( getent passwd "$USER" | cut -d: -f5 | cut -d, -f1 ).
How are you doing?
EOF
Run Code Online (Sandbox Code Playgroud)