はじめに
ITスクールRareTECHでCS(Customer Support)を担当している池村です!
今回はディレクトリを作成したり、消したりするコマンドを解説します。こちらの記事は『改めてLinuxコマンドを理解する③[cat,touch,echo編]』の続きとなっています。もしよかったら順番に見ていただけると嬉しいです。
※こちらの記事は完全に初心者向けに執筆しています。
mkdir
コマンド
まずはmkdir
コマンドからご紹介します。これはシンプルにディレクトリを作成するコマンドですね。早速使い方を見ていきましょう。
mkdir ディレクトリ名
ディレクトリ名は大体なんでも大丈夫です。
実際の実行結果が以下になります。
実際に中に入ってみましょう。ディレクトリの中身も確認。
cd test && ls
現状は何も表示されないと思います。(細かく言うと親ディレクトリと今いるディレクトリの情報はあります)
ここで紹介した&&
は、左のコマンドが問題なく実行されたら右のコマンドを実行してくれる便利な演算子です。
次に複数ディレクトリを一気に作成してみます。
mkdir test1 test2 test3 && ls
全て作成されていることが確認できます。
mkdirのオプションについて
オプション | 説明 |
---|---|
-p |
親ディレクトリが無い場合に、一緒に親ディレクトリも作成する。 |
-v |
作成したディレクトリの情報を表示する |
-m |
作成するディレクトリのパーミッションを指定する |
パーミッションについてはここまでの記事で出てきていないので一旦置いておいて、-p
と-v
だけ見ていきましょう。まずはあまり使うことのない-v
から使っていきます。
-v
オプション
mkdir -v ディレクトリ名
これを実行すると、『このディレクトリ作ったよ〜』と教えてくれます。ここで画面に表示される内容はLinuxやMacではそれぞれ違いそうですね。
Alpine Linuxで試した際のメッセージ👇
created directory: 'test'
Macで試した際のメッセージ
test
Macはメッセージというかディレクトリ名だけ投げられて、淡白だなぁという感想です。
-p
オプション
mkdir -p 親ディレクトリ名/子ディレクトリ
mkdir -p test/test1
この-p
を使わないと、階層を跨いで一気にディレクトリを作ることはできません。(親ディレクトリが無い場合です)これはよく使うオプションだと思って大丈夫です。
私の環境ではこんな形で作られています。
tree
コマンド
せっかくなのでtree
コマンドについても少しだけご紹介します。
これは階層を綺麗に表示してくれるコマンドです。ただ最初からPCに入っている訳ではないので、インストールは必要です。
それぞれディストリビューションに合わせてインストールしてください。一部載せておきます。
sudo apt-get install tree
もしくは
sudo apt install tree
sudo yum install tree
brew install tree
※Windowsにもtree
コマンドはありますが、微妙に挙動が違う別のコマンドです。こちらのtree
コマンドを使いたい場合はWSLをご利用ください。
tree
だけで使えます。ただホームディレクトリなどでそのままtree
を使うとすごい量の出力がありますので、オプションを使って調整もできます。よく使うものだけご紹介します。
-L
(指定した数字の分だけの階層を表示)
例えば
tree -L 2
上記の場合、今いるディレクトリから見て2階層分の一覧が表示されます。
他に使うとしたら、-a
で隠しファイル・ディレクトリを出したり、-d
でディレクトリだけ出したりといったところでしょうか。使いやすいコマンドですので、興味がありましたら深ぼってみてほしいです。
rmdir
コマンド
このコマンドは空のディレクトリを消すコマンドです。正直いってほぼ使わないです。この後紹介するrm
コマンドをよく使うので。
rmdir ディレクトリ名
ただ、たくさんあるディレクトリの中から空のディレクトリを削除する際、rm
コマンドでまとめて削除しようとするのは若干危険です。間違って大事なファイルが入ったディレクトリを指定した場合、rmdir
の方がより安全と思ってください。
rm
コマンド
rmdir
のかわりによく使うのが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
オプション(ディレクトリとその中身を削除する)
このオプションはディレクトリを消し、その中身も消します。なので、ディレクトリの中にあるファイルやディレクトリもまとめて消えるので気をつけていきましょう。
rm -r ディレクトリ名
今回の環境で使ってみましょう。
rm -r test1 && ls
削除が確認できたと思います。
-i
オプション(削除する際に確認を行う)
rm -ri test2 && ls
より安全に削除したいときはこのオプションをつけましょう。いくつか質問が来るので、OKであればy(yes)、ダメな時はn(no)を打ち込んでください。
f
オプション(確認を無視して強制的に削除)
-f
オプションは基本的に危険です。もう一回言いますが危険です。
これは『本当に消していいですか?』というメッセージを完全に無視しちゃいます。
Linuxのファイルシステムの中には、システムの根幹になっている重要なシステムファイルなどがあるのですが、これは消そうとすると必ず確認メッセージが出ます。これを無視して重要なファイル類を消してしまう恐れがあるんですね。
rm -f ファイル名
rm -rf ディレクトリ名
ちなみに、世の中には叩いていないコマンドがあります。それが俗にいうバルスコマンドです。
この赤いアラートに挟まれたコマンドは絶対に使用しないでください。
責任は取れません。
sudo rm -rf /*
この赤いアラートに挟まれたコマンドは絶対に使用しないでください。
責任は取れません。
これを打ってしまうと、Linuxのファイルシステムは崩壊します。外部の記事などではこれが書かれている記事も多いですし、間違って打ってしまったらまずいので紹介はしておきます。
-rf
:ディレクトリを指定しつつ、確認を取らない
/*
:ルートディレクトリから下の階層全てを
ちなみにDockerコンテナ内で叩いてみた結果が以下です。ls
コマンドすら打てなくなりました。
Dockerコンテナは切り離された環境であり、使用しても問題ない状況でしたので使いました。Dockerを使えるようになったら使用する分にはいいですが、初学者が手を出すものではありません。ご注意ください。
おわりに
今回はLinuxコマンドの基本④を解説しました。
私自身、まだまだLinuxの学習はし続けますが記事を書くたびに新しい発見があって良いですね。少しでも初学者の学習の足しになれば嬉しいです。シェルは美しい。
次の記事はこちら👇
まとめ記事はこちら👇