Envaderを利用して、Linux コマンド pwd/rm/mkdirについて学んだ。

どうも。30代後半からIT業界へ、エンジニアへ転職する物語の主人公、コバキチです。

Linuxの基礎中の基礎。
必ず使うであろうコマンド

  • pwd

  • rm

  • mkdir

について学んだので、その振り返りです。

利用した環境

学習するに当たり利用した環境は、環境構築が不要で、オンラインでLinux環境が学べるオンライン学習サービス、Envaderを利用しました。

気になる方はリンクを貼っておきますので、参考までにどうぞ。

Envader

コース一覧

今回学んだシナリオ


コマンドその1 pwd(Print Working Directory)

基本と紹介されていますが、実際にどんな場面で使うのかがイマイチ理解できていないのが、pwdコマンド。
実際の業務になったら使う場面が多いのでしょうか?

pwdコマンドでできること

カレントディレクトリ(自分が現在いるディレクトリ)の位置を、絶対パスで表示してくれるコマンド。
Envaderで解説されていたのですが、Present Working Directoryとも言われるらしいですね。

調べてみると、Presentは英語で現在という意味もあるそうで。
人にあげるプレゼントしか考えた事がなかったです。

#使用例

envader@172-19-1-2:~$ pwd
/home/envader
  
#現在居るディレクトリは/home/envaderですよ。の意味

オプションもあるみたいで、-L(Logical)は現在作業中のカレントディレクトリを表示。デフォルトで設定されているらしいので、普通にpwdコマンドを叩いた時と変わりはなさそうです。

また、-P(Physical)もあり、現在の作業ディレクトリがシンボリックリンクであれば、リンク元のディレクトリが表示されるとのこと。

やはりあまり使いどころが良く分からない。。。。

コマンドその2 rm(remove)

このコマンドは良く利用するのではないでしょうか?
存在しているファイルを削除するコマンドですね。

場合によってはファイルだけではなく、ディレクトリを削除することも可能です。

rmコマンド使用例

# 使用例
rm ファイル名

これで指定したファイルを削除できます。

複数のファイルの削除

rm *

これはrmコマンドに*をつけて削除する場合です。
*はワイルドカードと呼ばれ、何らかの文字列、という意味を持っています。

上記の使い方だと、カレントディレクトリの全てのファイルを削除する。と言った意味になり、カレントディレクトリに複数のファイルが存在していた場合は、一気にそれらのファイルを削除する事になります。

なので、*を使用する時には気をつけて使わないと、削除したくないファイルまで削除してしまうので要注意ですね。

また、ワイルドカードを使った別の使い道だと、

rm hoge*.txt

とすることで、

hoge1.txt
hoge2.txt
hoge3.txt
hoge4.js

とあった場合に、hogeほにゃらら.txtを削除してね。と言った意味になり、上記の3つのファイルを削除する事になります。
なので、hoge4.jsファイルは拡張子が違うので削除対象からは外れます。

?を使う削除方法。

これも*を使うのと若干似ている気がしますが、少し意味合いが違うもので、
「なんらかの一文字」という意味のワイルドカードになります。
*は何らかの文字列だったのに対して、?は何らかの一文字、です。

ややこしいですが、例を用いるとこんな感じです。

hoge9.txt
hoge10.txt
hoge11.txt
hoge12.txt
hoge13.txt

とあった場合、

rm hoge1?.txt

とする事で、hoge10~13までのファイルが削除される事になり、hoge9.txtは残ります。
何らかの一文字。はこの意味です。

rmコマンドのオプション

以下オプション一覧です。

  • -i (interactive) 日本語訳:対話 削除する前に確認する。

  • -f (force) 日本語訳:力 強制的に削除を実行する。エラーメッセージを表示しない。削除したいファイルが存在していなかった場合、通常はエラーメッセージが表示されるが、-fをつける事によってメッセージが表示されなくなる。

  • -I(アイ)(Interactive) 大文字のアイです。削除に該当するファイルが4つ以上の場合のみ、削除の確認メッセージが表示される。

  • -r (recursive) 日本語訳:再起的 これをつける事で、ディレクトリを削除できるようになります。通常ディレクトリをオプションを付けないで削除しようとするとエラーメッセージが表示されます。

#ディレクトリ作成
envader@172-19-2-2:~$ mkdir func
envader@172-19-2-2:~$ ls
func  not_needed_dir

#ディレクトリを削除しようとする
envader@172-19-2-2:~$ rm func/

#エラーメッセージ
rm: cannot remove 'func/': Is a directory

ちなみに再起的の意味ですが、プログラミングを学習する際に必ず出てくるワードだと思います。私自身良くわかっていないのですが、すごく分かりやすい解説がありましたので引用させていただきます。

ディレクトリ内に存在するものに一つ一つに対して処理をする
とも表す事ができますね。

更に詳細に言い表すと

指定したディレクトリ内の一つ一つに対して処理をする
その際、その一つがディレクトリだったら、その
指定したディレクトリ内の一つ一つに対して処理をする
その際、その一つがディレクトリだったら、その
指定したディレクトリ内の一つ一つに対して処理をする
その際…

となって、際限なく表記しなくてはなりません(そうせざるを得ないです)。
それだとキリが無くなってしまうので、普通は「再帰的に行う」と表現します。

Engineer College様より引用 http://blog.livedoor.jp/engineercollege/archives/46559976.html

なるほど。
つまり、再起的とは対象とするものに対して一つ一つ処理を行なっていく、という事を意味しているんですね。
日本語って難しい。

  • -v (verbose) 日本語訳:詳細 削除の詳細を表示する。どのファイルやディレクトリが削除されたかを表示されるので、ログや削除の証拠として残すことができますね。

envader@172-19-2-2:~$ ls
func  n1  n2  n3  n4  not_needed_dir

#vオプションでファイルを削除する
envader@172-19-2-2:~$ rm -v n1

#詳細結果が表示されている
removed 'n1'
envader@172-19-2-2:~$ rm n? -v
removed 'n2'
removed 'n3'
removed 'n4'
envader@172-19-2-2:~$ ls
func  not_needed_dir


コマンドその3 mkdir(Make Directory)

rmコマンドの説明でもソースコードで少し出てきましたが、mkdirコマンドはファイルを作成するのではなく、ディレクトリを作成するコマンドです。

似たコマンドとしては、ファイルを作成するtouchコマンドがありますが、mkdirコマンドはファイルではなくディレクトリを作成するコマンドですね。 

ここでファイルとディレクトリの違いにまた疑問を持ってしまう方もいるかと思います。
実際私もLinuxについて学習を始めた最初の頃は、ファイルとディレクトリの違いについてものすごく疑問を持っていました。

私なりの解釈で説明すると、

ファイル
実際に使用するソースコードやその他の使用できる内容が記述されたもの

ディレクトリ
ファイルを格納したり、ディレクトリの中にさらにディレクトリを作成したりできる箱のようなもの。入れ物。

このような感じで理解しています。
つまり、mkdirコマンドでは、この箱のような入れ物を作成できるコマンドになります。

mkdir使用例

envader@172-19-2-2:~$ ls
direc  func  not_needed_dir

#oneというディレクトリを作成する
envader@172-19-2-2:~$ mkdir one

#oneが作成されている
envader@172-19-2-2:~$ ls
direc  func  not_needed_dir  one

このような感じで、最初にlsコマンドでディレクトリを表示した時にはoneはありませんでしたが、mkdirコマンドで作成したいoneを記述する事で、oneディレクトリが作成されています。
実際にはoneディレクトリを作成しただけなので、今の段階ではディレクトリの中身は空っぽです。

mkdirコマンドのオプション

以下オプション一覧です。

  • -m (mode) 日本語訳:ふるまい パーミッションを指定してディレクトリを作成する。こんな事ができたんですね。
    Linuxシステムにおいて、パーミッションは避けて通れない概念、システムだと思います。パーミッション とは、そのファイルやディレクトリに対しての何らかのアクセスができる権限の事です。
    これが無い場合には、指定したディレクトリやファイルに対してアクセスや書き込みができません。

  • -p (parents) 日本語訳:親、両親 エラーを表示せずに、記述したディレクトリが存在していなければ作成する。
    また、階層的にディレクトリを作成する。
    ちょっと考え方がややこしいので、ソースコードを見ながら理解を深めましょう。

エラーを表示しない例

#通常のmkdir
envader@172-19-2-2:~$ ls
not_needed_dir
envader@172-19-2-2:~$ mkdir one

#oneが作成された
envader@172-19-2-2:~$ ls
not_needed_dir  one
#同じoneを作成しようとするとエラーが発生
envader@172-19-2-2:~$ ls
not_needed_dir  one
envader@172-19-2-2:~$ mkdir one
mkdir: cannot create directory ‘one’: File exists
#-pオプションをつけるとエラーが表示されない
envader@172-19-2-2:~$ ls
not_needed_dir  one
envader@172-19-2-2:~$ mkdir -p one

#エラーが表示されないが、作成もされていない
envader@172-19-2-2:~$ ls
not_needed_dir  one

階層的にディレクトリを作成する例

envader@172-19-1-2:~$ ls
not_needed_dir

#オプションを付けないで階層的に作成しようとするとエラーが発生
envader@172-19-1-2:~$ mkdir one/two
mkdir: cannot create directory ‘one/two’: No such file or directory

#オプションをつける事で、階層的にディレクトリを作成する事ができる
envader@172-19-1-2:~$ mkdir -p one/two
envader@172-19-1-2:~$ ls
not_needed_dir  one

#oneディレクトリの下にtwoディレクトリが作成されている
envader@172-19-1-2:~$ cd one
envader@172-19-1-2:~/one$ ls
two
  • -v (verbose) 日本語訳:詳細 ディレクトリを作成したら、メッセージを表示させて作成する。心配な方はこのオプションを使うのでしょうか?
    私にはまだ作成する意味が良く理解できていませんが、いつか使う日がくるのでしょう。

envader@172-19-1-2:~$ mkdir -v red

#作成しましたよ!のメッセージが表示された
mkdir: created directory 'red'
envader@172-19-1-2:~$ ls
not_needed_dir  one  red


まとめ

  • pwdコマンドでカレントディレクトリの絶対パスを表示できる。

  • rmコマンドでファイルやディレクトリを削除できる。

  • mkdirコマンドでディレクトリを作成できる。

  • オプションを指定する事で、詳細なふるまいを設定する事ができる。

長くなりましたが、最後まで読んでいただきありがとうございました。


参考にさせていただいた記事一覧

ファイル・ディレクトリを削除するrmコマンドについて詳しく!【Linuxコマンド集】

再帰的ってどんな意味?

ディレクトリ 【directory】

ディレクトリを作成する!mkdirコマンドの詳しいまとめ【Linuxコマンド集】


この記事が気に入ったらサポートをしてみませんか?