3 Stimmen

Wie kann ich den Modus (Berechtigungen) eines Verzeichnisses herausfinden?

Wie kann ich den Modus (Berechtigungen) eines Verzeichnisses herausfinden?

8voto

AmokHuginnsson Punkte 1153

Nach Angaben von perldoc -f stat :

$mode = (stat($filename))[2];
printf "Permissions are %04o\n", $mode & 07777;

5voto

justintime Punkte 3581

Bei anderen Beispielen müssen Sie wissen, dass der Modus das dritte Element in der Statistikausgabe ist (z. B. [2]). Mit File::stat können Sie einen symbolischen Namen angeben.

use File::stat ;
my $dir = '/etc/cron.d' ;
printf "%o", stat($dir) -> mode ;

2voto

cdhowie Punkte 142402
my $mode;
(undef, undef, $mode) = stat($directoryname);

0voto

daxim Punkte 38607

Gute Antworten bis jetzt. Ich möchte ein weiteres gutes Modul hinzufügen.

Meistens wollen Sie nur den Modus einer Datei kennen, um sie anschließend bearbeiten zu können. use Fcntl qw(:mode) o use POSIX qw(:sys_stat_h) die erforderlichen Konstanten exportieren, z. B. S_IXUSR . Ich finde das umständlich und sogar fehleranfällig, da man in Perl nur selten auf Mathematik mit Oktalzahlen und Bitoperatoren trifft.

Zu diesem Zweck, Datei::chmod hat die bessere Schnittstelle weil Sie damit die Veränderung zum Ausdruck bringen können

  • ohne dass der alte Modus explizit abgefragt und der neue berechnet werden muss,
  • auf vertrautere Weise als oktal, nämlich
    • symbolisch, bekannt aus chmod(1) z.B. u-x
    • wie in ls(1) z.B. -rw-r--r--

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X