この記事ではmkdir
とrmdir
の基本的な使い方と例、オプションなどについて解説しています。
mkdir コマンド
mkdir
コマンドはディレクトリを作成することのできるコマンドです。touch
コマンドでは空のファイルを作成することができましたが、こちらはディレクトリを作成することができます。
MaKe DIRectory
を短縮したコマンド名で、Windowsのコマンドプロンプト上でもオプションは異なりますが同名、同機能で存在しています。
ディレクトリを作成する
mkdir [ディレクトリ名]
で指定した名前のディレクトリを作成することができます。
$ mkdir test $ ls test
ディレクトリ名
にスペースで区切った複数の名前を渡すと一度に複数のディレクトリを作成することができます。
$ mkdir test_1 test_2 test_3 $ ls test_1 test_2 test_3
上記のように複数のディレクトリを一度に作成することはできますが、オプションなしのままでは複数階層あるディレクトリを作成することができません。以下を実行するとエラーとなります。
$ mkdir test/test_nest mkdir: cannot create directory ‘test/test_nest’: No such file or directory
以下の-p
オプションを追加することで正常に作成することができるようになります。また最終ディレクトリ以外のディレクトリが既に存在している場合には、エラーとなりません。
$ mkdir -p test/test_nest $ mkdir test/test_nest/final_dir # エラーとならずfinal_dirが作成される
-p オプションで深い階層のディレクトリごと作成する
-p
オプションを指定することで、指定したファイル名(パス名)の途中に存在していないディレクトリが指定されている場合に、えらとせずに一緒に作成することができます。複数階層あるディレクトリを一気に作成した時に使用します。
$ mkdir -p test/test_nest $ ls test $ cd test $ ls test_nest
注意が必要な点は、指定したパスの途中にすでに同名のファイルが存在している場合にはエラーとなってしまいます。Linuxでは、同名のファイルとディレクトリを同じ場所に作成することができません。
-m オプションで権限を設定しながら作成する
ディレクトリを作成した時の権限設定はデフォルトの値か、umask
で設定している値となりますが、-m [権限設定値]
で設定しながらディレクトリを作成することができます。
値には数値で設定する方法(777
、600
など)と文字列で設定する方法(a+rwx
など)の両方が使用できます(chmod
と同じ)。
$ mkdir -m 777 test $ ls -l drwxrwxrwx 2 user user 4096 Jun 11 15:13 test
-p
オプションと同時に使用した場合、最終ディレクトリのみ-mオプションで指定した権限が付与されます。
$ mkdir -p -m 777 test/nest # test/ディレクトリはデフォルト値でnestディレクトリのみ777権限となる。
一括で作成したディレクトリにまとめて権限を付与したい場合は、作成後にchmod -R
で変更することができます。
rmdir コマンド
ここまではmkdir
の説明でしたが、ディレクトリを削除するためだけのrmdir
というコマンドがあります。
rm
コマンドでもオプションと組み合わせることによってディレクトリを削除することができますが、rmdir
ではディレクトリしか削除できません。
ReMove DIRectory
の短縮で、こちらもコマンドプロンプトに存在しています。
ディレクトリを削除する
rmdir [ディレクトリ名]
で存在するディレクトリを削除することができます。注意が必要な点はディレクトリの中身が隠しファイルも含めて空っぽでなければエラーとなります。
$ mkdir test $ rmdir test # 成功 $ mkdir -p test/nest $ rmdir test rmdir: failed to remove 'test': Directory not empty # 失敗(test/内にnest/が存在しているため)
深い階層のディレクトリごと削除するには以下の-p
オプションを使用します。なお-p
オプションを使用した場合でも、ファイルなどが残っていると削除できません。
ディレクトリ名
にスペース区切りで複数ディレクトリを指定することで一括でさくじょすることができます。
ファイルが存在しているなどのエラーで削除できないディレクトリが発生した場合、そのディレクトリだけ残り、ほかのディレクトリは削除されます。削除できるディレクトリは削除されてしまうので注意が必要です。
$ mkdir -p 1 2 3/.exist 4 # 3/は削除できないようにする $ rmdir 1 2 3 4 rmdir: failed to remove '3': Directory not empty $ ls 3 # 3/以外は削除されてしまう
-p オプションで深い階層のディレクトリごと削除する
mkdir -p
で深い階層のディレクトリごと作成できたのと同じく、rmdir -p
でも逆の同じようなことができます。
先ほど削除できなかったディレクトリを以下のようにして削除することができます。
$ rmdir -p test/nest
ディレクトリの中身ごと削除するにはrm -rを使う
rmdir
を紹介しましたが、おそらくあまり使われることはないと思われます。rm -r
を使用することでディレクトリが削除できたり、ディレクトリ内にファイルやディレクトリが存在している場合にでも削除できるのでこちらのほうが便利です。
一切合切削除したい場合には便利ですが、削除前に消してはいけないファイルがないかどうかしっかりとチェックする必要があります。
$ mkdir -p test/nest $ rmdir test rmdir: failed to remove 'test': Directory not empty # 失敗 $ rm -r test $ ls # (何もない) # 成功
参考
以下のサイトの情報を引用・参考にしました。