Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann man feststellen, ob eine Go-Datei ausführbar ist?

Wie kann man feststellen, ob eine Go-Datei ausführbar ist?

Linda Hamilton
Linda HamiltonOriginal
2024-11-04 00:18:02983Durchsuche

How to Determine if a Go File is Executable?

So ermitteln Sie den Status einer ausführbaren Datei in Go

Bei einer os.FileInfo-Instanz müssen Sie möglicherweise überprüfen, ob eine Datei in ausführbar ist Gehen. Dies erfordert die Entschlüsselung der Berechtigungsbits von os.FileInfo.Mode().

Testfall:

#!/usr/bin/env bash
mkdir -p test/foo/bar
touch test/foo/bar/{baz.txt,quux.sh}
chmod +x test/foo/bar/quux.sh
<code class="go">import (
    "os"
    "path/filepath"
    "fmt"
)</code>

Lösung:

Die Ausführbarkeit der Datei wird durch die in os.FileMode.Perm() gespeicherten Unix-Berechtigungsbits bestimmt. Diese Bits bilden eine 9-Bit-Bitmaske (0777 oktal).

Bedeutung des Unix-Berechtigungsbits:

rwxrwxrwx

Für jede Benutzerklasse:

  • Besitzer: Bitmask 0100
  • Gruppe: Bitmask 0010
  • Andere: Bitmask 0001

Funktionen zur Prüfung der Ausführbarkeit:

  • Ausführbar nach Eigentümer:

    <code class="go">func IsExecOwner(mode os.FileMode) bool {
      return mode&0100 != 0
    }</code>
  • Ausführbar nach Gruppe:

    <code class="go">func IsExecGroup(mode os.FileMode) bool {
      return mode&0010 != 0
    }</code>
  • Ausführbar von anderen:

    <code class="go">func IsExecOther(mode os.FileMode) bool {
      return mode&0001 != 0
    }</code>
  • Ausführbar von jedem:

    <code class="go">func IsExecAny(mode os.FileMode) bool {
      return mode&0111 != 0
    }</code>
  • Von allen ausführbar:

    <code class="go">func IsExecAll(mode os.FileMode) bool {
      return mode&0111 == 0111
    }</code>
<code class="go">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, IsExecAny(info.Mode().Perm()))
    }
}</code>

Erwartete Ausgabe:

test/foo/bar/baz.txt false
test/foo/bar/quux.txt true

Das obige ist der detaillierte Inhalt vonWie kann man feststellen, ob eine Go-Datei ausführbar ist?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn