Как прочитать файл / путь, содержащий тильду - PullRequest
0 голосов
/ 20 июня 2020

Следующий код дает ENOENT (2) Знаете ли вы, как получить статистику файла, содержащего тильду?

file := "~/.zshrc"
fileStat, err := os.Stat(file)
if err != nil {
    return 0, err
}

Ответы [ 2 ]

2 голосов
/ 20 июня 2020

Вы можете получить доступ к домашнему каталогу текущего пользователя с помощью пакета os / user.

Что-то вроде этого приблизит вас к тому, что вы хотите:

package main

import (
    "fmt"
    "log"
    "os"
    "os/user"
)

func main() {
    usr, err := user.Current()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(usr.HomeDir)

    file := usr.HomeDir + "/.zshrc"
    fileStat, err := os.Stat(file)
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(fileStat)
}
2 голосов
/ 20 июня 2020

Тильда - это не то, что вызовы файловой системы могут интерпретировать - она ​​имеет значение только в оболочках типа bash, которые обычно интерпретируют ее как $HOME. Так что вы, вероятно, захотите использовать os.Getenv("HOME"), а затем заменить ~ на результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...