首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在UNIX上获取用户的友好用户名?

如何在UNIX上获取用户的友好用户名?
EN

Stack Overflow用户
提问于 2012-11-06 07:17:19
回答 5查看 7.4K关注 0票数 7

我希望获得“友好”的名称,而不是用户名,至少对于给定的用户存在这样的字符串。我尝试过的东西:

代码语言:javascript
复制
whoami
jamesarosen

id -un
jamesarosen

id -p
uid jamesarosen
groups  staff com.apple.access_screensharing ...

id -P
jamesarosen:********:501:20::0:0:James A. Rosen:/Users/jamesarosen:/bin/bash

最后一个文件包含了我正在寻找的信息,但我不希望解析出来,特别是因为我不太确定格式(特别是:的数量)在整个OSes中是否保持一致。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-11-06 07:24:24

解析GECOS字段以获取用户的全名

etc/passwd和大多数GECOS field的格式在类Unix系统中标准化得非常好。如果你发现了异常,一定要让我们知道。同时,在类Unix系统上获得所需内容的最简单方法是使用getent和cut来解析GECOS字段。例如:

代码语言:javascript
复制
getent passwd $LOGNAME | cut -d: -f5 | cut -d, -f1
票数 12
EN

Stack Overflow用户

发布于 2012-11-06 07:23:35

我所知道的唯一方法就是解析它:

代码语言:javascript
复制
grep -P "^$(whoami):" /etc/passwd | cut -f5 -d:

您可以非常确定/etc/passwd的格式

票数 2
EN

Stack Overflow用户

发布于 2012-11-06 07:47:02

您可以使用finger获取该信息:

代码语言:javascript
复制
finger `id -un` | head -1 | cut -d: -f3-

它的优点(或缺点,取决于您的需求)是它也将为非本地用户检索信息。

如果您只想从/etc/passwd获取信息,则很可能必须以某种方式解析文件,正如其他人已经提到的那样。就我个人而言,我更喜欢awk来完成这项任务:

代码语言:javascript
复制
awk -F: -vid=`id -u` '{if ($3 == id) print $5}' /etc/passwd
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13241964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档