Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何在OSX中通过命令行获取活动用户的名称?_Macos_Command Line - Fatal编程技术网

Macos 如何在OSX中通过命令行获取活动用户的名称?

Macos 如何在OSX中通过命令行获取活动用户的名称?,macos,command-line,Macos,Command Line,如何通过OS X中的命令行获取活动用户的名称?通过 检查/dev/console的所有者似乎工作得很好 stat-f“%Su”/dev/console 编辑 whoami实用程序已被id(1)实用程序淘汰,相当于id-un。建议将命令id-p用于正常的交互使用。我非常确定OS X中的终端与unix一样,因此该命令将是: whoami 我现在身上没有mac电脑,所以如果我错了,有人会纠正我 注意-whoami实用程序已被淘汰,相当于id-un。它将为您提供当前用户由于“whoami”已被淘汰,它

如何通过OS X中的命令行获取活动用户的名称?

通过

检查/dev/console的所有者似乎工作得很好

stat-f“%Su”/dev/console

编辑


whoami实用程序已被id(1)实用程序淘汰,相当于
id-un
。建议将命令
id-p
用于正常的交互使用。

我非常确定OS X中的终端与unix一样,因此该命令将是:

whoami
我现在身上没有mac电脑,所以如果我错了,有人会纠正我


注意-
whoami
实用程序已被淘汰,相当于
id-un
。它将为您提供当前用户

由于“whoami”已被淘汰,它可能更适合使用:

id -un
定义“活动用户”

如果问题是“谁是登录用户”,那么“我是谁”或“我是谁”就可以了(尽管他们给出了不同的答案-“我是谁”只报告一个用户名;“我是谁”也报告终端和登录时间)


如果问题是“哪个用户ID是shell的有效ID”,那么最好使用“ID”。这将报告真实有效的用户ID和组ID,以及补充组ID。如果shell正在运行SUID或SGID,这可能很重要。

如果您想知道当前登录到系统的用户:

$ w 15:56:14 up 5 days, 20:58, 6 users, load average: 0.43, 0.53, 0.50 USER TTY LOGIN@ IDLE JCPU PCPU WHAT me pts/2 Fri19 1:03m 0.98s 0.98s -/bin/bash me pts/3 09:55 6:00m 0.43s 0.43s /bin/bash me pts/5 15:56 0.00s 0.23s 0.00s w $ 15:56:14最多5天,20:58,6个用户,平均负载:0.43,0.53,0.50 用户TTY登录@IDLE JCPU PCPU什么 me pts/2 Fri19 1:03m 0.98s 0.98s-/bin/bash me pts/3 09:55 6:00m 0.43s 0.43s/bin/bash me pts/5 15:56 0.00s 0.23s 0.00s w (这来自Linux系统;OS X上的格式可能略有不同,但信息应该大致相同。)


可能有多个登录会话;毕竟,UNIX是一个多用户系统。

如果要显示全名(而不是用户名),请添加
-F
标志:

$ id -F
Andrew Havens

这个问题还没有完全回答,伊姆霍。我将尝试解释:我有一个crontab条目,它调度bashshell命令过程,然后对我的文件进行一些清理;完成后,使用OSX通知中心向我发送通知(使用命令
osascript-e'display notification…
)。如果有人(例如我的妻子或女儿)将计算机的当前用户切换到她,将我留在后台,则发送通知时cron脚本将失败

那么,现在的用户是谁?意味着其他人成为了有效的用户,把我留在了后台?是否
stat-f“%Su”/dev/console
返回当前活动用户的名称

答案是肯定的;现在,我的crontab shell脚本已按以下方式修改:

...
if [ "$(/usr/bin/stat -f ""%Su"" /dev/console)" = "loreti" ]
then /usr/bin/osascript -e \
  'display notification "Cleanup done" sound name "sosumi" with title "myCleanup"'
fi

在MAC终端中获取用户名很容易

我通常在终端中使用
whoami

例如,在本例中,我需要它来安装Tomcat服务器


您也可以在Linux或MacOS下使用BSD通用命令手册中的
logname
命令查看当前登录用户的用户名,即使用户正在执行
sudo
操作。例如,在安装带有sudo:
crontab-u$(logname)

根据
人员日志名

LOGNAME(1)

NAME
    logname -- display user's login name

您也可以从环境变量中检索它,但这可能不安全,因此我将使用Andrew的答案

printenv用户

如果您需要从应用程序(如Node)中检索它,那么从环境变量(如

process.env.USER

有两种方法-

whoami


“whoami”在什么意义上被淘汰了?谁宣布它过时了?@Jonathan:Leopard上的
whoami
手册页确认它已被
id
取代!为什么他们要改变一些从时间的黎明开始就存在的东西?说什么呢?如果您使用ssh连接到一台机器上,并且希望查看用户是否在本地登录,那么这种方法非常有效。如果不是,命令将返回“root”。这是一个低估的答案。您不能执行
sudo id-un
来获取登录用户的名称(因为
id
更像是“运行
id
命令的用户的id是什么”)。这使得
id
对于“运行我的脚本的用户”来说非常有用“,但不是管理职责。-F在Mavericks中是一个非法选项-这是什么时候开始工作的?”——“0r z”这绝对是最干净、最简单的解决方案。无论是哪个用户执行命令,它都会工作。
echo $USER