ホームページ > バックエンド開発 > Golang > Go でファイルが実行可能かどうかを確認するにはどうすればよいですか?

Go でファイルが実行可能かどうかを確認するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-03 19:30:29
オリジナル
772 人が閲覧しました

How to Determine if a File is Executable in Go?

Go でのファイルの実行可能性の確認

Go では、ファイル モード、特にアクセス許可ビットを調べることで、ファイルが実行可能かどうかを判断できます。 。このチェックを実行する関数を構築する方法は次のとおりです。

<code class="go">import (
    "os"
)

func IsExecutable(mode os.FileMode) bool {
    return mode&0111 != 0
}</code>
ログイン後にコピー

この関数は、ビットごとの AND 演算子 (&) を使用して、ファイル モードから下位 9 許可ビット (0777 8 進ビットマスク) を抽出します。ビットマスク 0111 を使用すると、ファイルのいずれかの許可ビットが実行用に設定されているかどうかを確認できます。いずれかのビットが設定されている場合、関数は true を返します。

テスト ケース:

次のテスト ケースを考えてみましょう:

<code class="sh">#!/usr/bin/env bash
...
# create test directory and files
...
# set executable permission on quux.sh
chmod +x test/foo/bar/quux.sh
...</code>
ログイン後にコピー

および対応するGo コード:

<code class="go">import (
    "os"
    "path/filepath"
    "fmt"
)

func main() {
    filepath.Walk("test", func(path string, info os.FileInfo, err error) error {
        if err != nil || info.IsDir() {
            return err
        }
        fmt.Printf("%v %v", path, IsExecutable(info.Mode()))
    }
}</code>
ログイン後にコピー

このコードを実行すると、次が出力されます:

test/foo/bar/baz.txt false
test/foo/bar/quux.sh true
ログイン後にコピー

これにより、テスト ケースの意図どおり、quux.sh は実行可能であるが、baz.txt は実行可能ではないことが確認されます。

Windows 互換性

提供されるソリューションは、Linux や macOS を含む Unix システムに固有です。 Windowsの場合はOSをご利用いただけます。ファイルが実行可能かどうかを判断する実行可能関数。ただし、os.Executable はファイルの拡張子が「.exe」であるかどうかのみを示し、実際の実行可能性を示すものではないことに注意してください。

以上がGo でファイルが実行可能かどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート