7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

改めてLinuxコマンドを理解する[mkdir,rmdir,rm編]

Last updated at Posted at 2024-12-04

はじめに

ITスクールRareTECHでCS(Customer Support)を担当している池村です!
今回はディレクトリを作成したり、消したりするコマンドを解説します。こちらの記事は『改めてLinuxコマンドを理解する③[cat,touch,echo編]』の続きとなっています。もしよかったら順番に見ていただけると嬉しいです。

※こちらの記事は完全に初心者向けに執筆しています。

mkdirコマンド

まずはmkdirコマンドからご紹介します。これはシンプルにディレクトリを作成するコマンドですね。早速使い方を見ていきましょう。

使い方
mkdir ディレクトリ名

ディレクトリ名は大体なんでも大丈夫です。
実際の実行結果が以下になります。
image.png

実際に中に入ってみましょう。ディレクトリの中身も確認。

作成したディレクトリに入る
cd test && ls

現状は何も表示されないと思います。(細かく言うと親ディレクトリと今いるディレクトリの情報はあります)

ここで紹介した&&は、左のコマンドが問題なく実行されたら右のコマンドを実行してくれる便利な演算子です。

次に複数ディレクトリを一気に作成してみます。

使い方
mkdir test1 test2 test3 && ls

image.png

全て作成されていることが確認できます。

mkdirのオプションについて

オプション 説明
-p 親ディレクトリが無い場合に、一緒に親ディレクトリも作成する。
-v 作成したディレクトリの情報を表示する
-m 作成するディレクトリのパーミッションを指定する

パーミッションについてはここまでの記事で出てきていないので一旦置いておいて、-p-vだけ見ていきましょう。まずはあまり使うことのない-vから使っていきます。

-vオプション

-vの使い方
mkdir -v ディレクトリ名

これを実行すると、『このディレクトリ作ったよ〜』と教えてくれます。ここで画面に表示される内容はLinuxやMacではそれぞれ違いそうですね。
Alpine Linuxで試した際のメッセージ👇
created directory: 'test'
Macで試した際のメッセージ
test

Macはメッセージというかディレクトリ名だけ投げられて、淡白だなぁという感想です。

-pオプション

-pの使い方
mkdir -p 親ディレクトリ名/子ディレクトリ
mkdir -p test/test1

この-pを使わないと、階層を跨いで一気にディレクトリを作ることはできません。(親ディレクトリが無い場合です)これはよく使うオプションだと思って大丈夫です。
私の環境ではこんな形で作られています。
image.png

treeコマンド

せっかくなのでtreeコマンドについても少しだけご紹介します。
これは階層を綺麗に表示してくれるコマンドです。ただ最初からPCに入っている訳ではないので、インストールは必要です。
それぞれディストリビューションに合わせてインストールしてください。一部載せておきます。

Debian/Ubuntu系の場合
sudo apt-get install tree
もしくは
sudo apt install tree
Red Hat/CentOS系の場合
sudo yum install tree
Macの場合
brew install tree

※Windowsにもtreeコマンドはありますが、微妙に挙動が違う別のコマンドです。こちらのtreeコマンドを使いたい場合はWSLをご利用ください。

treeコマンドの使い方
tree

だけで使えます。ただホームディレクトリなどでそのままtreeを使うとすごい量の出力がありますので、オプションを使って調整もできます。よく使うものだけご紹介します。

-L(指定した数字の分だけの階層を表示)

例えば

-Lの使い方
tree -L 2

上記の場合、今いるディレクトリから見て2階層分の一覧が表示されます。
他に使うとしたら、-aで隠しファイル・ディレクトリを出したり、-dでディレクトリだけ出したりといったところでしょうか。使いやすいコマンドですので、興味がありましたら深ぼってみてほしいです。

rmdirコマンド

このコマンドは空のディレクトリを消すコマンドです。正直いってほぼ使わないです。この後紹介するrmコマンドをよく使うので。

rmdirコマンドの使い方
rmdir ディレクトリ名

ただ、たくさんあるディレクトリの中から空のディレクトリを削除する際、rmコマンドでまとめて削除しようとするのは若干危険です。間違って大事なファイルが入ったディレクトリを指定した場合、rmdirの方がより安全と思ってください。

rmコマンド

rmdirのかわりによく使うのがrmコマンドです。
これはファイルを消すためのコマンドですが、オプションを使えばディレクトリもその中身のファイルごとまとめて削除が可能です。

rmコマンドの使い方
rm ファイル名

rmコマンドのオプションについて

オプション 説明
-r ディレクトリとその中身を再帰的に削除する。(よく使うオプション)
-f 確認せず強制的に削除します。
-i 各ファイルを削除する前に確認を求めます。
-v 削除するファイルやディレクトリの名前を表示します。

今回こんなディレクトリ構造の環境で試していきましょう。

今回の環境
.
├── test.py
├── test.txt
├── test1
└── test2
    └── test.go

3 directories, 3 files
同じ環境を作成する時はこちらを実行
mkdir test1 test2 && touch test.py test.txt test2/test.go 

-rオプション(ディレクトリとその中身を削除する)

このオプションはディレクトリを消し、その中身も消します。なので、ディレクトリの中にあるファイルやディレクトリもまとめて消えるので気をつけていきましょう。

-rの使い方
rm -r ディレクトリ名

今回の環境で使ってみましょう。

実践
rm -r test1 && ls

削除が確認できたと思います。

-iオプション(削除する際に確認を行う)

安全に消すために
rm -ri test2 && ls

より安全に削除したいときはこのオプションをつけましょう。いくつか質問が来るので、OKであればy(yes)、ダメな時はn(no)を打ち込んでください。
image.png

fオプション(確認を無視して強制的に削除)

-fオプションは基本的に危険です。もう一回言いますが危険です。
これは『本当に消していいですか?』というメッセージを完全に無視しちゃいます。
Linuxのファイルシステムの中には、システムの根幹になっている重要なシステムファイルなどがあるのですが、これは消そうとすると必ず確認メッセージが出ます。これを無視して重要なファイル類を消してしまう恐れがあるんですね。

使い方
rm -f ファイル名
rm -rf ディレクトリ名

ちなみに、世の中には叩いていないコマンドがあります。それが俗にいうバルスコマンドです。

この赤いアラートに挟まれたコマンドは絶対に使用しないでください。
責任は取れません。

バルスコマンド
sudo rm -rf /*

この赤いアラートに挟まれたコマンドは絶対に使用しないでください。
責任は取れません。

これを打ってしまうと、Linuxのファイルシステムは崩壊します。外部の記事などではこれが書かれている記事も多いですし、間違って打ってしまったらまずいので紹介はしておきます。

-rf:ディレクトリを指定しつつ、確認を取らない
/*:ルートディレクトリから下の階層全てを

ちなみにDockerコンテナ内で叩いてみた結果が以下です。lsコマンドすら打てなくなりました。
image.png

Dockerコンテナは切り離された環境であり、使用しても問題ない状況でしたので使いました。Dockerを使えるようになったら使用する分にはいいですが、初学者が手を出すものではありません。ご注意ください。

おわりに

今回はLinuxコマンドの基本④を解説しました。
私自身、まだまだLinuxの学習はし続けますが記事を書くたびに新しい発見があって良いですね。少しでも初学者の学習の足しになれば嬉しいです。シェルは美しい。

次の記事はこちら👇

まとめ記事はこちら👇

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?