1

我是 unix 新手,并试图理解以下 awk 命令:

AWK=/bin/awk
RUID=`/usr/bin/id|$AWK -F\( '{print $2}'|$AWK -F\) '{print $1}'`
echo $RUID

该命令正在打印登录的用户名,但如何使用此命令提取用户名。

4

2 回答 2

7

也许你可以试试这个:

whoami

如果你真的想这样做awk

$ id |awk -F'[)(]' '{print $2}'
kent

编辑 (评论)

当然还有其他方法可以获取当前登录用户名/id:

获取用户名

kent$  id -un
kent

kent$  echo $USER 
kent

kent$  echo $USERNAME 
kent

只获取 UID

kent$  echo $UID 
1000

kent$  id -u
1000
于 2013-03-19T12:50:06.367 回答
6

该命令使用-F参数将id命令的输出按给定字符拆分,此处(为第一个字符和)第二个字符。不知道你是否熟悉管道?

然后使用print $2打印第二部分,即第一次出现之后(到下一次出现的部分。您可以通过手动调用命令来了解其工作原理:

/usr/bin/id| $AWK -F\( '{print $2}'

这返回username) gid=1000

然后awk再次调用拆分第一次awk运行产生的字符串),然后打印第一个之前的部分)

但是,通过调用/usr/bin/id -un甚至更简单的whoami.

还可以尝试运行/usr/bin/id不带参数的命令以查看awk此处解析的原始输出。

于 2013-03-19T12:59:03.213 回答