如何在 Golang 中获取当前用户名和目录?
go programmingserver side programmingprogramming
有时我们想知道哪个用户正在执行当前程序以及在哪个目录中,我们可以借助 Go 标准库的 os 包中的用户包获取所有这些详细信息。
在本文中,我们将探讨三种这样的情况,首先,我们将注销正在执行当前进程的 用户名,然后我们将注销 名称 以及 id,最后,我们将从当前程序所在的 目录 中注销。
获取用户名
要获取 用户名,我们只需调用 Current() 函数即可返回当前用户。考虑下面显示的代码。
package main import ( "fmt" "log" "os/user" ) func main() { currentUser, err := user.Current() if err != nil { log.Fatalf(err.Error()) } username := currentUser.Username fmt.Printf("用户名是: %s\n", username) }
输出
如果我们在上述代码上运行命令 go run main.go,那么我们将在终端中获得以下输出。
用户名是:apache
获取名称和 ID
要获取用户的名称和 ID,我们分别在当前用户上调用 Name() 和 Uid() 函数。请考虑下面显示的代码。
package main import ( "fmt" "log" "os/user" ) func main() { currentUser, err := user.Current() if err != nil { log.Fatalf(err.Error()) } name := currentUser.Name id := currentUser.Uid fmt.Printf("name is: %s and id is: %s\n", name, id) }
输出
如果我们在上面的代码上运行命令go run main.go,那么我们将在终端中得到以下输出。
name is: Apache and id is: 48
获取当前目录
要获取当前目录,我们只需对当前用户调用 HomeDir() 函数。请考虑下面显示的代码。
package main import ( "fmt" "log" "os/user" ) func main() { currentUser, err := user.Current() if err != nil { log.Fatalf(err.Error()) } dir := currentUser.HomeDir fmt.Printf("dir is: %s\n", dir) }
输出
如果我们在上面的代码上运行命令go run main.go,那么我们将在终端中得到以下输出。
dir is: /usr/share/httpd