Lisp でディレクトリを作成する
手順としては以下。
- make-pathname で PATH を作成
- ensure-directories-exist
まずは、絶対PATHを使用した例。$HOME に xxx というディレクトリを作成する例。
(setf x (make-pathname :directory '(:absolute "Users" "me" "xxx"))) (ensure-directories-exist x)
相対 PATH を使用した例。
(setf x (make-pathname :directory '(:relative "xxx"))) (ensure-directories-exist x)
これは、Current Directory に xxx というディレクトリを作成する。
なお、上記例では :directory の引数をシングルクォートで渡しているが、変数を使用する場合はこの方法だとエラーになる。以下はエラーの例。
(setf x "x") (make-pathname :directory '(:absolute "Users" "me" x) *** - MAKE-PATHNAME: Illegal :DIRECTORY argument (:ABSOLUTE "Users" "me" X)
作成するディレクトリ名が決め打ちじゃない場合は、list で渡してやる必要がある。
(setf x "x") (make-pathname :directory (list :absolute "Users" "me" x)) #P"/Users/me/x/"
変数で渡す場合は、変数にスラッシュが含まれていても Illegal :DIRECTORY argument になるので注意が必要。