こんにちは!はづきです
文系から一部上場IT企業に就職し、エンジニアをやっています
この記事はLinuxのmkdirコマンドについての備忘録です
mkdirは「make directory」の略称で、ディレクトリを作成するためのコマンドです
基本操作や頻繁に使用するオプションの実行例を紹介します。ぜひご参考ください
※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。
※本サイトにはプロモーション・広告が含まれています(はづきのブログより)
mkdirコマンドでディレクトリを作成する
mkdirはディレクトリを作成するコマンドです
以下のようにコマンドを実行します
mkdir {作成したいディレクトリ名}
{作成したいディレクトリ名}には複数のディレクトリを指定することも可能です。同時に複数のディレクトリを作成することができます
hazukiblog@hazukiBlog:~/work$ pwd #カレントディレクトリの確認
/home/hazukiblog/work
#「dir1」というディレクトリを作成する
#「ls」はディレクトリ配下のファイルやディレクトリを確認するコマンド
hazukiblog@hazukiBlog:~/work$ ls
hazukiblog@hazukiBlog:~/work$ mkdir dir1 #「dir1」を作成
hazukiblog@hazukiBlog:~/work$ ls #「dir1」が作成された
dir1
#「dir2」「dir3」というディレクトリを同時に作成する
hazukiblog@hazukiBlog:~/work$ mkdir dir2 dir3 #「dir2」「dir3」を作成
hazukiblog@hazukiBlog:~/work$ ls
dir1 dir2 dir3 #「dir2」「dir3」が作成された
ただし、上記で説明した基本操作はカレントディレクトリの直下にしかディレクトリを作成できません。複数階層のディレクトリを同時に作成したい場合は、以下で説明するコマンドを参考にしてください
mkdirコマンドのオプションを紹介
mkdirには3つの主要オプションが用意されています
以下のオプションについて順番に解説します!
- -m(--mode):パーミッションを指定してディレクトリを作成する
- -p(--parents):同時に2階層以上のディレクトリを作成する
- -v(--verbose):ディレクトリ作成の結果を表示する
-m:パーミッションを指定してディレクトリを作成する
-mはディレクトリ作成時にパーミッションを指定するオプションです
パーミッションとは、ユーザごとにファイル/ディレクトリに対する操作に制限をかける権限のことです。例えば、開発現場でリーダーのみに閲覧と編集の権限を与え、他のメンバーには閲覧のみの権限を与えたファイルを作成することが可能です
まずはパーミッションの確認方法と基本知識を解説します
#パーミッションはlsコマンドに-lオプションを付けることで確認できる
hazukiblog@hazukiBlog:~/work$ ls -l
drwxr-xr-x 2 hazukiblog hazukiblog 4096 Aug 8 10:59 dir2
#上記の中でパーミッションに関わる部分を解説します
#d ①rwx ②r-x ③r-x 2 ④hazukiblog ⑤hazukiblog 4096 Aug 8 10:59 ⑥dir2
#①所有者に対するパーミッションを表す(所有者 = ④)
#②グループに対するパーミッションを表す(グループ = ⑤)
#③その他のユーザに対するパーミッションを表す
#⑥パーミッションが付与されているディレクトリやファイルの名称
#
#▼ディレクトリに対するパーミッション(rwx)の意味
#r:読み込み権限...ディレクトリ内のファイルの一覧表示・閲覧ができる
#w:書き込み権限...ディレクトリ内のファイルの作成・削除・編集ができる
#x:実行権限...ディレクトリ内に移動できる
#
#上記の実行結果では、以下のような権限が付与されています
# ①所有者にはすべての権限がある
# ②グループ、③その他のユーザーには読み込み権限と実行権限がある
#※1.実際の挙動は上記権限の組み合わせによって成り立つ
# 例.)「-w-」では実は書き込みできない。「-wx」とする必要がある
#※2.よく使われるパーミッションの付与例は後程解説します
#
#補足:
#所属グループは「groups {ユーザ名}」で確認できます
#hazukiblogというユーザは「:」以降の複数のグループに所属していることになる
hazukiblog@hazukiBlog:~/work$ groups hazukiblog
hazukiblog : hazukiblog adm dialout cdrom floppy sudo audio dip video plugdev netdev
次にmkdirの-mオプションの実行例を解説します
-mを付けることでパーミッションの指定が可能になります。今回は数字でのパーミッションの指定方法を紹介します
#所有者、グループ、その他のユーザーの3つに対して数字でパーミッションを指定する
#0 --> ---
#1 --> --x
#2 --> -w-
#3 --> -wx
#4 --> r--
#5 --> r-x ※一般的に読み込み権限のみ与えたいときに指定される
#6 --> rw-
#7 --> rwx ※一般的に読み書き権限を与えたいときに指定される
#※上記は2進数に対応しているので実は覚えやすい
#すべてのユーザーに読み込み権限があるdir1を作成(5 --> r-x)
hazukiblog@hazukiBlog:~/work$ mkdir -m 555 dir1
#所有者だけ読み書き権限があるdir2を作成(7 --> rwx)
#グループ、その他のユーザーは読み込み権限のみ(5 --> r-x)
hazukiblog@hazukiBlog:~/work$ mkdir -m 755 dir2
#すべてのユーザーに読み書き権限があるdir3を作成(7 --> rwx)
#「-m」は「--mode」でもOK
hazukiblog@hazukiBlog:~/work$ mkdir --mode 777 dir3
#作成したディレクトリの権限を確認する(lsコマンドを使用)
hazukiblog@hazukiBlog:~/work$ ls -l
total 12
dr-xr-xr-x 2 hazukiblog hazukiblog 4096 Aug 8 10:59 dir1
drwxr-xr-x 2 hazukiblog hazukiblog 4096 Aug 8 10:59 dir2
drwxrwxrwx 2 hazukiblog hazukiblog 4096 Aug 8 10:59 dir3
#dir1,dir2は読み込み権限がある(=lsやcatが実行可能)
#以下ではdir1,dir2配下に何もないため実行結果が出ていない(実行は正常にできている)
hazukiblog@hazukiBlog:~/work$ ls dir1
hazukiblog@hazukiBlog:~/work$ ls dir2
#dir1には書き込み権限がない(=touchでファイル作成ができない)
#touchコマンドはファイルを作成するためのコマンド
hazukiblog@hazukiBlog:~/work$ touch dir1/file1
touch: cannot touch 'dir1/file1': Permission denied
#dir2には書き込み権限がある(=touchでファイル作成ができる)
hazukiblog@hazukiBlog:~/work$ touch dir2/file2
hazukiblog@hazukiBlog:~/work$ ls dir2
file2
-p:同時に2階層以上のディレクトリを作成する
-pは同時に2階層以上のディレクトリを作成できるオプションです
根本の処理動作としては、「指定したディレクトリが存在しない場合のみ新規作成する」というものになります
指定したディレクトリが存在する場合は、エラーを表示させず実行が終わります。既にあるディレクトリをそのまま残すので、上書きされる心配はありません
まずは-pオプションのエラーに関する動作を検証してみましょう
#dir1配下にfile1がある状態から検証します
hazukiblog@hazukiBlog:~/work$ ls dir1
file1
#通常の「mkdir」だと既にdir1が存在するためエラーメッセージが出ます
hazukiblog@hazukiBlog:~/work$ mkdir dir1
mkdir: cannot create directory ‘dir1’: File exists
#-pを付けることでエラーメッセージは出ません
#既にdir1があるためディレクトリの新規作成/上書きはされません
hazukiblog@hazukiBlog:~/work$ mkdir -p dir1
#dir1の中身は始めと変わりません
hazukiblog@hazukiBlog:~/work$ ls dir1
file1
#指定したディレクトリが存在しない場合のみ新規作成されます!
#「-p」は「--parents」としてもOK
次に同時に2階層以上のディレクトリを作成してみましょう
#dir2が存在する状態から2階層分ディレクトリを作成してみます
hazukiblog@hazukiBlog:~/work$ mkdir -p dir2/dir2-1/dir2-2
#dir2配下にdir2-1が作成されました
hazukiblog@hazukiBlog:~/work$ ls dir2
dir2-1
#dir2/dir2-1配下にdir2-2が作成されました
hazukiblog@hazukiBlog:~/work$ ls dir2/dir2-1
dir2-2
-v:ディレクトリ作成の結果を表示する
-vはディレクトリの作成の結果を表示するコマンドです
同時に複数のオプションを指定する方法も紹介します。以下で実行結果をみてみましょう
#dir1作成の結果を「-v」で表示させてみる
hazukiblog@hazukiBlog:~/work$ mkdir -v dir1
mkdir: created directory 'dir1'
#↑#新規作成のメッセージが表示される
hazukiblog@hazukiBlog:~/work$ mkdir -v dir1
mkdir: cannot create directory ‘dir1’: File exists
#↑新規作成失敗のメッセージが表示される(既に存在するディレクトリのため)
#「-p」オプションと同時に使用してみる
#指定の方法は「-pv」「-vp」「-p -v」...などでOK
hazukiblog@hazukiBlog:~/work$ mkdir -pv dir1/dir1-1/dir1-2
mkdir: created directory 'dir1/dir1-1'
mkdir: created directory 'dir1/dir1-1/dir1-2'
#↑新規作成されたディレクトリに対してメッセージが表示される
#「-v」は「--verbose」としてもOK
今回はLinuxのmkdirコマンドについて紹介しました
みなさんのお役に立てば幸いです。最後まで読んでいただきありがとうございました
おしまい
コメント