Linux mkdir コマンド:ディレクトリの作成

LinuxBeginner
オンラインで実践に進む

はじめに

この実験では、ディレクトリの作成と整理に不可欠なツールである Linux の mkdir コマンドについて詳しく学びます。今回は、個人の知識管理システムである「デジタルガーデン」を構築するプロセスをシミュレーションしながら、さまざまなシナリオで mkdir を効果的に活用する方法を習得します。この実践的な体験を通じて、コマンドラインの操作が初めての方でも、ディレクトリの作成、階層構造(ネスト)、および権限設定(パーミッション)について理解を深めることができます。

デジタルガーデンのルート作成

まずは、デジタルガーデンのルート(基点)となるディレクトリを作成することから始めましょう。

最初にターミナルを開きます。次のようなプロンプトが表示されているはずです。

labex:project/$

これは、現在 /home/labex/project ディレクトリにいることを示しており、この実験を進めるのに最適な場所です。

では、digital_garden という名前のディレクトリを作成しましょう。

mkdir digital_garden

ここで、mkdir は "make directory"(ディレクトリ作成)の略です。このコマンドを実行すると、現在の場所に digital_garden という名前の新しいフォルダが作成されます。

ディレクトリが正しく作成されたか確認するために、ディレクトリの内容をリスト表示する ls コマンドを使用します。

ls

出力結果に digital_garden が表示されていれば成功です。もし表示されない場合は、もう一度 mkdir コマンドを試してみてください。

メインセクションの追加

デジタルガーデンでは、考えを主要なカテゴリごとに整理したい場合があります。コンテンツの種類ごとにディレクトリを作成してみましょう。

digital_garden の中に、「notes(ノート)」、「projects(プロジェクト)」、「resources(リソース)」の 3 つのディレクトリを作成します。以下の 3 つのコマンドを順に実行してください。

mkdir ~/project/digital_garden/notes
mkdir ~/project/digital_garden/projects
mkdir ~/project/digital_garden/resources

ここで、~/project/digital_garden/ はデジタルガーデンへのフルパス(完全な場所)を示しています。~ は「ホームディレクトリ」を指すショートカットです。

新しい構造を確認するには、デジタルガーデンのパスを指定して ls コマンドを実行します。

ls ~/project/digital_garden

notesprojectsresources の 3 つの新しいディレクトリが表示されるはずです。

これらのディレクトリの用途の例を挙げます。

  • notes: 短いメモや日々の振り返りを保存
  • projects: 長期的な作業や学習内容を管理
  • resources: 参考資料や文献を保管

ネストされたディレクトリの作成

ディレクトリの中にさらにディレクトリを作成し、階層構造(ネスト)にしたいことがよくあります。-p オプションを使用すると、必要に応じて親ディレクトリも同時に作成できるため、深い階層を作る際に非常に便利です。

仮想の Web アプリプロジェクト用に、ネストされた構造を作成してみましょう。

mkdir -p ~/project/digital_garden/projects/web_app/src/components

このコマンドは、一度に多くの処理を行っています。

  • projects の中に web_app フォルダを作成
  • web_app の中に src フォルダを作成
  • 最後に src の中に components フォルダを作成

-p オプション("parents" の略と覚えてください)は、指定したパスの途中に存在しないディレクトリがあれば、それらもすべて作成するよう mkdir に指示します。-p がないと、途中のパスが存在しない場合にエラーが発生します。

この新しい構造を確認するには、ls コマンドに再帰的(recursive)に表示する -R オプションを付けて実行します。

ls -R ~/project/digital_garden/projects/web_app

ネストされたディレクトリ構造が表示されるはずです。

ディレクトリ権限の設定

ディレクトリを作成する際、特定の権限(パーミッション)を設定できます。これは、ディレクトリ内のファイルに対して、誰がアクセス、変更、または実行できるかを制御するのに役立ちます。

アクセス制限をかけた private という名前のディレクトリを作成してみましょう。

mkdir -m 700 ~/project/digital_garden/private

このコマンドの意味は以下の通りです。

  • mkdir: ディレクトリを作成
  • -m 700: 権限を設定
    • 7: 所有者に対して「読み取り」「書き込み」「実行」を許可
    • 0: グループに対して権限なし
    • 0: その他に対して権限なし

つまり、あなた(所有者)だけがこのディレクトリにアクセスできます。

権限を確認するには、以下のコマンドを使用します。

ls -ld ~/project/digital_garden/private

出力は以下のようになるはずです。

drwx------ 2 labex labex 6 Aug  7 18:40 /home/labex/project/digital_garden/private

ここで、drwx------ の意味は次の通りです。

  • d: ディレクトリであることを示す
  • rwx: 所有者(あなた)に読み取り (read)、書き込み (write)、実行 (execute) の権限がある
  • ------: グループおよびその他のユーザーには一切の権限がない

詳細モード(Verbose Mode)の使用

詳細モード(verbose mode)は、複数のディレクトリを作成する際に、各作成状況をフィードバックしてくれるため便利です。特に、一度に多くのディレクトリを作成し、すべてが正しく作成されたか確認したい場合に役立ちます。

詳細モードでいくつかのディレクトリを作成してみましょう。

