我可以grep通过/etc/passwd,但这似乎很繁重."没有安装finger,我想避免这种依赖.这是一个程序,所以如果有一些命令可以让你直接访问用户信息就好了.

推荐答案

您没有指定编程语言,所以我假设您想要使用shell;这是an answer for Posix shells美元.

这需要两个步骤:获取适当的记录,然后从该记录中获取所需的字段.

首先,querying the 100 table完成了账户记录的获取:

$ user_name=foo
$ user_record="$(getent passwd $user_name)"
$ echo "$user_record"
foo:x:1023:1025:Fred Nurk,,,:/home/foo:/bin/bash

对于歇斯底里的葡萄干,用户的全名记录在名为100的字段中;使事情复杂化的是,这个领域通常有自己的 struct ,包括full name as just one of several optional sub-fields.因此,任何想要从帐户记录中获取全名的东西都需要解析这两个级别.

$ user_record="$(getent passwd $user_name)"
$ user_gecos_field="$(echo "$user_record" | cut -d ':' -f 5)"
$ user_full_name="$(echo "$user_gecos_field" | cut -d ',' -f 1)"
$ echo "$user_full_name"
Fred Nurk

你的目标是用更少的步骤完成这项工作.在C语言中,使用"getpwnam"函数,然后解析GECOS字段.

Linux相关问答推荐

没有发现运行时依赖关系,但它在S的运行时路径中有吗?

不带空格的字符串连接形成文件路径

awk 不打印所需的 df 输出

如何为命令的所有选项启用无密码 sudo?

当未在日志(log)中输入确切的时间戳时如何过滤日期范围内的值

Linux命令行如何接受没有pin的蓝牙设备配对

如何将执行的shell命令的结果存储在python的变量中?

在 bash 中检测公共 IP 地址的方法

通过 VM 的 Centos - 镜像列表中没有 URL

Linux 和 I/O 完成端口?

从linux命令行写入串口

比较linux中两个未排序的列表,列出第二个文件中的唯一性

用于数据库备份的 Linux shell 脚本

Linux内核列表中的WRITE_ONCE

从文本文件中删除奇数行或偶数行

区分 Windows 和类 Unix 系统的 Makefile

.NET Core 中的跨平台文件名处理

Docker:您是否try 连接到没有 TLS 的启用 TLS 的守护进程?

grep 递归查找 Linux 上的特定文件类型

当我已经 ssh 进入远程机器时,如何 scp 回到本地?