
Ich habe Cygwin auf meinem 64-Bit-PC mit Windows 7 installiert und lade häufig große Dateien mit wget herunter. wget speichert jedoch alle Dateien mit Berechtigungen, die mir die Ausführung der Dateien verbieten, wenn es sich um ausführbare Windows-Dateien (.exe oder .msi) handelt. Gibt es eine Möglichkeit für mich, die Berechtigungen so einzustellen, dass ich diese Dateien automatisch ausführen kann? Kann ich auch das Standardverzeichnis ändern, in dem sie gespeichert werden? Derzeit werden sie im Cygwin-Ordner gespeichert C:\cygwin64\home\Brenton
und ich möchte sie in speichern C:\Users\Brenton\Downloads
.
Der Übersichtlichkeit halber weiß ich, wie ich diese Dateien nach dem Speichern manuell in das gewünschte Verzeichnis verschieben kann (z. B. mit:
mv filename C:\Users\Brenton\Downloads
wobei Dateiname der Name der zu übertragenden Datei ist) und ich weiß, wie man die Berechtigungen manuell ändert über:
chmod 755 filename
Was ich aber möchte, ist eine automatische Methode, sodass alle von nun an über wget heruntergeladenen Dateien mit meinen bevorzugten Berechtigungen in mein bevorzugtes Verzeichnis heruntergeladen werden.
Antwort1
Zielverzeichnis
Mit der Option -P prefix
/ können Sie die Speicherung in einem bestimmten Verzeichnis anweisen.--directory-prefix=prefix
wget
Setzen Sie das Verzeichnispräfix auf
prefix
. Das Verzeichnispräfix ist das Verzeichnis, in dem alle anderen Dateien und Unterverzeichnisse gespeichert werden, also die Spitze des Abrufbaums. Der Standardwert ist.
(das aktuelle Verzeichnis).
Beispiel zum Speichern einer einzelnen Datei in Ihrem Download-Verzeichnis:
wget -p $(cygpath -u "C:\Users\Brenton\Downloads") http://host.name/setup.exe
Dateiberechtigungen
Auf meinem System umask
ist es so eingestellt, 0022
dass wenn ich wget
Dateien in mein Cygwin-Home-Verzeichnis herunterlade, die Dateien -rw-r--r--
wie erwartet über die entsprechenden Berechtigungen verfügen.
Wenn ich jedoch in mein Windows- Downloads
Verzeichnis herunterlade, werden die Ausführungsberechtigungen festgelegt. Ich bin mir nicht sicher, warum, aber ich vermute, dass die Berechtigungen irgendwie von NTFS-ACLs beeinflusst werden. Dieses Verhalten kann sich auf Ihrem System auch zu Ihrem Vorteil auswirken. Wenn dies der Fall ist, können Sie einen einfachen Shell-Alias wie diesen verwenden:
alias wget-exe='wget -P $(cygpath -u "C:\Users\Brenton\Downloads") '
Vorgeschlagenes Shell-Skript / Funktion
Wenn Sie dennoch Berechtigungen ändern müssen, können Sie den folgenden Code als Grundlage für ein Shell-Skript oder eine Shell-Funktion verwenden (mit etwa folgendem Namen wget-exe
):
#!/bin/sh
downloads=$(cygpath -u "C:\Users\Brenton\Downloads")
wget -P "$downloads" "$@"
dir="$PWD"
cd "$downloads"
chmod 755 *.exe *.msi
cd "$dir"
# Alternative version using find to change permissions of all .msi and .exe files
# downloaded in the last day.
# find "$downloads" -mtime -1 \( -name '*.exe' -o -name '*.msi' \) -print0 | xargs -0 chmod +w