检测符号链接

我的目标是确定我拥有的文件是文件夹还是文件夹的符号链接。以我尝试的方式,我无法在这里发现差异。


package main


import (

    "fmt"

    "os"

    "os/exec"

)


func main() {

    linkPath := "./myLink"


    // with golang

    f, _ := os.Stat(linkPath)

    fmt.Println(f.Mode().String())


    // ls -la

    out, _ := exec.Command("ls", "-la", linkPath).Output()

    fmt.Printf("%s", out)

}

我的(Debian)系统上的输出如下所示:(每行的第一个字母很重要!)


drwxr-xr-x

lrwxrwxrwx 1 user user 7 Nov 16 13:31 ./myLink -> target/

所以 Go 中的 FileMode 似乎检测到的是目录而不是符号链接,但ls命令显示它实际上是符号链接。


我用命令创建了那个符号链接


ln -s target/ myLink

我在这里遗漏了什么或者为什么这不起作用?


编辑:我正在使用 go 版本 go1.11.6 linux/amd64


德玛西亚99
浏览 103回答 1
1回答

慕娘9325324

os.File.Stat直接映射到stat(2)在 Unix 上遵循符号链接的系统调用。lstat(2)不跟随它们(因此是领先的l),并且在 Go 标准库中有一个匹配的调用:os.Lstat.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go