はじめに
この実験では、ディレクトリの作成と整理に不可欠なツールである Linux の mkdir コマンドについて詳しく学びます。今回は、個人の知識管理システムである「デジタルガーデン」を構築するプロセスをシミュレーションしながら、さまざまなシナリオで mkdir を効果的に活用する方法を習得します。この実践的な体験を通じて、コマンドラインの操作が初めての方でも、ディレクトリの作成、階層構造(ネスト)、および権限設定(パーミッション)について理解を深めることができます。
この実験では、ディレクトリの作成と整理に不可欠なツールである 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
notes、projects、resources の 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: 権限を設定
つまり、あなた(所有者)だけがこのディレクトリにアクセスできます。
権限を確認するには、以下のコマンドを使用します。
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)は、複数のディレクトリを作成する際に、各作成状況をフィードバックしてくれるため便利です。特に、一度に多くのディレクトリを作成し、すべてが正しく作成されたか確認したい場合に役立ちます。
詳細モードでいくつかのディレクトリを作成してみましょう。
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 つのディレクトリ(drafts と references)を作成します。もし research_paper 自体が projects 内に存在しない場合は、それも同時に作成されます。
構造と権限を確認しましょう。
ls -lR ~/project/digital_garden/projects/research_paper
指定した権限(drwxr-x---)を持つネストされたディレクトリが表示されるはずです。
デジタルガーデンの構造が完成したので、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 コマンドの多機能性について学びました。習得した内容は以下の通りです。
-p オプションを使用したネストされたディレクトリ構造の作成-m オプションを使用したディレクトリ作成時の特定権限の設定-v オプション(詳細モード)による実行結果の確認また、これらのオプションを組み合わせて、より複雑な操作を行う方法も学びました。
今回の演習では触れませんでしたが、mkdir には特定の状況で役立つ追加のパラメータも存在します。
-Z: 作成した各ディレクトリの SELinux セキュリティコンテキストをデフォルトタイプに設定--context[=CTX]: -Z と同様。CTX が指定された場合は、SELinux または SMACK のセキュリティコンテキストを CTX に設定--help: ヘルプメッセージを表示して終了--version: バージョン情報を表示して終了これらのスキルは、Linux 環境でファイルシステムを効率的に整理するための基礎となります。今回はデジタルガーデンを例にしましたが、これらのテクニックは Linux でディレクトリ構造を管理する必要があるあらゆる場面で応用可能です。Linux の学習を続ける中で、mkdir はファイルやプロジェクトを整理するための不可欠なツールになるでしょう。