如何在 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

相关文章