Wie markiere ich Dateien in zip als ausführbare Unix-Datei?

WBOY
Freigeben: 2024-02-14 08:18:08
nach vorne
971 Leute haben es durchsucht

如何将 zip 中的文件标记为 unix 可执行文件?

Der PHP-Editor Xiaoxin zeigt Ihnen, wie Sie die Dateien in der ZIP-Datei als ausführbare Unix-Dateien markieren. In Unix-Systemen wird das ausführbare Attribut einer Datei durch die Berechtigungen der Datei bestimmt, daher müssen wir die Berechtigungen der Dateien in der ZIP-Datei ändern. Entpacken Sie zunächst die ZIP-Datei in den Zielordner. Verwenden Sie dann den Befehl chmod, um die Berechtigungen der Datei zu ändern. Packen Sie abschließend die geänderten Dateien erneut in eine ZIP-Datei. Mit diesem einfachen Schritt können Sie die Dateien in Ihrer ZIP-Datei als ausführbare Unix-Datei markieren.

Frageninhalt

Ich möchte eine Funktion wie diese schreiben:

func MarkFileAsExecutable(zipPath, filePath string) error
Nach dem Login kopieren

Es erhält den Pfad zur ZIP-Datei und den Dateipfad innerhalb der ZIP-Datei. Das Ziel besteht darin, mit dem Paket zip die externen Attribute einer internen Datei zu ändern und sie als ausführbare Unix-Datei zu markieren.

Bitte beachten Sie, dass das Markieren der Datei als ausführbar vor dem Archivieren mit chmod +x keine Lösung ist, da ich sie für die Arbeit unter Windows benötige. Daher muss ich das vorhandene Zip-Archiv entsprechend anpassen. chmod +x 归档文件之前将文件标记为可执行文件并不是一个解决方案,因为我需要它在 windows 上工作。因此,我需要相应地修改现有的 zip 存档。

解决方法

您可以使用 zip 包。它提供了一个reader和一个writer

Workaround

Sie können das 🎜-Paket verwenden. Es stellt einen Reader und einen Writer bereit. Sie öffnen das Zip-Archiv mit dem Reader. Anschließend durchlaufen Sie die Dateien im Archiv, ändern die Berechtigungen nach Bedarf und kopieren die Dateien in den Writer. 🎜 🎜Dies ist ein Minimalbeispiel ohne Fehlerprüfung: 🎜
package main

import (
    "archive/zip"
    "os"
)

func main() {
    r, _ := zip.OpenReader("example.zip")
    defer r.Close()

    f, _ := os.Create("output.zip")
    defer f.Close()

    w := zip.NewWriter(f)
    defer w.Close()

    for _, f := range r.File {
        f.SetMode(0777)
        w.Copy(f)
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie markiere ich Dateien in zip als ausführbare Unix-Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage