CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
みなさんこんにちは。株式会社パイプラインの濱田です。前回はLinux UNIXディレクトリ構造の決まりごと、FHS (Filesystem Hierarchy Standard) について取り上げました。今回はディレクトリの実践的な操作について取り上げます。
前回のおさらいになりますが、コンソールやSSH経由でログインした直後のカレントディレクトリは、ホームディレクトリです。今回のコマンド操作はすべてホームディレクトリの中で行いますので、システム全体や他のユーザーへ影響を及ぼす心配をせずに作業していただいて構いません。
最初に、現在のカレントディレクトリがどこかを「pwd」コマンドで表示してみましょう。例示している「[nullpopopo@poposample-01 ~]$」などの表記はプロンプト(コマンド入力を待ち受けていることを示す文字列)ですので、コピペして実行する場合は、プロンプトごとコピーしないよう注意してください。
[nullpopopo@poposample-01 ~]$ pwd
/home/nullpopopo
nullpopopoユーザーのホームディレクトリは/home/nullpopopoですので、Linuxへログインした直後にpwdコマンドを実行すると上記のようにホームディレクトリのパスが表示されます。
ディレクトリ作成を行う前に「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