Node.js - os.userInfo() 方法



os 模块的 Node.js os.userInfo() 方法返回一个对象,其中包含有关当前有效用户的信息,例如 'username'、'uid'、'gid'、'shell' 和 'homedir'。

如果用户没有用户名或 homedir,则会抛出 SystemError。os.userInfo() 方法返回的名为“homedir”的属性的值由操作系统提供。

以下是返回对象的属性。

  • uid − 这是一个用户标识符,它将指定当前有效用户的大约。
  • gid - 这是一个组ID;它是将用户与具有某些共同点的其他用户链接起来的标识符。
  • username - 指定当前有效用户的用户名。
  • homedir - 指定当前有效用户的主目录。
  • shell - 这是一个命令行解释器,当前有效用户当前正在使用。

语法

以下是Node.js os.userInfo()方法的语法 -


 os.userInfo([options])

参数

此方法只接受一个参数 options,即可选参数。

  • encoding 这指定了返回数据的字符编码。如果 encoding 设置为“buffer”,则 username、shell 和 homedir 的值将是“Buffer”的实例。如果 encoding 设置为“utf8”,则值将是“utf8”的实例。默认情况下,实例为“utf8”。

返回值

此方法返回的对象包含名为 'username'、'uid'、'gid'、'shell' 和 'homedir' 的属性。而在 Windows 上,“uid”和“gid”是 -1,而“shell”是 null。

当没有参数传递给该方法时,它将采用默认值为“utf8”,返回对象属性的值将为“Buffer”实例。

在以下示例中,我们尝试通过将 Node.js userInfo() 方法记录到控制台来打印当前有效用户的信息。


const os = require('os');

console.log(os.userInfo());

输出

{
uid: 1000,
gid: 1000,
username: 'webmaster',homedir: '/home/webmaster',
shell: '/bin/bash'
}

注意 - 为了获得准确的结果,最好在本地执行上述代码。

执行上述程序后,os.userInfo() 方法返回一个对象,其中包含有关当前有效用户的信息,如下面的输出所示。

{
uid: -1,
gid: -1,
username: 'Lenovo',
homedir: 'C:\\Users\\Lenovo',
shell: null
}

如果将 os.userInfo() 方法的 'encoding' 设置为 'utf8',则返回对象属性的值将为 'Buffer' 实例。

在以下示例中,我们尝试将 encoding 值指定为“utf8”。然后我们打印当前有效用户的信息。


const os = require('os');

var option = {
	 	 encoding: 'utf8'
};

console.log(os.userInfo(option));

输出

{
uid: 1000,
gid: 1000,
username: 'webmaster',
homedir: '/home/webmaster',
shell: '/bin/bash'
}

注意 - 为了获得准确的结果,最好在本地执行上述代码。

执行上述程序后,os.userInfo() 方法返回的对象将 'username'、'uid'、'gid'、'shell' 和 'homedir' 的值打印为 'utf8' 实例。

{
uid: -1,
gid: -1,
username: 'Lenovo',
homedir: 'C:\\Users\\Lenovo',
shell: null
}

在以下示例中,我们尝试将 encoding 值指定为 'buffer'。然后,我们通过将 userInfo() 方法登录到控制台来返回当前有效用户的信息。


const os = require('os');

var option = {
	 	encoding: 'buffer'
};

console.log(os.userInfo(option));

输出

{
uid: 1000,
gid: 1000,
username: <Buffer 77 65 62 6d 61 73 74 65 72>,
homedir: <Buffer 2f 68 6f 6d 65 2f 77 65 62 6d 61 73 74 65 72>,
shell: <Buffer 2f 62 69 6e 2f 62 61 73 68>
}

注意 - 为了获得准确的结果,最好在本地执行上述代码。

执行上述程序后,os.userInfo() 方法返回的对象将 'username'、'uid'、'gid'、'shell' 和 'homedir' 的值打印为 'buffer' 实例。

{
uid: -1,
gid: -1,
username: <Buffer 4c 65 6e 6f 76 6f>,
homedir: <Buffer 43 3a 5c 55 73 65 72 73 5c 4c 65 6e 6f 76 6f>,
shell: null
}