【发布时间】:2018-10-27 04:18:39
【问题描述】:
这里是关于我所属组的信息,来自id 命令。 我已经做到了,所以输出会更容易阅读。我将这个输出“完全”包括在内,因为它是从命令行返回的。 (感谢@EdMorton。)
$id
uid=1(me) gid=545(Users) groups=545(Users),66049(CONSOLE LOGON),11(Authenticated Users),4095(CurrentSession),66048(LOCAL)
这是我想要的输出,以逗号分隔,每行有一个组名及其 GID:
$ some-great-command
'Users',545
'CONSOLE LOGON',66049
'Authenticated Users',11
'CurrentSession',4095
'LOCAL',66048
我想出了一个可怕的方法来做到这一点:
$ id | sed 's/\(.*groups=\)\(.*$\)/\2/' | awk -F "," '{ for(i = 1; i <= NF; i++) print $i;}' | sed 's/\(^[[:digit:]]\+\)[(]\([A-Za-z +_]\+\)[)]$/'"'"'\2'"'"',\1/'
(我会用更好的屏幕格式再次放在这里,使用\)
$ id | sed 's/\(.*groups=\)\(.*$\)/\2/' | \
awk -F "," '{ for(i = 1; i <= NF; i++) print $i;}' | \
sed 's/\(^[[:digit:]]\+\)[(]\([A-Za-z +_]\+\)[)]$/'"'"'\2'"'"',\1/'
但我不禁认为必须有更好的(或者至少更短更优雅)的方式来完成这个过程。任何人都可以分享这样的解决方案吗?
注意:我这样做的一个原因是,有时,getent group GID 在我工作的地方有点挑剔。我看过其他一些帖子,例如this one,但它没有我想要的答案。
id 输出的更好阅读版本与控制台提供的不同!在(Users)(注意右括号后的空格)和(LOCAL),(逗号后没有空格)之后有换行符。
$ id
uid=1(me) gid=545(Users)
groups=545(Users),66049(CONSOLE LOGON),
11(Authenticated Users),4095(CurrentSession),66048(LOCAL)
真实id输出:
$ id
uid=1(me) gid=545(Users) groups=545(Users),66049(CONSOLE LOGON),11(Authenticated Users),4095(CurrentSession),66048(LOCAL)
【问题讨论】:
-
非常好的和详细的帖子!!!很高兴回答!如果所有帖子都可以这样......
-
@EdMorton。正如您所怀疑的那样,我将删除“更易于阅读”的部分,这是一个额外的换行符。感谢您的提示!
-
感谢您的评论,@Allan!