Help us understand the problem. What is going on with this article?

golangでsymlink判別を実施する

More than 5 years have passed since last update.

ファイル操作を実施するさいに、ファイルがシンボリックリンクかどうかを判断する時にBIFがないように見えました。

不便だなー、と思いつつ以下のやりとりを発見したので備忘のために残します。

どなたかBIFもしくは、もっといい方法を知っていたらご教示ください。

package main

import (
    "log"
    "os"
)

func check(err error) {
    if err != nil {
        println(err)
    }
}

func main() {
    //hogehogeがシンボリックリンクとする
    path := "/var/www/html/hogehoge"
    info, err := os.Lstat(path)
    check(err)

    //以下で判定処理を実施
    if info.Mode()&os.ModeSymlink == os.ModeSymlink {
        realPath, err := os.Readlink(path)
        check(err)

        log.Printf("シンボリックリンクファイル: %v", realPath)

    } else {
        log.Printf("シンボリックリンクではないファイル: %v", path)
    }
}

以下は参考サイトです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away