Es fällt mir schwer, dieses Problem zu lösen.
Schreiben Sie ein Shell-Skript, um die Ausführungsrechte für alle Dateien im aktuellen Verzeichnis zu überprüfen. Wenn die Datei nicht über die Ausführungsrechte des Benutzers verfügt, machen Sie sie benutzerausführbar.
Ich dachte daran, eine Schleife über alle Dateien im aktuellen Verzeichnis auszuführen und die Ausgabe in eine Textdatei zu schreiben. Anschließend lese ich das vierte Zeichen jeder Zeile und prüfe, ob es „x“ oder „-“ ist.
Antwort1
Ihre Idee scheint plausibel, aber unnötig umfangreich und komplex. Sie können stattdessen Folgendes verwenden:
#!/bin/bash
for file in *; do
[[ -x $file ]] || chmod u+x "$file"
done
Dies liest alle Dateien (
*
) im aktuellen VerzeichnisAnschließend wird geprüft, ob die Datei vom Benutzer, der das Skript ausführt, ausführbar ist (
[[ -x $file ]]
)Wenn nicht (
||
), wird die Datei für den Benutzer ausführbar gemacht (chmod u+x "$file"
).
Standardmäßig *
werden keine versteckten Dateien abgeglichen. Um versteckte Dateien abzugleichen, fügen Sie außerdem die Zeile hinzu
shopt -s dotglob
nach der Shebang-Zeile.
Wenn Sie nur normale Dateien suchen und bearbeiten möchten:
#!/bin/bash
for file in *; do
if [[ -f $file ]]; then
[[ -x $file ]] || chmod u+x "$file"
fi
done
Antwort2
Es ist ein einfacher find
Befehl mit chmod
:
find . -type f ! -perm -u+x -exec chmod u+x {} \;
oder nur für den aktuellen Ordner:
find . -maxdepth 1 -type f ! -perm -u+x -exec chmod u+x {} \;
Erläuterung
.
Starten Sie die Suche im aktuellen Ordner
-maxdepth
Nicht rekursiv
-type f
Nur Dateien, keine Ordner
! -perm -u+x
Nur Dateien ohne das ausführbare Flag für den Eigentümer der Datei
-exec chmod u+x {}
Setzen Sie das ausführbare Flag für den Besitzer der Datei
Antwort3
Ich wünschte, Sie hätten erwähnt, ob es Teil eines größeren Automatisierungsprojekts ist oder einfach etwas, das Sie tun möchten.
Sie können in einem Verzeichnis einfach Folgendes tun:
chmod u+x *
Dies verleiht allen Dateien in einem Ordner den Status „Ausführbar“ für „Ihr Benutzer". Sie können versuchen, es für " hinzuzufügen.alle" von
chmod a+x *
Beachten Sie, dass Ihr Benutzer die Berechtigung haben sollte, Dateien in diesem bestimmten Ordner zu ändern. Das bedeutet, dass Sie über 'schreiben'-Berechtigung. Andernfalls können Sie nichts ändern. Wenn Ihr Benutzer Administrator ist, können Sie ihn mit dem folgenden sudo
Befehl aufrufen:
sudo chmod a+x *
Wenn eine Datei bereits den Status „Ausführbar“ hat, kann es nicht schaden, ihr diesen Status erneut zu geben. Natürlich, wie gesagt, es sei denn, Sie möchten den Namen aller Dateien, deren Status geändert wurde, für einen anderen Zweck verwenden, z. B. zum Melden. Das Skript von heemayl ist für solche Zwecke eine nette Sache.
Hinzugefügt von Mostafa Najafiyazdi Kommentare
[..] Wenn er die Berechtigungen von Ordnern nicht ändern möchte, die keine Ausführungsberechtigung haben, sollte er chmod u+x *
[..] nicht verwenden.