当用户的名称包含空格时,如何列出用户的组?

Tom*_*son 5 linux users active-directory group

我们的站点使用 Active Directory,并且许多组名都包含空格。这使得groups即使通过肉眼也无法可靠地解析输出(是否有“伦敦”和“开发人员”组,或“伦敦开发人员”组?)。

我看不到groups使用另一个分隔符(换行符或 NUL 可以)或按 GID 列出组的方法。

当某些组名包含空格时,有没有办法可靠地获取用户组的列表?

我正在使用 Ubuntu 18.04.3,并且会很乐意安装更多软件包,或者编写脚本!

ste*_*ver 3

虽然groups似乎没有空分隔条目的选项,但id至少在适用于 Ubuntu 18.04 1的 GNU CoreUtils 实现中确实如此

   -z, --zero
          delimit entries with NUL characters, not whitespace;
Run Code Online (Sandbox Code Playgroud)

例如

id -Gnz someuser
Run Code Online (Sandbox Code Playgroud)

应该给出 的补充组名称的空分隔列表someuser- 您可以使用以下命令检查情况

id -Gnz someuser | xargs -0 printf '%s\n'
Run Code Online (Sandbox Code Playgroud)

1请注意,POSIX 不强制使用此选项,因此它不可移植。例如,请参见The Open Group 基本规范