如何从 Linux 上的 id 中提取 uid 值?
How to extract the uid value from id on Linux?
在 linux 中,如果您键入 id www-data
,您将获得 ID。
uid=33(www-data) gid=33(www-data) groups=33(www-data)
有没有办法从中提取 uid 的值?
我想我可以这样处理它:
id www-data | grep ?
我也可以使用 egrep
或 sed
如果它更容易,但不确定如何进行。
Whosebug 上的类似示例涉及通过正则表达式直接提取值。我不知道该值是否为 33。因此我需要从 uid=
直到 (www-data)
中提取它。 (除非它总是 33,而且我让我的生活变得太困难了)。有什么建议吗?
你可以使用 grep,
id www-data | grep -oP 'uid=\K\S+'
或
sed,
id www-data | sed -n 's/.*\buid=\([^ ]\+\).*//p'
您可以使用 id
的标志(来自 man id
)来代替正则表达式:
-g, --group
print only the effective group ID
-G, --groups
print all group IDs
-n, --name
print a name instead of a number, for -ugG
-r, --real
print the real ID instead of the effective ID, with -ugG
-u, --user
print only the effective user ID
这可能不太容易出错:如果将来 id
会改变它格式化输出的方式,该标志仍然有效。
所以使用:
$ id -u www-data
33
一般来说,这些命令中的许多都提供标志来检索部分信息。查阅 联机帮助页 通常会得到很多选项,只是偶尔您会发现您需要一些未实现的东西。
在 linux 中,如果您键入 id www-data
,您将获得 ID。
uid=33(www-data) gid=33(www-data) groups=33(www-data)
有没有办法从中提取 uid 的值?
我想我可以这样处理它:
id www-data | grep ?
我也可以使用 egrep
或 sed
如果它更容易,但不确定如何进行。
Whosebug 上的类似示例涉及通过正则表达式直接提取值。我不知道该值是否为 33。因此我需要从 uid=
直到 (www-data)
中提取它。 (除非它总是 33,而且我让我的生活变得太困难了)。有什么建议吗?
你可以使用 grep,
id www-data | grep -oP 'uid=\K\S+'
或
sed,
id www-data | sed -n 's/.*\buid=\([^ ]\+\).*//p'
您可以使用 id
的标志(来自 man id
)来代替正则表达式:
-g, --group
print only the effective group ID
-G, --groups
print all group IDs
-n, --name
print a name instead of a number, for -ugG
-r, --real
print the real ID instead of the effective ID, with -ugG
-u, --user
print only the effective user ID
这可能不太容易出错:如果将来 id
会改变它格式化输出的方式,该标志仍然有效。
所以使用:
$ id -u www-data
33
一般来说,这些命令中的许多都提供标志来检索部分信息。查阅 联机帮助页 通常会得到很多选项,只是偶尔您会发现您需要一些未实现的东西。