Linuxのmkdirコマンドで再帰的ディレクトリ作成をマスターする方法
Linuxの「mkdir」(make directory)コマンドは、通常、現在作業しているディレクトリの中に1つのサブディレクトリを作成するために使われます。例えば、~/Documentsにいる状態で「mkdir Memoranda」と入力すると、~/Documentsの中に「Memoranda」という1つのディレクトリが作成されるだけです。通常は、その中にさらにディレクトリを作ることはありません。
しかし、mkdirコマンドの再帰的な形式を使えば、ディレクトリツリー全体を一括で作成することができます。カレントディレクトリの中にディレクトリを作り、その中にさらに複数のディレクトリをまとめて作成できるのです。作業を続けるには、CLI(コマンドラインインターフェース)のプロンプトから操作する必要があります。「Ctrl + Alt + T」キーを同時に押すとグラフィカルなターミナルが開きます。Ubuntu Unity Dashで「Terminal」を検索したり、アプリケーションメニューから「システムツール」→「Terminal」を選択することも可能です。自分のホームディレクトリ内での作業であれば、rootユーザーになる必要はありません。
方法1:-pオプション(parents)を使う
一度に複数のディレクトリを作成したい場合は、「mkdir -p hey/this/is/a/whole/tree」と入力してEnterキーを押します。すると、これらの名前を持つディレクトリ一式が、互いに入れ子になった状態で一気に作成されます。もちろん、パスのどの部分にも好きな名前を指定できます。
もし一部のディレクトリがすでに存在していても(例えば「hey」と「this」は存在するが他は存在しない場合)、mkdirはエラーを出さずに既存のディレクトリをそのまま通過し、その下に新しいディレクトリを作成してくれます。
-pオプションは「parents(親)」を意味し、多くのディストリビューションでは「--parents」という長い形式でも指定できます。この方法なら、事実上無制限の数のディレクトリを一度に作成可能です。作成されたディレクトリは、他の通常のディレクトリとまったく同じように機能します。つまり、一番上のディレクトリを削除しようとすると、「ディレクトリが空ではない」というエラーが出ることさえあるのです!
方法2:-pオプションとブレース展開を組み合わせる
ブレース展開(波括弧展開)を使うと、bashシェルで単一のパターンに従う多数のディレクトリをまとめて作成できます。例えば、「mkdir {1..4}」と入力すると、カレントディレクトリに「1」「2」「3」「4」という番号付きの4つのディレクトリが作成されます。
この概念は-pオプションと組み合わせることができます。例えば、「mkdir -p 1/{1..4}」と入力してEnterを押すと、「1」というディレクトリが作られ、その中に「1」「2」「3」「4」という4つのディレクトリが作成されます。非常に強力なコマンドで、大量のディレクトリを一括作成できます。Linuxで写真・動画・音楽のコレクションを整理するのに最適であり、配布用のソフトウェアやパッケージのインストールスクリプトを作成する際にこの手法を活用する人も少なくありません。
もちろん、コマンドの任意の部分にブレース展開を混ぜ込むこともできます。ブレース展開でいくつかのディレクトリを作りつつ、それ以外は親ディレクトリの再帰だけで作りたい場合は、「mkdir -p a/directory/inside{1..4}」のようなコマンドを試してみてください。これにより、「a」とその中の「directory」、さらにその下に「inside1」「inside2」「inside3」「inside4」が作成されます。
mkdirコマンドの使い方を覚えたら、自由に実験して、互いに入れ子になった追加のディレクトリを作ってみましょう。ただし、中に他のディレクトリが含まれているディレクトリは、再帰オプション(rm -rなど)を使うか、ファイルマネージャーを利用しない限り削除できない点には注意が必要です。
著者について

Kevin Arrows(ケビン・アローズ)
Kevin Arrowsは、10年以上の業界経験を持つベテランのテクノロジースペシャリストです。Microsoft認定テクノロジースペシャリスト(MCTS)の資格を保有し、最新の技術動向を追いかけることに強い情熱を注いでいます。ソフトウェア開発、サイバーセキュリティ、クラウドコンピューティングなど、幅広い技術関連トピックについて執筆しており、その専門性と知識は同業者から広く認められ、高い評価を得ています。特に、複雑な技術的概念を明確かつ簡潔に説明する能力には定評があります。
-
SHファイル(シェルスクリプト)とは?Linuxでの作成方法と実行方法を徹底解説
スクリプトファイルには、特定のプログラムやスクリプトエンジンによって実行されるコマンドが含まれています。これらのコマンドはコンパイルされることなく、そのまま実行されます。スクリプト言語は実行時環境向けに命令を記述するためのもので、目的や環境に応じてさまざまな種類が存在します。本記事では、Linuxで動作する「bash」スクリプト言語について詳しく解説します。bashのコマンドや構文を含むファイルは、SHファイルまたはシェルスクリプトファイルと呼ばれます。LinuxにおけるSHファイルとは?スクリプトファイルは、その中身がbash言語で記述されているため、bash形式で作成・保存されます。拡張子
-
「sudo: no tty present and no askpass program specified」エラーの対処法
SSH接続中にsudoコマンドを実行した際に表示される「sudo: no tty present and no askpass program specified」というエラーメッセージは、実際の原因を的確に伝えてくれないことで知られています。このメッセージが表示されていても、実は有効なTTYを利用しているケースがほとんどです。また、普段はSSH経由でもsudoパスワードを問題なく入力できているという方も多いでしょう。つまり、このエラーの多くは構文ミスに起因しているのですが、エラーメッセージ自体はその事実に直接触れてはいません。この問題はSSHそのものに関連しているため、Linux、FreeB