mkdir -v ~/project/digital_garden/resources/books ~/project/digital_garden/resources/articles ~/project/digital_garden/resources/videos

-v オプションは "verbose"(饒舌な、詳細な)の略です。これにより、mkdir はディレクトリを作成するたびにメッセージを表示します。

次のような出力が表示されるはずです。

mkdir: created directory '/home/labex/project/digital_garden/resources/books'
mkdir: created directory '/home/labex/project/digital_garden/resources/articles'
mkdir: created directory '/home/labex/project/digital_garden/resources/videos'

このフィードバックは、複雑なスクリプトを実行する場合や、トラブルシューティングを行う際に非常に役立ちます。

オプションの組み合わせ

mkdir では複数のオプションを組み合わせることができます。これにより、特定の権限を持つ複雑な構造を、詳細な出力を確認しながら一つのコマンドで作成できます。

アクセス制限を設けた仮想の研究プロジェクト用のネスト構造を作成してみましょう。

mkdir -pvm 750 ~/project/digital_garden/projects/research_paper/drafts ~/project/digital_garden/projects/research_paper/references

このコマンドを分解して解説します。

  • -p: 必要に応じて親ディレクトリを作成
  • -v: 詳細モード。作成された各ディレクトリのメッセージを表示
  • -m 750: 権限を設定(所有者:フルアクセス、グループ:読み取りと実行、その他:アクセス不可)

このコマンドは、research_paper 内に 2 つのディレクトリ(draftsreferences)を作成します。もし research_paper 自体が projects 内に存在しない場合は、それも同時に作成されます。

構造と権限を確認しましょう。

ls -lR ~/project/digital_garden/projects/research_paper

指定した権限(drwxr-x---)を持つネストされたディレクトリが表示されるはずです。

tree コマンドによるデジタルガーデンの可視化

デジタルガーデンの構造が完成したので、tree コマンドを使って視覚的に確認してみましょう。tree コマンドはディレクトリ構造を樹形図のような形式で表示するため、情報の把握がしやすく、見た目も分かりやすくなります。

では、tree を使ってデジタルガーデンの構造を表示します。

tree ~/project/digital_garden

出力は以下のようになるはずです。

/home/labex/project/digital_garden
|-- notes
|-- private
|-- projects
|   |-- research_paper
|   |   |-- drafts
|   |   `-- references
|   `-- web_app
|       `-- src
|           `-- components
`-- resources
    |-- articles
    |-- books
    `-- videos

13 directories, 0 files

このツリー構造により、デジタルガーデンの全体像が一目でわかります。作成したすべてのディレクトリと、そのネスト構造が確認できます。

設定した権限も含めて詳細を確認したい場合は、tree-p オプションを付けて実行します。

tree -p ~/project/digital_garden

これにより、各ディレクトリの権限が次のように表示されます。

[drwxrwxr-x]  /home/labex/project/digital_garden
|-- [drwxrwxr-x]  notes
|-- [drwx------]  private
|-- [drwxrwxr-x]  projects
|   |-- [drwxrwxr-x]  research_paper
|   |   |-- [drwxr-x---]  drafts
|   |   `-- [drwxr-x---]  references
|   `-- [drwxrwxr-x]  web_app
|       `-- [drwxrwxr-x]  src
|           `-- [drwxrwxr-x]  components
`-- [drwxrwxr-x]  resources
    |-- [drwxrwxr-x]  articles
    |-- [drwxrwxr-x]  books
    `-- [drwxrwxr-x]  videos

13 directories, 0 files

この視覚的な表現は、意図した通りの構造と権限でディレクトリが作成されたかを確認するのに最適な方法です。

このステップで、構築した構造全体を確認することができました。これで今回の実験は完了です。tree コマンドは、この演習だけでなく、今後の Linux での作業においてディレクトリ構造を把握するための非常に価値のあるツールとなるでしょう。

まとめ

この実験では、デジタルガーデンの作成をシミュレーションしながら、Linux の mkdir コマンドの多機能性について学びました。習得した内容は以下の通りです。

  1. 単一のディレクトリの作成
  2. 複数のディレクトリの一括作成
  3. -p オプションを使用したネストされたディレクトリ構造の作成
  4. -m オプションを使用したディレクトリ作成時の特定権限の設定
  5. -v オプション(詳細モード)による実行結果の確認

また、これらのオプションを組み合わせて、より複雑な操作を行う方法も学びました。

今回の演習では触れませんでしたが、mkdir には特定の状況で役立つ追加のパラメータも存在します。

  • -Z: 作成した各ディレクトリの SELinux セキュリティコンテキストをデフォルトタイプに設定
  • --context[=CTX]: -Z と同様。CTX が指定された場合は、SELinux または SMACK のセキュリティコンテキストを CTX に設定
  • --help: ヘルプメッセージを表示して終了
  • --version: バージョン情報を表示して終了

これらのスキルは、Linux 環境でファイルシステムを効率的に整理するための基礎となります。今回はデジタルガーデンを例にしましたが、これらのテクニックは Linux でディレクトリ構造を管理する必要があるあらゆる場面で応用可能です。Linux の学習を続ける中で、mkdir はファイルやプロジェクトを整理するための不可欠なツールになるでしょう。

関連リソース