IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

はじめてのLinux

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第4回 Linuxのファイルとディレクトリ基本 (1) ディレクトリ操作をしてみよう (濱田康貴) 2021年10月

みなさんこんにちは。株式会社パイプラインの濱田です。前回はLinux UNIXディレクトリ構造の決まりごと、FHS (Filesystem Hierarchy Standard) について取り上げました。今回はディレクトリの実践的な操作について取り上げます。

ディレクトリ操作の基本

前回のおさらいになりますが、コンソールやSSH経由でログインした直後のカレントディレクトリは、ホームディレクトリです。今回のコマンド操作はすべてホームディレクトリの中で行いますので、システム全体や他のユーザーへ影響を及ぼす心配をせずに作業していただいて構いません。
最初に、現在のカレントディレクトリがどこかを「pwd」コマンドで表示してみましょう。例示している「[nullpopopo@poposample-01 ~]$」などの表記はプロンプト(コマンド入力を待ち受けていることを示す文字列)ですので、コピペして実行する場合は、プロンプトごとコピーしないよう注意してください。

[nullpopopo@poposample-01 ~]$ pwd
/home/nullpopopo

nullpopopoユーザーのホームディレクトリは/home/nullpopopoですので、Linuxへログインした直後にpwdコマンドを実行すると上記のようにホームディレクトリのパスが表示されます。

fig01

ディレクトリの作成

ディレクトリ作成を行う前に「ls」コマンドでカレントディレクトリ内のファイルやディレクトリの一覧を表示してみましょう。

[nullpopopo@poposample-01 ~]$ ls

それではカレントディレクトリに「TEST (大文字)」ディレクトリを作成してみましょう。

[nullpopopo@poposample-01 ~]$ mkdir TEST

もう一度lsコマンドを実行して、TESTディレクトリが作成されたか確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls
TEST

TESTディレクトリが作成されたのがおわかりいただけたかと思います。それではもう一度TESTディレクトリを作成を試みます。

[nullpopopo@poposample-01 ~]$ mkdir TEST
mkdir: cannot create directory 'TEST': File exists

ご覧のように、既に同名のTESTディレクトリがあるためにエラーがおきました(同じ階層に同名のディレクトリを作成できなかった)。 ?

ディレクトリがなければ作成する

mkdirコマンドに「-p」オプションを与えて実行することで、作成対象のディレクトリが既にあれば何もせず、なければ作成するといった動作を行うことができます。まずはlsコマンドを実行してカレントディレクトリ内を見てみましょう。

[nullpopopo@poposample-01 ~]$ ls
TEST

次に、mkdirコマンドに「-p」オプションをつけて同名のディレクトリ作成を試してみましょう。

[nullpopopo@poposample-01 ~]$ mkdir -p TEST

先ほどのエラーが表示されなかったことがおわかりいただけたかと思います。

ディレクトリをコピーする

先ほど作成したTESTディレクトリを同じ階層のTEST2というディレクトリとしてコピーする場合は以下コマンドを実行します。 次に、mkdirコマンドに「-p」オプションをつけて同名のディレクトリ作成を試してみましょう。

[nullpopopo@poposample-01 ~]$ cp -r TEST TEST2

lsコマンドで確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls
TEST  TEST2

カレントディレクトリにTESTとTEST2それぞれのディレクトリが作成されたことがわかります。 ?

ディレクトリの移動

先ほど作成したTEST2ディレクトリをTESTディレクトリの中へ移動します。ファイルやディレクトリの移動にはmvコマンドを実行します。

[nullpopopo@poposample-01 ~]$ mv TEST2 TEST

lsコマンドを実行して確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls
TEST

TEST2ディレクトリがカレントディレクトリからいなくなりました。TEST2ディレクトリはTESTディレクトリの下に移動しましたので、TESTディレクトリの中にTEST2ディレクトリがあるはずです。lsコマンドを実行して確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls TEST
TEST2

カレントディレクトリをTESTディレクトリに移動してlsコマンドを実行することもできます。

[nullpopopo@poposample-01 ~]$ cd TEST

pwdコマンドでカレントディレクトリを確認してみましょう。

[nullpopopo@poposample-01 TEST]$ pwd
/home/nullpopopo/TEST

また、プロンプトの表示が「~ (ホームディレクトリの意) 」から「TEST」に変わりました。それでは、lsコマンドを実行し、TEST2ディレクトリがあることを確認します。

[nullpopopo@poposample-01 TEST]$ ls
TEST2

確認ができましたので、ホームディレクトリに戻ります。

[nullpopopo@poposample-01 TEST]$ cd

pwdコマンドでカレントディレクトリを確認してみましょう。

[nullpopopo@poposample-01 ~]$ pwd
/home/nullpopopo

cdコマンドの後にディレクトリ名を指定することでディレクトリの移動を行いますが、cdコマンドの後に何も指定しないと、ホームディレクトリへ戻ることができます。つまり、「cd」と「cd /home/nullpopopo」は同じことをしているのです。

ディレクトリのリネーム

ディレクトリをリネームするには、mvコマンドを使います。

[nullpopopo@poposample-01 ~]$ mv TEST test

lsコマンドで確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls
test

大文字のTESTディレクトリをtestディレクトリへ変更することができました。Linux UNIXでは大文字と小文字を区別するので、別のディレクトリとしてリネームできるのです。もし大文字小文字を厳密に区別して同じ名前にリネームしようとすると、以下のようなエラーが表示されます。

[nullpopopo@poposample-01 ~]$ mv test test
mv: cannot move 'test' to a subdirectory of itself, 'test/test'

自分自身を再帰的に移動しようとしたけれどもできません、というエラーとなります。lsコマンドで確認してみましょう。

[nullpopopo@poposample-01 ~]$ ls
test
[nullpopopo@poposample-01 ~]$ ls test
TEST2
ディレクトリの削除

ファイルやディレクトリの削除にはrmコマンドを使用します。まず以下のコマンドを実行してみましょう。

[nullpopopo@poposample-01 ~]$ rm test
rm: cannot remove 'test': Is a directory

testはディレクトリなので削除できません、とエラーが表示されてしまいました。rmコマンドでディレクトリを削除することはできないのでしょうか?そんなことはありません。rmコマンドに「-r (recursiveの意) 」をつけて実行してみましょう。

[nullpopopo@poposample-01 ~]$ rm -r test

lsコマンドで確認します。

[nullpopopo@poposample-01 ~]$ ls

testディレクトリが削除されました。先ほどcpコマンドでディレクトリをコピーしたときも-rオプションをつけましたが、どちらもrecursive、再帰的という意味です。 さて、今回はディレクトリの扱いについて基本的なことがらを取り上げましたが、次回はファイル操作の基本について取り上げてみたいと思います。そして、ディレクトリ操作について1つクイズを出題します。模範解答は次回解説します。 クイズ カレントディレクトリ以下に、以下の階層のディレクトリを作成せよ。同じ成果が得られるなら、入力した文字数が少なければ少ないほどよいものとする。

test
└test1
  └test2
    └test3
      └test4

CTC教育サービスではLinuxをはじめ多数の研修コースが用意されています。ご自身の興味や業務の必要性にあったコースを受講してみてはいかがでしょうか。
https://www.school.ctc-g.co.jp/category/

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes