Landscape トップページ | < 前の日 2004-12-12 2004-12-13 次の日 2004-12-14 >

Landscape - エンジニアのメモ 2004-12-13

mkdir と rmdir の -p --parents オプション


* mkdir と rmdir の -p --parents オプション

この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [unix]

mkdir (1) の man page を読んでいたら、-p --parents というオプションがあることに気づいた。指定されたディレクトリの親ディレクトリが無いときはそれも含めて作るオプション。

- mkdir の -p --parents オプション

Delphi 5で開発していた頃に ForceDirectories() という関数を使ったことがあるが、これと同じ様な働きをしてたなあ。

Manpage of MKDIR
http://www.linux.or.jp/JM/html/gnumaniak/man1/mkdir.1.html
-p, --parents
引き数に指定した各々の directory で、存在しない親ディレクトリも含めて作成する。作成された親ディレクトリのアクセス権は、 umask の値に `u+wx' としたものが設定される。すでに存在するディレクトリに対応する引き数は無視される。 (従って、ディレクトリ /a が存在する場合に `mkdir /a' とするとエラーとなるが、 `mkdir -p /a' とするとエラーにならない。)

-v, --verbose
作成したディレクトリごとにメッセージを表示する。このオプションは --parents を一緒に指定するととても役立つ。

やってみる。
$ mkdir -p -v test/test2/test3/
test
test/test2
test/test2/test3

$ ls -R
test

./test:
test2

./test/test2:
test3

./test/test2/test3:
なるほどー。これは便利だ。

- rmdir の -p --parents オプション

rmdir にも -p オプションがある。

特定ディレクトリ以下を一気に消したい場合は rm -rf しちゃうから、--parents オプションがあるなんて知らなかった。そもそも rmdir ってほとんど使わないな。rm -r と rmdir を使い分けた方がミスを防げて良いんだろうけど。

Manpage of RMDIR
http://www.linux.or.jp/JM/html/GNU_fileutils/man1/rmdir.1.ht ...
-p
指定した directory がパス名に複数の階層を持っている場合、それを削除し、最終のディレクトリ名を省略し、その結果のディレクトリを削除し、というふうにすべての階層が削除されるまで繰り返す。つまり、`rmdir -p a/b/c' は `rmdir a/b/c; rmdir a/b; rmdir a' と同じである。

なるほど。ということは、ディレクトリが空じゃないとダメなんだよね? やってみる。

$ mkdir -p test/test2/test3/

$ touch test/test2/test3/jama
test

./test:
test2

./test/test2:
test3

./test/test2/test3:
jama

$ rmdir -p test/test2/test3/
rmdir: test/test2/test3/: Directory not empty

あ、やっぱりダメだ。

すべての記事の見出し (全1029件)
全カテゴリの一覧と記事の数
カテゴリごとに記事をまとめ読みできます。記事の表題だけを見たい場合は、すべての記事の見出し (カテゴリ別表示) へ。

直近30日分の記事
2007-04-23 (Mon)
2007-03-07 (Wed)
2007-02-27 (Tue)
2007-01-17 (Wed)
2007-01-15 (Mon)
2007-01-14 (Sun)
2007-01-08 (Mon)
2006-12-01 (Fri)
2006-11-22 (Wed)
2006-11-20 (Mon)
2006-11-19 (Sun)
2006-09-30 (Sat)
2006-08-29 (Tue)
2006-08-04 (Fri)
2006-07-27 (Thu)
2006-07-23 (Sun)
2006-07-17 (Mon)
2006-07-10 (Mon)
2006-07-06 (Thu)
2006-07-03 (Mon)
2006-06-29 (Thu)
2006-06-28 (Wed)
2006-06-27 (Tue)
2006-06-25 (Sun)
2006-06-19 (Mon)
2006-06-18 (Sun)
2006-06-15 (Thu)
2006-06-11 (Sun)
2006-06-01 (Thu)
2006-05-30 (Tue)
プロファイル
斎藤 宏明。エンジニアです。宇都宮市に住んでいます。
リンク
RSS
スポンサードリンク
Powered by
さくらインターネット

© 斎藤 宏明 Saito Hiroaki Gmail Address
Landscape - エンジニアのメモ http://sonic64.com/
Landscape はランドスケープと読みます。
ひらがなだと らんどすけーぷ です。