Erstellen Sie das Verzeichnisverzeichnis und alle übergeordneten Verzeichnisse.
Zum Beispiel
require 'fileutils'
FileUtils.mkdir_p('/usr/local/lib/ruby')
Überprüft alle Verzeichnisse unten(Wenn nicht)Erstellen.
/usr
/usr/local
/usr/local/bin
/usr/local/bin/ruby
Zitat https://docs.ruby-lang.org/ja/latest/class/FileUtils.html#M_MAKEDIRS
Mit Linux-Befehlen ..
mkdir -p -m 755. / hoge1 / hoge2 / hoge3 / ruby
Rubin
test.rb
require 'fileutils'
FileUtils.mkdir_p('./hoge1/hoge2/hoge3/ruby', mode: 755)
Wunder?
Sofort ausführen
$ ruby test.rb
$ ls -la
d-wxrw--wt 3 casix staff 96 Jun 12 01:06 hoge1/
Nein, offensichtlich ist die Autorität nicht 755 ...
fileutils.rb
# File fileutils.rb, line 194
def mkdir_p(list, mode: nil, noop: nil, verbose: nil)
list = fu_list(list)
fu_output_message "mkdir -p #{mode ? ('-m %03o ' % mode) : ''}#{list.join ' '}" if verbose
return *list if noop
...
end
Wenn Sie die Verarbeitung des in den Modus versetzten Arguments sorgfältig lesen
mkdir -p #{mode ? ('-m %03o ' % mode) : ''}
ein
#{mode ? ('-m %03o ' % mode) : ''}
Sollte 755 sein,
'-m %03o ' % mode
Wenn Sie 755 in den Modus versetzen
irb(main):001:0> mode = 755
=> 755
irb(main):002:0> '-m %03o ' % mode
=> "-m 1363 "
1363 wird zurückgegeben
Das bedeutet ...
FileUtils.mkdir_p('./hoge1/hoge2/hoge3/ruby', mode: 755)
# ↓
# $ mkdir -p -m 1363 ./hoge1/hoge2/hoge3/ruby
Das war es
'-m %03o ' % mode
# %Da 03o als 0-gepackte 3-stellige Oktalzahl ausgegeben wird
#Im Modus die Zahl, die durch Konvertieren von 755 in Dezimalzahl erhalten wird(493)Einstellen
irb(main):001:0> mode = 0o755
=> 493
irb(main):002:0> '-m %03o ' % mode
=> "-m 755 "
Sieht gut aus
Versuche es zu reparieren
FileUtils.mkdir_p('./hoge1/hoge2/hoge3/ruby', mode: 0o755)
# FileUtils.mkdir_p('./hoge1/hoge2/hoge3/ruby', mode: 0755)Aber k
$ ls -la
drwxr-xr-x 3 casix staff 96 Jun 12 01:43 hoge1/
Es scheint, dass es mit 755 eingestellt werden kann!
Es war in erster Linie nicht auf mkdir_p beschränkt Alle Methoden, die Berechtigungen mit FileUtils angeben können, scheinen dieselben Spezifikationen zu haben
https://docs.ruby-lang.org/ja/latest/class/FileUtils.html#options
(Übrigens, wenn es bei 0 beginnt, vergisst man leicht das Wissen, dass es eine Oktalzahl wird ...)
Recommended Posts