节点中是否存在类似'path.resolve'的api?或者某些事情可以做同样的事情?
例如(nodejs代码):
path.resolve("~/sample.sh")
应该得到:/home/currentuser/sample.sh
答案 0 :(得分:8)
解析~
(表示用户家)是一个不同的故事,通常它是解决这个问题的shell。有关详细信息,请参阅Expand tilde to home directory。
如果您想通过Go代码执行此操作,可以使用user.Current()
功能获取有关当前用户的详细信息,包括其主文件夹User.HomeDir
。但是,你仍然必须自己替换它。
原始答案如下。
您可以使用path.Join()
或filepath.Join()
。
例如:
base := "/home/bob"
fmt.Println(path.Join(base, "work/go", "src/github.com"))
输出:
/home/bob/work/go/src/github.com
您可以使用path.Clean()
和filepath.Clean()
从您的路径中“移除”点.
和双点..
。
您可以使用filepath.Abs()
来解析相对路径并获得绝对路径(如果工作目录不是绝对的话,则在工作目录前加上)。 filepath.Abs()
也会在结果上调用Clean()
。
例如:
fmt.Println(filepath.Abs("/home/bob/../alice"))
输出:
/home/alice <nil>
尝试Go Playground上的示例。