2016-03-30 11 views
3

Der Befehl mkdir von Matlab scheint immer die Berechtigungen 755 zu setzen, und die Funktion scheint keine Optionen zu akzeptieren, dies zu ändern.Wie steuern Sie Verzeichnisberechtigungen mit dem mkdir-Befehl von matlab?

Es scheint nicht einmal umask zu respektieren (umask 2 entspricht Berechtigungen 775 oder rwxrwxr-x).

>> !umask 
2 
>> mkdir /tmp/test 
>> ls -l /tmp/ 
drwxr-xr-x 2 username groupname   6 Mar 30 10:51 test/ 

Wenn ich erstellen Sie einfach ein Verzeichnis, dann fileattrib verwenden, nachdem die Tatsache, relativ trivial ist, aber wenn ich ein Unterverzeichnis zum Beispiel erstellen /tmp/test1/test2 dann erstellt matlabs mkdir standardmäßig alle nicht vorhandenen übergeordneten Verzeichnisse. (Als wäre das Flag -p für die Unix-Version von mkdir gesetzt worden.) Wenn ich nur die Berechtigungen für die neuen Verzeichnisse festlegen möchte, scheint es nicht einfach zu sein zu sagen, welche Teile des Baums neu sind und welche sind alt.

Für den Datensatz verwende ich R2014b auf Linux.

+0

Ich wünschte, es gibt ein 'Sudo' in Matlab 2016b. – GameOfThrows

+3

kann man nicht einfach direkt den UNIX Befehl benutzen: '>>! Mkdir -p/tmp/test1/test2'? – Amro

+0

@Amro Ja, das ist eine gute Idee. Ich könnte es so machen. Zwei Gründe, nicht zu: 1) Ich nehme an, dass Portabilität zu Windows brechen würde 2) Matlab * sollte * eine Möglichkeit haben, diese Arbeit zu machen – craq

Antwort

-1

Die neueste Version von Maltlab kann die Berechtigung auf transparente Weise mit dem Befehl fileattrib ändern.

+0

Im Moment fügt dies den Kommentaren von Amro nichts hinzu. Bitte erweitern Sie, um dies zu einer gültigen Antwort zu machen. (z. B. Syntax, um Dateiattrib zu verwenden, wie es mit rekursiv erstellten Verzeichnissen usw. umgeht) – craq

+0

@craq Nun, das würde helfen, aber ich denke, wie es ist, fügt dies der Diskussion hinzu, weil dies eine neue Schnittstelle ist, die vorher nicht vorhanden war. Merken Sie sich die Diskussion, wo Leute behaupten, dass es nicht möglich ist. Nun, sie sind jetzt falsch. – Mikhail