Linuxの基本2
ここでは、Linuxの基本となるファイル・ファイル操作・圧縮についての解説をします。
Linuxについての基本情報を知りましょう!!
ファイルの種類
LinuxではWindowsと同様にデータをファイルという形で管理しています。ファイルの種類は通常ファイル、ディレクトリ(windowsではフォルダと呼ぶ)、リンク、特殊ファイルに分けられます。通常ファイルは一般的なデータを指し、例えばテキストファイルや実行ファイルなどが該当します。ディレクトリはWindowsでいうフォルダに該当するファイルの保管場所を指し、様々なファイルをまとめて管理できます。リンクは特定ファイルの実態を紐づけたファイルです。特殊ファイルはデバイス管理など特殊な用途で使われます。 ファイルの種類により、コマンドの引数として使用できる、できないがあります。どのファイルがどの種類かを把握するのも重要です。種類を把握するには主にlsコマンドを使用します。
ディレクトリ階層
Linuxのディレクトリ階層はルートディレクトリ(/)を最上位として、その配下にすべてのディレクトリやファイルがぶら下がる形で存在しています。このような構造のことをディレクトリツリーと表現します。 ひとつ上のディレクトリを親ディレクトリといいます。図でいうと、homeディレクトリの親ディレクトリはルートディレクトリになります。また、ディレクトリの中にあるディレクトリをサブディレクトリといいます。Linuxを含む多くのUnix系OSにおいて、ルートディレクトリ直下のサブディレクトリ(boot,etcなど)はFHS(FilesystemHierarchyStandard)という規定に沿って、インストール時からあらかじめ用意されています。
lsコマンド
Linuxでファイル一覧を表示するにはlsコマンドを使用します。オプションや引数を付けずに実行すると、現在自身がいるディレクトリ上のファイル名が表示されます。 ファイル名だけではなくほかの詳細情報も一緒に表示させるには、オプションに-lを指定します。ファイルの種類や更新日時などの情報が併せて表示されます。一番左の文字が「-」の場合は通常ファイル、「d」の場合はディレクトリ、「l」の場合はリンクです。 ファイルが存在しない場合はコマンドを実行しても何も表示されません。
pwdコマンド
ユーザが作業しているディレクトリのことをカレントディレクトリと呼びます。カレントディレクトリはファイルやディレクトリに関係するコマンドにおいて、実行結果に関わるため特に重要です。例えばlsコマンドでは、引数を指定せずに実行するとカレントディレクトリのファイルが一覧表示されます。カレントディレクトリが、/etcか、/home/userかなどにより表示される結果が異なることがわかります。 pwdコマンドを使うことで実行したユーザのカレントディレクトリを確認することができます。コマンド名の由来はPrintWorkingDirectoryです。CUIの操作ではカレントディレクトリを意識しにくいため、頻繁に実行するコマンドとなります。
cdコマンド
pwdコマンドではカレントディレクトリを確認できますが、カレントディレクトリを変更するにはcdコマンドを使います。コマンド名の由来はChangeDirectoryです。 カレントディレクトリを変更すると、コマンドの引数で指定するファイルパスが短くなるなど、作業を効率化することができます(理由は77の「相対パス」参照)。 cdコマンド実行後は、戻り値が出力されませんので、pwdコマンドなどを使って意図する通りディレクトリを変更できているか確認するようにしましょう。
絶対パス
ファイルパスを指定する方法として、絶対パスと相対パスがあります。 絶対パスはフルパスとも呼ばれ、ルートディレクトリ(/)を起点として指定したいファイルやディレクトリの場所を記載します。 上図③のpasswdファイルを指定したい場合は、ルートディレクトリ(/)→etcディレクトリ(etc/)→passwdファイルを順に記載するため、「/etc/passwd」という表記になります。 なお、絶対パスを記載する場合、カレントディレクトリは関係ありません。カレントディレクトリがどこであっても、ファイルを指定するときの書き方に変更がないのが特徴です。しかし、階層が深くなる場合に入力する文字数が増えてしまいます。
相対パス
相対パスはカレントディレクトリを起点として指定したいファイルやディレクトリの場所を記載します。カレントディレクトリは「.」で表されます。 上記の例でpasswdファイルを表すと/home/user(./)を起点に、1つ上のディレクトリを意味する記号「..」を使い、home(../)→ルートディレクトリ(../)→etcディレクトリ(etc/)→passwdファイルと順に並べて「./../../etc/passwd」となります。 相対パスはカレントディレクトリにより表記が変わるため、/etcがカレントディレクトリの場合は「./passwd」や./を省略した「passwd」といった短い形で指定できるのが特徴です。
作成コマンド(touch/mkdir)
CUIの操作では、ファイルやディレクトリを作成する場合もコマンドを用います。 touchコマンドでファイルを作成することができます。本来は引数に指定したファイルのタイムスタンプ(更新日時)を変更するためのコマンドですが、引数で指定したファイルが存在しない場合は空のファイルが新規で作成されます。 mkdirコマンドでディレクトリを作成することができます。 touchコマンドもmkdirコマンドも、引数に指定するファイルやディレクトリは絶対パスと相対パスのどちらでも実行可能です。
コピーコマンド(cp)
cpコマンドでファイルやディレクトリのコピーができます。引数は先にコピー元、後にコピー先のファイルやディレクトリを指定します。既存のディレクトリをコピー先に指定すると、コピー元のファイルやディレクトリが同名でコピーされ、それ以外は指定された名前でコピーされます。ディレクトリをコピーする場合は、cpコマンドにオプション-rを付けます。-rは再帰的にコピーを行うオプションです。これは、コピー元のディレクトリ内にファイルやサブディレクトリがあれば一緒にコピーされるといったディレクトリの中身をまとめて処理(移動や削除等)することを、「再帰的に処理する」と表現することに由来しています。
移動コマンド(mv)
mvコマンドでファイルやディレクトリを移動できます。引数は先に移動元、後に移動先のファイル名やディレクトリ名を指定します。移動先にディレクトリを指定すると、指定ディレクトリ内に移動元のファイルやディレクトリが格納されます。移動先に存在していないファイルやディレクトリを指定すると、ファイルやディレクトリの名前を変更することもできます。ディレクトリを移動したり名前変更する場合、コピーコマンドのようにオプションは不要です。
削除コマンド(rm/rmdir)
rmコマンドでファイルやディレクトリを削除できます。対象がディレクトリの場合はコピーコマンドと同様オプション-rを付与することで、ディレクトリとその中身を再帰的に削除します。 rmdirコマンドでもディレクトリを削除することができます。引数に指定できるのは空ディレクトリのみなので、削除したいディレクトリにファイルやサブディレクトリが格納されている場合は先に削除してください。 rmコマンドやrmdirコマンドで削除されたデータは原則として復元が不可能なので実行時は注意が必要です。
圧縮とアーカイブ化
ファイルは圧縮することでファイルサイズを小さくすることができます。Linuxではいくつかの圧縮形式をサポートしており、代表的なものにbzip2があります。bzip2を使ってファイルを圧縮すると拡張子.bz2が付与されます。そのほかの圧縮方式については「83 圧縮・解凍コマンド」で紹介します。 ディレクトリはそのままでは圧縮できません。事前に複数のファイルをまとめたファイルである「アーカイブ」に変換する必要があります。Linuxのアーカイブファイルは、tarコマンドを用いて作成されることが多く、拡張子.tarが付与されます。tarコマンドは「84 アーカイブコマンド」で紹介します。
圧縮・解凍コマンド(gzip/bzip2/xz)
Linuxでよく使われる圧縮形式としてgzip/bzip2/xzの3つが挙げられます。使用する圧縮形式によって圧縮ファイルの末尾につく拡張子は異なりますが、圧縮に使用されるコマンド名は圧縮形式の名前と同じです。これらは圧縮スピードや圧縮率などに違いがあり、運用しているLinuxの対応の有無や利用シーンによって使われる形式が異なります。 圧縮ファイルを解凍するにはオプション-dまたは専用のコマンド(gunzip/bunzip2/unxz)を使用します。圧縮ファイルの拡張子に対応した解凍コマンドを使わなければ解凍できない点に注意が必要です。
アーカイブコマンド(tar)
tarコマンドはアーカイブファイルを作成または展開します。作成したい場合はオプションc、展開したい場合はオプションxを付けてオプションfの引数にアーカイブファイルの名前を指定します。 アーカイブの作成や展開だけではなく、圧縮や解凍も同時に行うことができます。例えばbzip2形式であればオプションjを指定して、アーカイブの作成・展開を併せて行います。 tarコマンドはオプションを付与する際の「-」が不要です。付けても動作はしますが慣例的に付けないことが多いです。(例:tarxjvfsample.tar.gz)
まとめ
- ファイルの一覧を表示できるコマンドは「ls」コマンド
- カレントディレクトリを表示できるコマンドは「pwd」コマンド
- カレントディレクトリを変更できるコマンドは「cd」コマンド
- ディレクトリ階層の頂点のディレクトリは「/ (ルート)ディレクトリ」
- カレントディレクトリを起点とするパスの表し方を相対パスと呼ぶ
- ファイル作成ができるコマンドは「touch」コマンド
- ディレクトリが作成できるコマンドは「mkdir」コマンド
- ファイルの名前を変えるコマンドは「mv」コマンド
- ファイルを圧縮する3つのコマンドは「gzip、bzip2、xz10」コマンド
- ファイルをアーカイブするコマンドは「tar」コマンド