在节点中是否有类似'path.resolve'的api?或者某些事情也可以这样做?
例如(nodejs代码):
path.resolve("~/sample.sh")
应该得到:/home/currentuser/sample.sh
icz*_*cza 10
解析~(表示用户家)是一个不同的故事,通常它是解决这个问题的shell.有关详细信息,请参阅展开代字号到主目录.
如果您想从Go代码执行此操作,您可以使用该user.Current()函数获取有关当前用户的详细信息,包括其主文件夹User.HomeDir.但是,你仍然必须自己替换它.
原始答案如下.
你可以使用path.Join()或filepath.Join().
例如:
base := "/home/bob"
fmt.Println(path.Join(base, "work/go", "src/github.com"))
Run Code Online (Sandbox Code Playgroud)
输出:
/home/bob/work/go/src/github.com
Run Code Online (Sandbox Code Playgroud)
您可以使用path.Clean()和filepath.Clean()"删除" 路径中的点.和双点...
您可以使用filepath.Abs()解析相对路径并获得绝对路径(如果工作目录不是绝对的,则在工作目录前加上).filepath.Abs()也呼吁Clean()结果.
例如:
fmt.Println(filepath.Abs("/home/bob/../alice"))
Run Code Online (Sandbox Code Playgroud)
输出:
/home/alice <nil>
Run Code Online (Sandbox Code Playgroud)
试试Go Playground上的例子.
请参阅相关问题:从相对路径解析绝对路径