MAGAZINE

キャリテク!マガジン

コラム

CentOS 7でディレクトリを作ってみよう!

こんにちは、吉政創成 アシスタントの菱沼です。
前回はCent OSの特長を学んだあと、実際に環境を構築してユーザーの作成まで行いました。
今回はディレクトリの概要と作り方を学んでいきたいと考えています。

では、今回も「さわって学ぶLinux入門テキスト/赤星リナ氏著(マイナビ出版)」を片手に勉強していきます。どうぞ超初心者の方、お付き合いいただければ幸いです。

ディレクトリとは何か?

さて、ディレクトリという言葉自体はパソコンを触ったことがある方なら一度は耳目に触れたことがあるのではないでしょうか。テキストではディレクトリについて次のように説明されています。

P.48
ディレクトリとは、WindowsやmacOSの「フォルダ」と同じようなものです。データやプログラムなどは「ファイル」に入れて保存します。このファイルは必ずどこかのディレクトリに入れて整理します。

例えば、デスクトップに「月次決算」というフォルダを作り、さらにその中に各月のフォルダを作成します。その中の9月のフォルダに、計算書.xlsxや、領収書.pdfというファイルを保管したとします。

Windowsにはアドレスバーや検索窓がありますが、その窓に次のように書くと、それぞれのファイルに直接アクセス(表示)することができますし、フォルダ止まりにすればそのフォルダが開かれますよね。

C:\Users\(ユーザー名)\デスクトップ\月次決算\9月\計算書.xlsx
C:\Users\(ユーザー名)\デスクトップ\月次決算\9月

ここで言う各フォルダがディレクトリ、Excelやpdfがファイルということになりますが、この構造はLinuxでも同様だということのようです。
さらにディレクトリの構造をそれぞれ指し示す用語もあるようです。文字だと長いので、図にしました。

カレントディレクトリは、「今いる場所」ということになりますので、2番目の階層に行けばそこがカレントディレクトリになり、ルートディレクトリは親ディレクトリと言われることもある、となります。

サーバのディレクトリを確認する方法は「ls」を使う

さて、前回のコラムで私が作成したtest202007というサーバが、現状どういうディレクトリ構造になっているかを確認してみます。前回、ユーザーは一人しか作成しておらず、少し寂しかったので、新たに2ユーザーを追加した後のディレクトリ構造を確認します。
ディレクトリの確認に必要なコマンドは[ ls ]を使うそうです。

P.55
ディレクトリ内のファイルを一覧表示するには[ls]コマンドを使います。オプションや引数を指定しなければ、カレントディレクトリのサブディレクトリやファイルを表示します。 ディレクトリだけでなく、ファイルの作成、名前変更、コピーなどの操作を行ったらこのコマンドで確認しましょう。

では、実際に使ってみます。

画像で見て頂けるとわかる通り「ls」を2回行っていますが、lsに続けた言葉と、出てきた結果が異なりますが、それぞれ次のような意味となります。

①ls /    :ルートディレクトリの中身(homeディレクトリと同じ階層)
②ls /home :homeディレクトリの中身

homeディレクトリの中には4つ箱ができています。さらにその下のディレクトリの中身を確認したいときは、ls /home/test2020のようにしてあげれば見ることができます。

homeディレクトリと同じ階層には設定関連のディレクトリがある

一つ目のlsで出た結果には、home以外にいくつかのディレクトリがあることがわかります。これらは最初からできている箱です。

homeディレクトリはユーザーが追加されるごとにユーザー名のディレクトリができ、各ユーザーは自身のディレクトリ配下で作業を行うようです。
Windows PCでも初期設定としてPCを使うために必要なプログラムがインストールされていて、それぞれを格納するためのフォルダができていますので、それと同じですね。また、複数のアカウントを追加して、システムの管理は管理者のみができるようにすることも可能なので、それと同じようなものかと思えばイメージがつけやすいと思います。

ところで、ディレクトリについてインフラエンジニアに質問したところ、「homeディレクトリとは何か?homeと同じ階層のディレクトリの役割とは何か?については学んでおいたほうが良い」という言葉がありました。

そこで調べてみたところ、それぞれの項目を説明するページがありましたので、後程ご紹介します。

Linuxはファイルシステムの改装標準が決まっている

調べる中で分かったことですが、Linuxはファイルシステムの階層標準が決まっているのだそうです。ディストリビューションによって、有るもの、無いもの、オプションになっているものとあるようですが、標準規格FHSで必須とされた項目は共通していると言います。

また、中にはユーザーが操作する必要がないものもあるようですが、運用段階になったら必要そうなものがたくさんあるので、どういう役割のものがあるかは一通り見ておいた方がいいかもしれません。

さて、この標準規格FHSとは何なのか?LPI-JPANのページに以下の説明がありました。

「FHS」は、Linux(などのUNIX系OS)の標準的なディレクトリ構成を定めた標準仕様です。たとえば「/etcディレクトリには設定ファイルを置きましょう」など、ディレクトリの名前や構成、ファイルの名前などについての「標準」です。
(中略)
現在のFHS(FHS 2.3)で規定された、ルートディレクトリ直下のディレクトリで必須とされているものは、「/bin」「/boot」「/dev」「/etc」「/lib」「/media」「/mnt」「/opt」「/sbin」「/srv」「/tmp」「/usr」「/var」の13個です(「/home」「/root」についてはオプションとして規定)。もちろん、FHSに策定されているものはこれだけではなく、さらに下層のディレクトリ(「/usr/share」など)についても言及されています。

FHS(Filesystem Hierarchy Standard)|LPI-JAPAN
標準とされているディレクトリの一覧

ということで、こちらに標準として上がっている13個だけをここでまとめてみます。

名称読み用途
/binビン基本コマンドの保管場所(cat, cp, ls など) 新しいコマンドの追加や変更は推奨されない
/bootブートシステムを起動させるために必要なファイルが保管
/devデブcpu、diskなどの基本デバイスが配置 (UNIXでは装置・ハードウェアをファイルとして扱っている)
/etcエトセカーネルや各ソフト等、システム全体に関わる設定ファイルが配置
/libリブ/binや/sbinのコマンドの実行に必要なファイルが配置
/mediaメディアリムーバブル媒体(CD-ROM, DVD-ROM など)のマウントポイント(CDなどを利用できるように登録する場所)として存在
/mntマウントファイルシステム(fstab など)の一時的なマウントポイント
/optオプトrpmなどパッケージ管理システムのインストール先。通常デフォルトインストールの一部ではないソフトウェアやアドオンパッケージ用に確保
/sbinエスビン再起動やファイルシステムの操作などシステム管理者用のコマンドが配置。/bin同様、新しいコマンドの追加や変更は推奨されない。
/srvエスアールブイFTP、WWWなどで利用するユーザー用のスペース。FTP専用、WWW専用のユーザー用ディレクトリ。
/tmpテンプテンポラリデータ(一時ファイル)を保管、再起動時削除される。
/usrユーザー全ユーザーが共通して使用するプログラムやライブラリ群が保管。
/varバーログやキャッシュなどの動的ファイル(可変データ/内容が常に変化するもの)が保管。/tmpと違い、再起動しても消去されない。

中にはユーザーが操作する必要がないものもあるようですが、運用段階になったら必要そうなものがたくさんあるので、どういう役割のものがあるかは一通り見ておいた方がいいかもしれません。
また、上記より詳しい説明が欲しい方や、オプション扱いのものを知りたい方は以下のURLをご参照ください。

Linuxの基本の基本。Linuxの基本的なディレクトリ構成 | OXY NOTES
UNIX系OSのディレクトリ構造表(CentOS 7.3) | Qiita @uhooi
2.2. ファイルシステム階層標準 (FHS) の概要 | RedHat CustomerPortal

ディレクトリを作ってみる

今度は各ユーザーのディレクトリの中にさらにディレクトリを作ってみます。ユーザーを作った後、何もしていないため、各ユーザーの箱の中身はからっぽです。そのため、まずはtest2020というアカウントの中にディレクトリを作ってみたいと思います。

test2020というアカウントにログイン後、

①[ pwd ]を使ってカレントディレクトリ/今いるディレクトリを確認
 →test2020というディレクトリにいることがわかりました。

②[ ls ]を使ってディレクトリの中身を確認
 →test2020の中には何もないことが確認できました。

③[ mkdir ](Make Directory)を使ってディレクトリを三つ作ります。
 →作成できたかを[ ls ]を使って確認してみると、三つできていることが確認できました。

次に、ディレクトリを二つ(2階層)同時に作ることができるとテキストにありましたので、新しく作ったtest1というディレクトリの中に作ってみることにします。

P55
ディレクトリはmkdir(Make Directory)で作成します。[ -p ]オプションを付けると親ディレクトリも同時に作成できます。
>> mkdir doc        :docディレクトリを作成
>> mkdir -p aaa/bbb    :aaaとそのサブディレクトリbbbを同時に作成

ではこれを使って、test1の中にsab1を、sab1の中にsab2を同時に作ってみます。ディレクトリの移動には[ cd ]を使うそうです。

P.53
カレントディレクトリの移動[ cd ](Change Directory)
ディレクトリを移動します。絶対パスでも相対パスでも指定することができます。(中略)

>> cd /tmp (絶対パスで):/tmpディレクトリへ移動
>> cd doc       :サブディレクトリのdocへ移動
>> cd ../../lpicl     :docから上へ2つディレクトリを移動してlpiclへ
>> cd         :ホームディレクトリに移動

絶対パスと相対パスについては後程まとめることにして、先に作業をしてみます。

cdを使ってみると、入っているアカウント名(サーバ名test202007にあるtest2020というアカウントであることを指しています)の後に、test1という文字が追加されました。移動の成功はここで分かるようになっているようです。

その後、mkdir -pを使って、test1 > sab1 > sab2という構造のディレクトリを作ってみました。 test1にいるときにlsでsab1ができていることを確認した後、sab1に移動し、lsを使ってみるとsab2ができていることが確認できました。

絶対パスと相対パスってなんだっけ

テキストではこう説明されています。

P.50
ファイルやディレクトリの場所は正確に指定しなければなりません。ファイルやディレクトリを指定するために使うのが「パス(path:経路)」です。パスの指定方法には2つの方法があります。

●「絶対パス(フルパスともいいます)」
必ず「/」(ルートディレクトリ)から順に指定します。

●「相対パス」
現在いるディレクトリ(カレントディレクトリ)から指定します。
パスではディレクトリやファイルとの区切りに「/」を使います。その他、次のような記号を使います。

「.」(ドット1文字) …現在のディレクトリ(カレントディレクトリ)(省略可)
「..」(ドット2文字) …1つ上のディレクトリ(親ディレクトリ)
「~」(チルダ) … ホームディレクトリ

カレントディレクトリ(linuc55)を絶対パスで書くと、/(ルートディレクトリ)から順に指定していくので次のようになります。
>> /home/linuc55

workディレクトリを絶対パスで書くと/で始まり、上から順に指定していきます。
>> /home/linuc55/doc/work

ではworkディレクトリからlinuc55ディレクトリを指定するにはどうすればいいでしょう。
相対パスで指定します。
>>../..

ということで、自身の環境でやってみました。
いま、私の環境の中、test2020のディレクトリの中身は次のようになっています。

test2020 > test1 > sab1 > sab2
    >test2
    >test3

sab2のディレクトリから、test1へ移動後、test1からtest2020に移動します。その後、再度sab2に入ってみることにしました。

最後のsab2に移動するときだけが絶対パスの書き方で、その前の2つが相対パスでの書き方になります。 /から始まるのは「ルートディレクトリ」からとなるので、test2020のディレクトリでは使えないそうです。やってみたらこうなりました。

「指定のファイルかディレクトリはないから移動できませんよ!」と怒られました。

では、今回はきりがいいのでこちらで終了します。
次回、ディレクトリの削除、移動、名前の変更あたりの作業を行いたいと思います。

お付き合いいただき、ありがとうございました。

過去の連載記事

  1. CentOSサーバの構築とユーザーの作り方
  2. Linuxサーバの特徴とディストリビューション
facebook シェアシェア
LINE シェアシェア