第7回Unixコマンド勉強会~mkdirコマンド~

こんにちは!草もちです🌵

読書の秋…ということで、最近、本を読み始めました!

なんだかそれだけで賢くなった気がする!👓

 

さて、今回はmkdirコマンドについて説明していきたいと思います。

mkdirコマンドの概要

mkdirコマンドとは??

mkdirコマンドはディレクトリを作成するためのコマンドです。

mkdirとは、”make directory”の略と言われています。

基本的な使い方

$ mkdir ディレクトリ名

mkdirの後に作成したいディレクトリ名を指定して、実行します。

実際にやってみましょう。

今回はホームディレクトリに”directory_3”を作っていきたいと思います。

cdコマンドでホームディレクトリに移動して

$ cd

※cdコマンドの使い方はこちら↓↓↓

”directory_3”を作成します。

$ mkdir directory_3

ちゃんと作成できたか確認するため、カレントディレクトリのディレクトリやファイル情報を表示するlsコマンドを実行しましょう。

$ ls

すると、

directory_1 directory_2 directory_3

と表示されました。

無事、directory_3が作成できているようですね。

草もち
草もち

lsコマンドは後日説明します!

mkdirコマンドのオプション

-mオプション

-mオプション(-modeオプション)
パーミッションを指定してディレクトリを作成するオプションです。
草もち
草もち

パ…パーミッション?!

パーミッションって何??

パーミッションとは”アクセス権”のことを言います。

アクセス権には3つの種類があります。

権限の種類内容
読み取り権限ディレクトリやファイルの中身を見ることができる
書き込み権限ディレクトリやファイルの中身を編集することができる
実行権限ファイルを実行することができる

また、このアクセス権を付与する対象も3種類あります。

  • 所有者
  • 所有グループのユーザー
  • その他のユーザー

パーミッションの確認方法

特定のディレクトリやファイルのパーミッションを確認するには、以下のコマンドを実行します。

$ ls -l

ホームディレクトリで実行すると(ホームディレクトリに移動するコマンドは以下省略)、

drwxrwxr-x. 3 kusamochi kusamochi 10  9月  1 12:59 directory_1
drwxrwxr-x. 4 kusamochi kusamochi 25  9月  1 16:23 directory_2
drwxrwxr-x. 2 kusamochi kusamochi  6  9月  8 16:23 directory_3

といった情報が表示されます。

先頭の”drwxrwxr-x”といった10文字の文字列がまさにパーミッションについての情報を表しています。

まず、先頭の1文字目は、ファイル種別を示しています。

文字ファイル種別
ファイル
dディレクトリ
lシンボリックリンク

※シンボリックリンクについてはこちらを参照してください↓↓↓

残りの9文字は3文字ずつ区切りで意味をなしていて、それぞれ、

文字列内容
2~4文字目所有者の権限
5~7文字目所有グループのユーザーの権限
8~10文字目その他のユーザーの権限

といった内容を示しています。

さらに各3文字は”rwx”の順に表示され、それぞれ、

文字意味
r読み込み権限
w書き込み権限
x実行権限

といった意味をなしています。

”-(ハイフン)”の箇所はその権限がないことを表します。

つまり、”drwxrwxr-x”部分を翻訳すると、

ファイル種別:ディレクトリ

所有者の権限:読み取り、書き込み、実行権限すべてあり

所有グループのユーザー:読み取り、書き込み、実行権限すべてあり

その他のユーザー:読み取り、実行権限はあるが、書き込み権限は無い

ということになります。

パーミッションの指定(数値で指定)

読み取り・書き込み・実行権限を表す3文字には、権限ありを1、なしを0で表現した2進数表記を8進数に置き換えた数字が割り当てられており、

文字数字
r(読み取り権限)4
w(書き込み権限)2
x(実行権限)1

mkdirコマンドでパーミッションを指定するときは、この数値の合計値を使用します。

例えば、

読み取り権限だけ与えたいときは…4+0+0=4。

読み取り権限と書き込み権限を与えたいときは…4+2+0=6

読み取り、書き込み、実行権限全ての権限を与えたいときは…4+2+1=7

といった感じです。

上記を、所有者、所有グループのユーザー、その他のユーザーの順に3つ数値を指定します。

今回は

所有者:読み取り、書き込み、実行権限すべてあり

所有グループのユーザー:読み取り、書き込み、実行権限すべてあり

その他のユーザー:読み取り権限のみあり

といった条件のディレクトリ”directory_4”をホームディレクトリに作ります。

ホームディレクトリに移動し、以下を実行。

$ mkdir -m 774 directory_4

カレントディレクトリのディレクトリやファイルのパーミッション情報を確認してみましょう。

先ほど同様、”-l”オプション付きのlsコマンドを実行します。

$ ls -l

すると、

drwxrwxr-x. 3 kusamochi kusamochi 10  9月  1 12:59 directory_1
drwxrwxr-x. 4 kusamochi kusamochi 25  9月  1 16:23 directory_2
drwxrwxr-x. 2 kusamochi kusamochi  6  9月  8 16:30 directory_3
drwxrwxr--. 2 kusamochi kusamochi  6  9月  9 19:20 directory_4

期待していたdirectory_4の情報が追加されていることがわかりますね!

パーミッションの指定(アルファベットで指定)

数値ではなく、アルファベットで指定する方法もあります。

アクセス権を付与する対象にはアルファベットが割り振られています。

対象アルファベット
所有者u
所有グループのユーザーg
その他のユーザーo
すべてのユーザーa

例えば、

その他のユーザーは読み取り権限のみの”directory_5”を作りたい場合は、

その他のユーザーのアルファベット”o”と、

指定した権限を付与するという意味の”=(イコール)”と、

読み取り権限の”r”を使用して、

$ mkdir -m o=r directory_5

と、実行しましょう。

ちゃんと作れたか確認のために

$ ls -l

と実行すると、

drwxrwxr-x. 3 kusamochi kusamochi 10  9月  1 12:59 directory_1
drwxrwxr-x. 4 kusamochi kusamochi 25  9月  1 16:23 directory_2
drwxrwxr-x. 2 kusamochi kusamochi  6  9月  8 16:30 directory_3
drwxrwxr--. 2 kusamochi kusamochi  6  9月  9 19:20 directory_4
drwxrwxr--. 2 kusamochi kusamochi  6  9月 10 22:15 directory_5

無事、その他のユーザーは読み取り権限のみの”directory_5”ができました!

草もち
草もち

表示内容の詳細は

lsコマンドの時に説明します!

-vオプション

-vオプション(-verboseオプション)
コマンド実行後、ディレクトリを作成しましたよ~!という結果メッセージを表示させるオプションです。
実際につかってみましょう。
$ mkdir -v directory_5

と実行すると、

mkdir: ディレクトリ `directory_5' を作成しました

上記のように、作成したディレクトリ名と共にメッセージが表示されます。

-pオプション

-pオプション(-parentsオプション)
作成しようとしたディレクトリの親ディレクトリが存在しない場合は、エラーを表示せずに親ディレクトリも一緒に作成するオプションです。

試しに、オプションなしで、カレントディレクトリに存在しないdirectory_oya配下にdirectory_koを作ろうと、以下のコマンドを実行してみます。

$ mkdir directory_oya/directory_ko

すると、

mkdir: ディレクトリ `directory_oya/directory_ko' を作成できません: 
そのようなファイルやディレクトリはありません

上記のようなエラーが表示されます。

”directory_oya”が存在しないため、”directory_ko”は作れませんよ!と言われてしまいました。

今度は

$ mkdir -p -v directory_oya/directory_ko

-pオプションと-vオプション付きで実行してみると…

mkdir: ディレクトリ `directory_oya' を作成しました
mkdir: ディレクトリ `directory_oya/directory_ko' を作成しました

上記のようなメッセージが表示されました!

directory_koを作ると同時に、存在していなかった親ディレクトリdirectory_oyaも一緒につくってくれたことが分かります!

 

長くなってしまいました💦

最後まで読んで頂きありがとうございます🐣✨

以上、mkdirコマンドについてでした👋

タイトルとURLをコピーしました