ファイル・ディレクトリ管理(2章)

ファイルシステム

ディレクトリとファイルを学習する理由

コンピュータで利用するファイルには、さまざまな種類があります。
アプリケーションで作成したデータや、文字や写真、動画のデータ、プログラム、アプリケーションやOSの設定などが、
すべてファイルとしてハードディスクなどの記録媒体に保存されています。
これらのファイルを目的や種類別に分類し、整理するための入れ物がディレクトリ(Windowsではフォルダといいま
す)です。

ユーザとしてコンピュータを利用している場合は、自分が必要とする文書や画像などのデータファイルをどのように分
類して保存するかを中心に考えていました。
一方、アプリケーション開発者やサーバ管理者は、アプリケーションをコンピュータ上で動作させる際のアプリケーショ
ンプログラムや設定ファイルをどのように分類してどこに保存するか?社員が業務で使用するデータファイルをどのよう
に管理するか?など、様々なサービスを提供するためのファイル群を効率よく管理しやすい状態に保つ必要があり
ます。

このように、サーバ管理やプログラミングなどを行っていると、たくさんのファイルやディレクトリを扱うため、これらの概念
や操作方法を正しく理解することが必要になります。

たとえば、サーバアプリケーションを皆さんが開発する場合を考えてみましょう。皆さんのクライアントコンピュータで開
発したアプリケーションを、テスト環境や本番環境のサーバで動作させる場合、これらのファイルをサーバの適切な
ディレクトリにコピーする必要があります。また、アプリケーションを構成するファイルは複数であることが多いため、ディ
レクトリに分類しておく必要がありますが、このような場合はファイルシステムやファイル、ディレクトリの知識が必要で
す。さらにこれらのファイルには適切なアクセス権を付与しなければ、アプリケーションが正常に動作しない場合もあ
ります。このような場合は、ファイルシステムの提供する、ファイルやディレクトリのアクセス権の知識が必要になります。

 
 

ファイル操作におけるGUIとCUIの違い



ファイルやディレクトリの操作は、GUIの方が直感的に操作できます。
CUIでは、すべてを文字列で表す必要があるため、慣れるまで時間がかかるかもしれません。

しかし、GUIが利用できないサーバや、アプリケーションおよびLinuxの設定ファイルなどでは、CLIの書式に基づい
てファイルやディレクトリを指定する必要があります。Linuxで動作するアプリケーションの開発や、Linuxサーバの管
理を行う場合は必須の知識の一つです。

 
 

ファイルシステム



具体的なファイルやディレクトリの操作を学習する前に、ファイルシステムについて確認しましょう。
ファイルシステムとは、「ファイル」を保存し、「必要な時」に「必要なファイル」を「すぐに」「安全に」使えるようにする仕
組みで、OSによって提供されています。

ファイルシステムによって、以下の機能が提供されています。これらの機能については、次ページで説明しています。

① 効率の良いファイル管理
② パーミッションによるアクセス制御
③ 高速アクセス
④ 信頼性の向上

また、コンピュータでは、ハードディスクだけでなく、DVDやブルーレイディスク、USBメモリなど、様々なメディアにデー
タを保存したり、読み出したりすることができます。これらはすべて異なるファイルシステムによって管理されていますが、
OSが各ファイルシステムに依存する操作方法を吸収し、一般的なものに翻訳しています。

<参考>
• Linuxの抽象化レイヤ機能
 VFS(Virtual File System)
• Windowsの抽象化レイヤ機能
 IFS(Installable File System)


 
 



ファイルシステムの主な役割には、以下の4つがあります。

① 効率の良いファイル管理
各ファイルのディスク上の位置や作成日時、更新日時、所有者、パーミッション(アクセス権)などのさま
ざまなファイル固有の情報を管理効率よく管理します。

② パーミッションによるアクセス制御
パーミッション(アクセス権)に基づいて、ユーザのファイルやディレクトリへのアクセスを制限します。

③ ファイルアクセスの高速化
一度読み込んだファイルをメモリにキャッシュ(処理のために一時的にメモリに保存しておくこと)し、同じ
データにアクセスする場合はキャッシュを再利用することで高速にファイルにアクセスできます。
また、読み込まれたデータに近いデータも読み込み、事前にキャッシュしておく機能も提供します。
ファイルの書き込みについても、書き込み要求のあったデータをキャッシュし、実際の書き込み操作は空い
た時間に行います。

④ 信頼性の向上
ジャーナリングと呼ばれる、ファイル処理の内容をジャーナル領域に保持するしくみによって、データの管理
情報と実データが常に一致した状態になるようにします。たとえば、管理情報が更新される前にコンピュー
タが停止してもジャーナルから復旧できるようにすることで、実データと管理情報の間の食い違いを無くす、
または最小限にとどめることができます。

 
 

Linuxのファイル・システムでは1本のツリー構造で全ファイルを扱う。

Windowsでは、ハード・ディスク(のパーティション)やUSB,DVDといった記録メディアごとに、独立したディレクトリ・ツリー(ファイル/ディレクトリの階層構造)を形成する。

そして、そのディレクトリ・ツリーの名前(ドライブ名)とディレクトリ・パスを使ってファイルを指定する。

しかし、UNIX系OSでは “/” と表記されるルート・ディレクトリを頂点とした1本の論理的なツリー構造(階層構造)で、ハード・ディスクやUSB、DVDなど複数種類の記録メディアやネットワーク上にある別のコンピュータのディスクでさえ、そのツリーの中に組み込み表現する。


 
 

ツリー構造のイメージ


 
 

ファイルとディレクトリ

Linuxのフォルダ構成


ディレクトリは、ファイルの入れ物です。ファイルを目的や用途別に分類するために利用されています。
また、ディレクトリの中にさらにディレクトリを入れ子にすることもできます。
ディレクトリの中に作成されたディレクトリのことを、サブディレクトリといいます。

Linuxをインストールすると、上図のような「/」 (スラッシュ記号)で表現される、ルート(root)ディレクトリを頂点
とした、木(ツリー)構造のディレクトリ群が作成されます。
Rootには、(植物の)根や根源、根本という意味があります。ディレクトリ構造を木に例えて、ディレクトリのツリー
(木)構造の根源になるのがルートディレクトリです。

ルートディレクトリの配下には、以下の用途の決まったサブディレクトリが作成されます。

bin:一般および管理者ユーザが利用する重要度の高いコマンドが格納されています
dev:デバイスファイル(ハードウェアをファイルとして扱えるよう用意された特殊ファイル)を格納します
etc :様々なアプリケーションの設定ファイルを格納します
sbin:管理者向けのコマンドが格納されています
home:ユーザごとの個人ディレクトリ(ホームディレクトリ)を格納します
usr:各種アプリケーションと、それに付随するファイルを格納します
var:アプリケーションが動作する上で作成されたデータやログ、電子メールなどを格納します

Windowsのフォルダ構成


WindowsとLinuxは、OSが異なるのでファイルシステムも異なります。

Windowsの場合は、ハードディスクやDVD、USBメモリなどを、Cドライブ、Dドライブのようにアルファベット1文字
の名前で管理しています(ドライブ(drive)は「駆動する」「駆動装置」などの意味があります)。
そして、それぞれのドライブの中のフォルダやディレクトリ、という位置づけでファイルやディレクトリを管理しています。

また、ファイルやディレクトリの位置の表し方もLinuxとWindowsでは異なります。
Windowsでは、DVD(E)ドライブにあるmusicフォルダ内のsong.mp3という音楽ファイルは、
e:¥music¥song.mp3のように「ドライブ名:¥フォルダ名¥ファイル名」と記述します。

このように、OSが変わるとファイルシステムやシェルが変わるので、ユーザから見れば同じようなことでも、表記や操
作方法、コマンドなどが異なります。


 
 

「マイコンピュータフォルダにあるCドライブやDドライブ。なぜAとBがないか知っていますか?」
 
 

 
 





現在のWindowsPCの源流であるIBM PCは、Aドライブにシステムディスク、Bドライブにソフトやデータ用のディスクを挿入しての運用を前提としていた。

のちに登場したHDD(ハードディスクドライブ)には、増設ドライブとして「C」以降のドライブレターが割り当てられた。

HDDの普及後もソフトの互換性を保つためにドライブレターはそのまま固定され、フロッピーディスクがすたれたあともその仕様は残っている。

 
 

カレントディレクトリ


現在プログラムが注目している(関連付けられている)ディレクトリのことを、カレントディレクトリ(current
directory)
といいます。

Linuxで端末を開き、各コマンドを試してみましょう。
 pwdコマンド
  カレントディレクトリを確認するコマンドがpwdです。
  $ pwd

 cdコマンド
  カレントディレクトリを変更する場合はcdコマンドを実行します。
  $ cd

 [TAB]キーによる補完
  [TAB]キーによる補完機能は、コマンドだけでなく、ディレクトリ名やファイル名の指定にも利用できます。
  Linuxはコマンド、ディレクトリ名、ファイル名の大文字と小文字を区別するので、タイプミスを防ぐためにも
  [TAB]キーによる補完機能を利用しましょう。
  $ cal [Tab][Tab]

 ホームディレクトリ
  ユーザごとに用意される個人用ディレクトリです。管理者と本人以外はアクセスできないように、アクセス権が設
  定されています。
  ホームディレクトリにカレントディレクトリを移動する場合は、cd または cd ~と入力します。
  $ cd
   または
  $ cd ~

絶対パスと相対パス


ファイルやディレクトリを指定する場合、絶対パスと相対パスという2種類の指定方法があります。

  • 絶対パス
  •   カレントディレクトリに関係なく、Linuxの場合は/(ルート)から見た時のファイルやディレクトリの位置を表す方法です。
      Windowsの場合はドライブから見た時の位置を表します。
      たとえば、Linuxで絶対パスの形式を使って上図のfile-1を指定する場合は「/home/user01/work/file-1」と表す
      ことができます。
      ファイルを操作するスクリプトやプログラムを別のコンピュータに移植する場合、移植先のディレクトリ構造を移植元と同じ
      にする必要があります。

  • 相対パス
  •   カレントディレクトリを起点として表記する方法です。
      カレントディレクトリが/home/user01/のときに上図のfile-1を指定する場合は「work/file-1」と表すことができます。
      また、相対パスでは1つ上のディレクトリを指定する場合は「..(ピリオド2つ)」、2つ上のディレクトリを指定する場合は
    「../..」と表すことができます。

 
 

そもそも「パス」とは?
パスとは目的のファイルがどこのフォルダに保存されているのかを示す、道順のようなもの。

 
 

絶対パスとは
ルートディレクトリと呼ばれる階層構造の頂点から目的地までの経路を表している。(ユーザが現在どのフォルダで作業中であっても、常に同じスタート地点から、常に同じ経路の表示になる)

 
 

相対パスとは
ユーザが現在作業しているフォルダから目的のフォルダまでの経路を表す。
(スタート地点が異なると、ファイルへの経路も異なる)

 
 

絶対パスの利点と相対パスの利点

絶対パスの利点は、どんなに複雑に階層を移動しながら作業していても、目的地を間違えにくい。

相対パスの利点は、ルートディレクトリ自身がそっくり引っ越しをした場合、フォルダ同士の相対的な位置取りが変わっていなければプログラムを修正しなくても大丈夫。

HTMLのパスをつかって説明すると

絶対パス:http://www.site1.com/contents/contents01.html
相対パス:./contents/contents01.html

旧サイト「http://www.site1.com/」の中身をそっくり新サイト「http://newsite.co.jp/」に引っ越すとする。

絶対パス:http://www.newsite.co.jp/contents/contents01.html
相対パス:./contents/contents01.html

これらのファイルを新サイト「http://newsite.co.jp/」に引っ越した場合、絶対パスで記述されている方は修正が必要になりますが、相対パスであれば修正が不要という利点があるのです。

 
 

絶対パスと相対パスの調べ方と表し方

例として、「日本」をルートとする次のようなフォルダ構造があるとします。

絶対パスは誰から見ても同じ

絶対パスでは、現在地がどこであっても目的地が同じであれば同じ1つのパスになります。
例えば現在地「霞が関」から「港町」を参照する場合、次のように表されます。
※Linuxではルートディレクトリは「/」になる。

/関東/神奈川県/横浜市/青葉区/港町.txt

 
 

相対パスで重要なのは「現在地(カレント)」

相対パスは、現在地から目的地までの相対的な経路を表します。

そのため「千代田区」から「港町」を参照する場合と、「札幌市」から「港町」を参照する場合では、表記が違う。

■「千代田区」から「港町」を参照する場合
../../神奈川県/横浜市/中区/港町.txt

■「札幌市」から「港町」を参照する場合
../../関東/神奈川県/横浜市/中区/港町.txt

ここで大事なのは、「階層を移動する」という考え方です。
パス表記においては、階層は次のように表されます。

./(ドットスラッシュ)」は現在の階層を示す
../(ドットドットスラッシュ)」は一つ上の階層を示す

同じ階層の別ファイルを参照する場合は、次のように表される。

■「霞が関」から「虎ノ門」を参照する場合
./虎ノ門.txt

lsコマンド



lsコマンドは、ファイルやディレクトリを一覧表示するためのコマンドです。
Linuxでは最もよく利用するコマンドの一つで、様々なオプションがあります。


 
 

【練習問題】
以下の操作を実行し、表示結果の違いを比較してみましょう。コマンドやオプションは、大文字と小文字を区別するので、
大小文字に気を付けて入力してください。

1.ホームディレクトリにカレントディレクトリを変更します。
 
 

2・ ホームディレクトリ内のsampleディレクトリに、カレントディレクトリを相対指定で変更します。
 
 

3. lsコマンドを、オプションを指定せずに実行します。
 
 

4.lsコマンドを、-l(小文字のL)オプションを付けて実行します(ファイル、ディレクトリの詳細を一覧表示)。
 
 

5.ホームディレクトリに対して、lsコマンドを、-aオプションを付けて実行します(隠しファイルも表示)。
  ※ Linuxでは、.で始まるファイル名を指定すると隠しファイルになり、表示にはls –aオプションが必要です。
 
 

6.カレントディレクトリに対して、lsコマンドを-Fオプションを付けて実行します(ファイル識別子を表示)。
  ※ディレクトリ名の末尾に/記号が追加されています。
 
 

7./home/user01/sampleに対して、fileで始まるファイルやディレクトリを表示します。
 
 

コマンドのオプションについて



コマンドのオプションは、1つだけ指定することもできますが、複数指定することもできます。
たとえばlsコマンドの-aと-Fオプションを指定する場合は、以下のいずれかの方法で指定できます。

<複数のオプションを同時に指定する例>
  隠しファイルも含めて詳細を表示する
  ls -al
  ls –a -l

また、ロングオプションで指定する場合は、--のようにハイフンを2つつなげて入力する必要があります。
<ロングオプションの例>
  ls --all (-aオプションと同じ)
  ls --classify (-Fオプションと同じ)
  ls --width 30(-wオプションと同じ)

どのようなオプションが利用できるかは、コマンドによって異なるため、各コマンドのヘルプを参照するか、マニュアルなどを参
照しましょう。


 
 

探す、調べる

findコマンドは、ファイルやディレクトリがどこに保存されているかを探すためのコマンドです。

【練習問題】

以下の操作を実行し、ファイルの場所を探してみましょう。

1. ホームディレクトリにカレントディレクトリを変更します。
 
 

2. カレントディレクトリ(現在はホームディレクトリ)の中にfile1という名前のファイルがあるかを検索し、実行結果を
画面で確認しましょう。
 
 

3. 条件に該当するファイルやディレクトリが存在しない場合は、実行結果には何も表示されません。
  カレントディレクトリにmissingという名前のファイルやディレクトリがあるかどうかを、findコマンドで確認してみましょう
  (ファイルが存在しないため、実行結果には何も表示されないはずです)
 
 


ワイルドカードとは、カードゲームでは特殊な役割を果たす札のことをいいますが、コンピュータにおけるワイルドカードは、
検索などを行う場合にどのようなパターンにも一致する特殊文字のことです。

findコマンドやlsコマンドなどの、いろいろなコマンドでワイルドカードを指定できます。
よく使用するワイルドカードに、 0個以上の任意の文字列を表す「*」と、任意の1文字を表す「?」があります。
たとえば、ホームディレクトリに特定の文字を含む名前のファイルやディレクトリがあるかを探すことができます。
以下の例では、カレントディレクトリにfileのあとに任意の1文字を含む5文字のファイルやディレクトリを検索しています。
$ find . -name 'file?' または find . -name "file?"

シェルには、特殊な意味を持つ記号(*、?、$、`(バッククォート)、¥)があります。ワイルドカードである*や?も特殊
記号です。このため、findコマンドで*や?を使用する場合、シェルがこれらの記号を解釈することなくfindコマンドに渡す
ようにするために、シングルクォーテーションやダブルクォーテーションで囲みます。このように、シングルクォーテーションやダブ
ルクォーテーションで文字列を囲むことをクォーティングといいます。
なお、ダブルクォーテーションで文字を囲むと、「$」「`」「¥」 は特殊記号として扱いますが、シングルクォーテーションはこれ
らの特殊記号も文字列として扱います。

【練習問題】

findコマンドを使って、保存場所のわからないファイルやディレクトリを検索しましょう。

1. カレントディレクトリをホームディレクトリにします。
 
 

2. カレントディレクトリ内にある、fileという文字で始まる名前のファイルまたはディレクトリを検索してください。
  file1、file2、file3など、複数のファイルが検索結果に表示されます。
 
 

3. カレントディレクトリ内にある、 fで始まり、1で終わる名前のファイルまたはディレクトリを検索してください。
  file1が検索結果に表示されます。
 
 

4. カレントディレクトリ内にある、 10文字のファイルまたはディレクトリを検索してください。

コマンドの使い方を調べる

Linuxのコマンドには、書式やオプションを調べるためのヘルプ機能が提供されています。
概要を調べる場合は、--help オプションが使用できます。

catコマンドを例に、--helpオプションを確認します。

$ cat --help
使用法: cat [オプション]... [ファイル]...
ファイル、または標準入力を連結し、標準出力に出力します。

  -A, --show-all -vETと同じ
  -b, --number-nonblank 空行を除いて行番号を付け加える。-n より優先される
  -e -vEと同じ
  -E, --show-ends 行の最後に $ を付け加える
  -n, --number 全ての行に行番号を付け加える
  -s, --squeeze-blank 連続した空行の出力を抑止する
  (以下省略)


 
 


manコマンドを使用すると、--helpオプションでは表示されない詳細な情報まで得ることができます。

1. catコマンドについて調べる場合は、以下のように指定します。
  $ man cat

2. copyを含むマニュアルを探す場合は、-kオプションを使って以下のように指定します。
  $ man -k copy

3. crontabというコマンドのマニュアルを表示する場合は、以下のように入力します。
  ※crontab(クロンタブ)は、指定した時間にプログラムなどを実行するためのコマンドです。
   6章 シェルスクリプトによる処理の自動化で説明するため、本手順と次の手順はmanコマンドのほうに注目
   してください。
  $ man crontab

4. crontabというコマンドのセクション5のマニュアルを表示する場合は、以下のように入力します。
  $ man 5 crontab

manコマンドの、セクション番号とその内容は以下の通りです。
1 コマンド
2 システムコール
3 ライブラリ関数
4 デバイスファイル
5 ファイルの書式
6 ゲーム
7 その他
8 システム管理コマンド
9 カーネルルーチン

ファイル操作の基本

 
 

mkdirコマンド


mkdirは、ディレクトリを作成するコマンドです。ディレクトリは、ファイルを効率よく分類するための入れ物です。ディレクトリの中
にディレクトリを作成することもできます。
ディレクトリを作成するときは、どのようなファイルを保存するか?だれが利用するか?アクセス権はどのように設定するか(だれ
がファイルにアクセスしてもよく、だれが書き込みまでできるか)?などの用途や利用者、セキュリティレベルなどを基準に、ディレ
クトリ構造を考えてからmkdirコマンドを実行します。

<相対指定でディレクトリを作成する場合>
相対指定では、カレントディレクトリにディレクトリが作成されます。
たとえば、以下の例では、カレントディレクトリをホームディレクトリに変更してから、相対指定でtestdir1というディレクトリを作
成しています。この場合はtestdir1はホームディレクトリに作成されます。
$ cd
$ mkdir testdir1

<絶対指定でディレクトリを作成する場合>
絶対指定を使用すると、指定した場所にディレクトリを作成できます。
たとえば、以下の例では、カレントディレクトリがホームディレクトリの状態で、ルートディレクトリの中にあるtmpディレクトリの中
に、testdir2というディレクトリを作成しています。
$ pwd
/home/user01
$ mkdir /tmp/testdir2

<親ディレクトリも同時に作成する場合>
-p オプションを指定すると、存在しない場合は親ディレクトリも同時に作成できます。
たとえば、以下の例ではカレントディレクトリの下に[report]ー[2020]-[01]というディレクトリ構造を作成します。このとき、-p
オプションを指定しない場合は、先に親ディレクトリとなる[report]ー[2020]を作成する必要がありますが、-pオプションを指
定すれば、[report]ー[2020]が無い場合は自動的に作成します。
$ cd
$ mkdir –p report/2020/01

<複数のディレクトリを同時に作成する場合>
ディレクトリ名を半角スペースで区切って複数入力すると、複数のディレクトリを同時に作成できます。
$ mkdir d1 d2 d3


 
 

touchコマンド


touchコマンドは、存在しないファイル名を指定すると、新規に空のファイルを作成します。既存のファイルやディレクトリを
指定した場合は、アクセス時刻と修正時刻を変更します。

1. touchコマンドで、カレントディレクトリをホームディレクトリに変更後、new1という名前のファイルを作成する場合は、
  以下のように指定します。
  $ cd
  $ touch new1

2. カレントディレクトリに、複数のファイルをまとめて作成する場合は、以下のように指定します。
  下の例では、new2 new3 new4という3つのファイルを、一度に作成しています。
  $ touch new2 new3 new4
  $ ls new?

3. 前のページで作成したtestdir1の作成時刻を確認します。
  $ ls –ld testdir1

4. testdir1にtouchコマンドを実行します。
  $ touch testdir1

5. testdir1の作成時刻を確認します。touchコマンドを実行したため、タイムスタンプが変更されています。
  たとえば、本日変更したファイルだけをバックアップする、というときに変更はしていないがバックアップはしたい、という
  ファイルにtouchコマンドを実行すると、バックアップ対象に加えることができます。
  $ ls -d --full-time testdir1 ※ lsコマンドの --full-timeオプションで、詳細な時間を表示できます

6. カレントディレクトリ以外に保存されているファイルやディレクトリに対しては、絶対指定を使用します。
  以下の例では、/tmp/testdir2の中に、new5というファイルを絶対指定で作成し、確認しています。
  $ touch /tmp/testdir2/new5
  $ ls /tmp/testdir2/

touchコマンドは、普段はあまり利用しませんが、本研修のような検証環境で内容は何でもよいのでコマンドの実行対
象となるファイルが必要、という場合にはよく利用します。
また、ソフトウェアを納品する際に、各プログラムファイルのタイムスタンプがバラバラの場合にtouchコマンドで統一する場
合にも利用します。


 
 

rmとrmdirコマンド


rmコマンドは、ファイルやディレクトリを削除するコマンドです。削除したファイルは、GUIではごみ箱に入り、簡単に元に
戻すことができますが、rmコマンドで削除したファイルやディレクトリは、ごみ箱には入らずに削除されます。このため、実
行時には十分注意しましょう。

1. ホームディレクトリにある、ファイルnew1を削除します。
  $ cd
  $ rm new1
  $ ls new1

  ls: new1 にアクセスできません: そのようなファイルやディレクトリはありません

2. 以下の例では -i オプションによって、ファイルnew2を削除する前に確認を促しています。
  いきなり削除せず確認のステップを間に入れることで、誤った削除を防ぎます。
  $ rm -i new2
  rm: 通常の空ファイル 'new2' を削除しますか? y

3. rmコマンドでディレクトリを削除する場合は、オプションが必要です。オプションを指定しないと以下のようにエ
  ラーが表示され、ディレクトリが表示できません。
  $ rm /tmp/testdir2
  rm: '/tmp/testdir2' を削除できません: ディレクトリです

4. ディレクトリを削除する場合は、rmコマンドに-rオプションを指定するか、rmdirコマンドを使用します。
  ただし、rmdirコマンドは、削除対象のディレクトリの内容をあらかじめすべて削除する必要があります。
  $ rmdir /tmp/testdir2
  rmdir: ‘/tmp/testdir2' を削除できません: ディレクトリは空ではありません

5. 以下の例では –r オプションによって、/tmpディレクトリにあるtestdir2とその中のファイル(サブフォルダあれば
  サブフォルダも)をまるごと削除しています。-rオプションでディレクトリを削除する場合は、必要なファイルまで
  削除してしまわないように、細心の注意を払って実行しましょう。
  $ rm –r /tmp/testdir2

 
 

catコマンド


catコマンドは、ファイルの内容を表示するコマンドです。ファイルを1つ指定した場合はそのファイルの内容を表示します。
ファイルを2つ指定した場合は、指定した順番に連結表示します。
ただし、catコマンドで表示できるのは、テキストファイルと呼ばれる種類のファイルだけです。
たとえば、WordやExcelのような、特定のアプリケーションソフトウェアでしか作成や編集ができないファイルのことをバイナ
リファイルといいます。一方、アプリケーションソフトウェア固有の情報を含まない、文字や数字、記号だけで構成されたシ
ンプルなファイルをテキストファイルといいます。
catコマンドが対応しているのはテキストファイルだけで、バイナリファイルの内容は正しく表示できません。

1. たとえば、ホームディレクトリにあるsampleディレクトリの中に、file1というファイルがあります。このファイルの内容を
  表示する場合は、以下のように実行します。
  $ cd
  $ cd sample
  $ cat file1

2. sampleディレクトリ内のfile1とfile2を連結して表示する場合は、以下のように実行します。
  $ cat file1 file2

3. プログラムのソースコードや、Linuxの設定ファイルは、テキストファイルです。たとえば、Linuxには決まった日時にコ
  マンドを実行するcronというプログラムがありますが、cronでいつ何を実行するかを設定するファイルがcrontabで
  す。このcrontabの内容を確認する場合は、以下のようにコマンドを実行します。
  $ cat /etc/crontab

4. 上記の実行結果に行番号を付ける場合は、-nオプションを追加します。
  $ cat –n /etc/crontab

==============================
OnePoint
本文中にもありますが、プログラムのソースコードや、Linuxの設定ファイルは、テキストファイルです。このため、Linuxを
使用していると、catコマンドをよく利用するので覚えておくと便利です。
==============================


 
 

moreコマンド、lessコマンド(参考)

catコマンドは行数の少ないテキストファイルの内容を確認する場合は便利ですが、数十行、数百行といった大量
の行を含むファイル内容の表示には適していません。
このような場合は、moreコマンドやlessコマンドを利用します。
moreコマンドは、テキストファイルの内容をページ単位で表示するコマンドで、バックスクロールには対応していませ
ん。

less(より少ない)はmore(より多い)の逆で、バックスクロール可能でmoreよりも便利な、テキストファイルの
表示コマンドです。
lessは、more ではできなかった逆スクロールや、gzipなどで圧縮されたファイル (*.gz や *.Z) を直接見ること
ができる
など、いろいろな機能が追加されている便利なコマンドなので、catでは確認しきれないような、データ量の
多いテキストファイルを表示するためのコマンドとして覚えておくと便利です。

シェルの環境設定ファイルである、/etc/bashrcが比較的たくさんの行数があるため、このファイルを表示し、less
コマンドの簡単な使い方を確認しておきましょう。

$ less /etc/bashrc

    キー操作の例:

  • スペースキーでページ送り
  • [Enter]キーで行送り
  • [b]キーで前のページに戻る
  • [q]キーで表示終了


 
 

cpコマンド

cpコマンドは、ファイルやディレクトリのコピー(複製)を作成するコマンドです。
たとえば、プログラムのソースコードの一部を変更する前やサーバの設定ファイルを変更する前などに、cpコマンドで変更前ファ
イルの複製を保存しておけば、変更が失敗した場合のダメージを最小限にできます。

【練習問題】
以下の手順で、cpコマンドの使い方を確認しましょう。
最初に、cpコマンドの練習用に、ホームディレクトリにdir1というディレクトリを作成し、中にdir2とdir3というディレクトリを作成
します。
<作成するディレクトリ構造のイメージ>
  ホームディレクトリ
    |---dir1
         |--dir2
         |--dir3

1. ホームディレクトリ内にディレクトリ構造を作成します。
  $ cd
  $ mkdir -p dir1/dir2 dir1/dir3

 
 

2. ホームディレクトリ内のsampleサブディレクトリの中にあるfile1を、作成したdir1にコピーしてください。

 
 

3. コピーできたことをlsコマンドで確認してください。

 
 

4. 同様に、ホームディレクトリ内のsampleディレクトリの中にあるfile2を、1で作成したdir2にコピーしてください。

 
 

5. コピーできたことをlsコマンドで確認してください。

 
 

6. ホームディレクトリ内のsampleディレクトリを中のファイルやディレクトリも含めて丸ごと1で作成したdir3にコピーしてくださ
い。

 
 

7. コピーできたことをlsコマンドで確認してください。

 
 

mvコマンド

mvコマンドは、ファイルやディレクトリを移動する場合や、名前を変更する場合に使用します。

たとえば、プログラムのソースコードや設定ファイル、アプリケーションプログラムで作成したデータなどを変更する前に、バックアッ
プファイルをcpコマンドで作成し、保存しておきました。
その後変更に失敗したので、変更後のファイルは削除し、バックアップとして保存しておいた変更前のファイルを、元の場所に
戻すときに、cpかmvコマンドを使用します(どちらを使用するかは、コピー/移動元ファイルを残すかどうかで判断します)。

前のページでcpコマンドの練習のために作成したdir1ディレクトリを使用し、mvコマンドの使い方を確認します。

1. 最初に、mvコマンドでファイル名を変更する方法を確認します。
  カレントディレクトリをホームディレクトリの中のdir1ディレクトリに変更します。
  $ cd ~/dir1

2. 以下のコマンドを実行します。
  これは、file1という名前のファイルを、同じディレクトリにfile0001という名前で移動しているのですが、結果的にはファイ
  ル名の変更になっています。
  $ mv file1 file0001
  $ ls

3. dir1のfile0001を、dir2に名前を変えずに移動するには、次のようにコマンドを実行します。
  $ mv file0001 dir2/ (末尾の/は省略可能)
  $ ls dir2/

4. カレントディレクトリがdir1の状態で、dir2のfile0001を、dir3にfile1に名前を変えて移動するには、次のようにコマンド
  を実行します。
  $ mv dir2/file0001 dir3/file1
  $ ls dir3/


 
 

lnコマンド(参考)


シンボリックリンクは、Windowsの「ショートカット」と同様の機能で、ファイルの実体に対してリンクファイルを作成する機
能です。
たとえば、深いディレクトリ階層に保存されいるファイルに素早くアクセスする場合などに、ホームディレクトリなどのわかりや
すくアクセスしやすい場所にシンボリックリンクを作成しておくような使い方が考えられます。

1. ホームディレクトリのsampleサブディレクトリにあるfile1に対して、シンボリックリンクlink2を作成する場合は、以下
  のように入力します。
  $ cd ~/sample/
  $ ln –s file1 link2
  $ ls -l link2

  lrwxrwxrwx 1 user01 user01 5 2月 17 21:56 link2 -> file1

2. 【練習問題】上記の例では、リンク元ファイルとシンボリックリンクを同じディレクトリに作成しているため、あまり意味
  がありません。
  今度は、sampleディレクトリの深い階層下にあるファイルhokkaido.jpgへのシンボリックリンクを、ホームディレクト
  リに作成してください。
  <リンク元ファイル>
  /home/user01/sample/test_directory_03/hokkaido.jpg
  <シンボリックリンク>
  /home/user01/hklink

3. シンボリックリンクが作成できると、アプリケーションでリンク元ファイルを開く場合などでも、以下の例のようにシンボリッ
  クリンクを実際のファイルのかわりに指定できます。
  $ cd
  $ firefox hklink

  Firefoxに風景写真が表示されたら演習は完了です。
  アドレスバー(URLが表示される場所)には、シンボリックリンクのリンク先パスが表示されていることを確認したら、
  Firefoxを終了してください。


 
 

iノードとシンボリックリンク/ハードリンク(参考)


リンクには、シンボリックリンクとハードリンクがあります。よく利用されているのはシンボリックリンクです。
lnコマンドでは、-sオプションを指定するとシンボリックリンク、省略するとハードリンクが作成されます。

ハードリンクは一つの実体(ひとつのinode)を各ハードリンクが参照します。
ハードリンクはシンボリックリンクのように、実体と参照のような区別はなく、どちらも同じi-nodeを共有するファイルという
扱いになります。ハードリンクはファイルシステムをまたいで作成することができないなどの制限があることから、一般的にリ
ンクを作成する場合にはシンボリックリンクが使用されています。

シンボリックリンクは、Windowsのショートカットファイルに近い機能で、ファイルの実体に対してリンクファイルを別に作成
します。シンボリックリンクファイルを削除しても、元ファイルには影響はありません。また、リンク元ファイルに対して削除や
移動をすると、シンボリックリンクはリンク先のないファイルとして存在し続けてしまいます。

1. カレントディレクトリを、ホームディレクトリのsampleサブディレクトリに変更してください。
  $ cd ~/sample

2. file1のシンボリックリンクを、file1slinkという名前で作成してください。
  $ ln -s file1 file1slink

3. file1のハードリンクを、file1hlinkという名前で作成してください。
  $ ln file1 file1hlink

4. ls –i コマンドを実行し、 file1とslink、hlinkのiノード番号を比較してください
  シンボリックリンクfile1slinkのiノード番号は、元ファイルであるfile1と異なりますが、ハードリンクfile1hlinkのiノード
  番号は、元ファイルであるfile1と同じ値であり、上図の通りであることが確認できます。
  $ ls -i


 

 
 
 

duコマンド


duコマンドは、ディスクの使用量を確認する場合などに使用します。
ディスクの使用量とは、具体的には指定したディレクトリなどに保存されているファイルの合計サイズなどを指します。

たとえば、以下のように自分のホームディレクトリに保存されているファイルの合計サイズを確認することができます。

1. user01のホームディレクトリに保存されているファイルの合計サイズを確認します。
  $ cd
  $ du -sm

2. カレントディレクトリ内(現在はホームディレクトリ)のファイルまたはディレクトリ単位で合計サイズを表示します。
  $ du -sm *

アクセス権のないファイルやディレクトリについては確認ができません。ほかのユーザのディスクの使用量の確認は、管理者
の権限が必要です。
管理者やアクセス権については、3章で学習します。

 
 

アーカイブと圧縮

 
 

アーカイブファイルと圧縮ファイル

 
 

アーカイブと圧縮を学習する理由


アーカイブとは、ファイルのユーザ情報とグループ情報、パーミッション、最終更新日時、ディレクトリ構造などをひとま
とまりのファイルにすることです。バックアップや、ほかのユーザと複数のファイルをやり取りするときに扱いやすくなります。
さらにアーカイブファイルを圧縮すると、ディスク領域の節約ができます。また、ネットワークを介してほかのユーザと
データを送受信するときに、ネットワークにかかる負荷や送受信にかかる時間を軽減できます。

アーカイブと圧縮の主な用途には以下の例があります。各例に対して、ユーザは【ポイント】にあるような能力が求め
られます。

  • ディレクトリ構造も含めたファイルのバックアップ
  • → 【ポイント】効率の良い圧縮方法を選択できるようになる

  • ほかのユーザへのファイル配布
  • → 【ポイント】アーカイブの展開と、圧縮の解凍がしやすいように、アーカイブや圧縮方式がわかるようなファイル
    名にする
      Windowsユーザにはzipで圧縮して配布するなど、配布先ユーザに配慮できるようになる

  • インターネット上で配布されている、アーカイブ/圧縮されたプログラムやファイルをダウンロード、展開して利用
  • → 【ポイント】適切な解凍方法を選択できるようになる

Linuxでは、多くのプログラムやデータをアーカイブおよび圧縮して、インターネットを通じて配布しています。
Windowsでは、ほとんどの場合zipをアーカイブと圧縮に使用していますが、Linuxには数種類の圧縮方式があり
ます。このため、以下を理解する必要があります。

• 圧縮する場合はどのような圧縮方式があり、効率が良いのはどれか?
• アーカイブおよび圧縮されたファイルを入手したときは、解凍と呼ばれる元の状態に戻す操作が必要
• 解凍は、アーカイブおよび圧縮形式に合わせて行う必要がある

 
 

tarコマンド


アーカイブファイルの作成や、アーカイブファイルを元に戻す(展開する)コマンドが tar です。
tarはtape archiveの略で、元々はテープドライブなどにデータをバックアップするときに使っていたコマンドです。
tarコマンドには、以下の特徴があります。

• 複数のファイルやディレクトリをアーカイブファイルにまとめる
• アーカイブファイルから元のファイルを取り出す
• ファイルのパーミッション、オーナー、タイムスタンプなどのファイル属性も、そのままアーカイブされる

cpやmvコマンドの練習用に使用していたdir1ディレクトリを使って、tarコマンドの使い方を確認します。

【練習問題】
1. ホームディレクトリのdir1とその中のファイルやディレクトリを、tarコマンドで1つのアーカイブファイルにし
てください。
アーカイブ後のファイル名は、dir1.tarにしてください。
 
 

2. lsコマンドを実行し、ホームディレクトリにdir1と、dir1.tarの両方が存在していることを確認してください。
  $ ls
 
 

3. dir1.tarの内容を表示してください。
 
 

4. dir1を削除します(アーカイブ後のファイルではなく、アーカイブ前のディレクトリです)
  $ rm -r dir1
 
 

5. 手順4でdir1ディレクトリを削除したのは間違いでした。このため、 dir1.tarをつかってdir1を復元
  (展開)してください。
 
 

==============================
OnePoint
ファイルがtarコマンドでアーカイブされたものであることが誰にでもわかるように、アーカイブ後のファイルには末尾に.tarを付けま
す。
==============================

 
 

gzipコマンド


gzipは、ファイルの圧縮と展開を行うコマンドです。
歴史は古く、圧縮率の高いファイル形式への移行が進みつつありますが、ほかの圧縮方式との比較として学習します。

gzipは、1つのファイルしか圧縮できない(アーカイブ機能がない)ため、tarと組み合わせて使うのが一般的です。また、
gzipで圧縮したことが誰にでもわかるように、圧縮後のファイルには慣習として.gzという拡張子を付けます。

たとえば、tarコマンドでアーカイブしたdir1.tarを、gzipで圧縮するに場合は、以下のようにコマンドを実行します(圧縮後、
元のdir1.tarは無くなります)。
$ gzip dir1.tar

また、gzip dir1.tarを展開する場合は、以下のいずれかのコマンドを実行します(展開後、元のdir1.tar.gzは無くなりま
す)。
$ gzip -d dir1.tar.gz
$ gunzip dir1.tar.gz

gzipは、gzipコマンドを使って圧縮をすることもできますが、tarコマンドのオプションとして実行することもできます。
たとえば、ホームディレクトリのdir1に対して、アーカイブとgzip圧縮を同時に行うには、以下のようにコマンドを実行します。
$ tar czf dir1.tar.gz dir1
※この例では、アーカイブとgzip圧縮後のファイルの名前がdir1.tar.gzです。

tarコマンドでdir1.tar.gzを元のdirに復元(解凍と展開)する場合は、以下のようにコマンドを実行します。
$ tar xzf dir1.tar.gz


 
 

zipコマンド


zipは、zip形式でアーカイブと圧縮を同時に行うコマンドです。
tarを使わなくても、複数のファイルやディレクトリをまとめて圧縮できます。WindowsやMAC OSでは広く使われているため、
これらのOSのユーザとデータをやり取りするときに便利です。

dir1をzipでアーカイブ、圧縮し、dir1.zipという名前で保存する場合は、以下のようにコマンドを実行します。
$ zip –r dir1.zip dir1
dir1をパスワード付きzipでアーカイブ、圧縮し、dir1p.zipという名前で保存する場合は、以下のようにコマンドを実行
します(実行すると、設定するパスワードを入力するよう、要求メッセージが表示されます)。
$ zip –er dir1p.zip dir1
Enter password:
Verify password: ※パスワードは入力ミスを防ぐため、同じものを2回入力します(画面には表示されません)

パスワード付きかどうかにかかわらず、zipファイルを展開する場合は、以下のようにコマンドを実行します(パスワード付きzip
ファイルの場合は、コマンド実行後にパスワードを入力するよう、要求メッセージが表示されます)。
$ rm -r dir1
$ unzip dir1.zip

********************
【参考】
本テキストでは、代表的な圧縮方式としてgzipとzipを紹介しましたが、ほかにも圧縮方式とコマンドがあります。例として、以
下の2つを紹介します。

  • bzip2
  •   • gzip形式よりも圧縮率が高いが、圧縮や展開に、 gzip形式よりも時間がかかる
      • 時間よりも圧縮後のファイルサイズを重視するときに使用
      • コマンドのオプションがgzipコマンドと同じなので、gzipの使い方がわかればすぐに利用できる
      • 慣習的に.bz2という拡張子を使用する

  • xz
  •   • 圧縮率はgzip, bzip2より高いが、gzip, bzip2よりも、圧縮時に多くの時間とメモリを消費する

********************


 
 

テキストファイルとテキストエディタ

 
 

テキストファイルとバイナリファイル


ファイルの区別の方法の一つに、テキストファイルかバイナリファイルか?というものがあります。

バイナリファイルは、人が直接内容を読むことを考慮していない、特定のアプリケーションソフトウェアなどで作成、編
集することを想定したファイルです。
画像ファイル、音声ファイル、ExcelやWordのデータファイル、プログラムの実行ファイルはバイナリファイルです。

テキストファイルは、テキスト(文字列)が書かれたファイルです。文字や数字、記号などが何の装飾もされない状
態で保存されており、テキストエディタ(Windowsの場合は「メモ帳」など)で作成、保存、編集することを想定
しています。
プログラムのソースコードやHTMLファイルもテキストファイルです。

テキストファイルのメリットは、専用のアプリケーションを使わなくても、テキストエディタで簡単に作成、編集できること
です。また、互換性が高く、複数のアプリケーションから利用しやすいというメリットもあります。このため、Linuxでは、
Linux自身や多くのプログラムの設定をテキストファイルに記述し、決まった場所に保存をしています。
このことから、Linuxには、テキストファイルを扱うためのコマンドが多数用意されています。


 
 

LinuxとWindowsの「文化」の違い

Linuxはテキスト文化、Windowsはバイナリ文化と言われています。

  • Linuxはテキスト文化
  •   Linuxは、OSやアプリケーションの設定をテキストファイルに記述します。
      テキストファイルは扱いやすく、ほかのコンピュータと設定ファイルを共有しやすく(コピーとテキストエディタによる
      書き換えだけで良い)バックアップもしやすいというメリットがあります。
      このため、Linuxではテキストファイルを扱うコマンドや、テキストエディタと呼ばれるプログラムが多数提供されて
      おり、効率よくテキストファイルを処理する環境が充分に整っています。
      一方で、アプリケーションによって設定ファイルの書式が異なるため、統一感に欠けます。このため、アプリケーショ
      ンごとに設定ファイルの書き方を調べる必要があります。

  • Windowsはバイナリ文化
  •   Windowsは、OSやアプリケーションの設定を、「レジストリ」と呼ばれるバイナリファイルに保存します。
      レジストリは、アプリケーションの[ツール]-[オプション]メニューや、Windowsのコントロールパネル、各ア
      プリケーションの「設定」メニューなどの、GUI操作を通して変更します。
      レジストリエディタというツールを使って、レジストリを直接編集することもできますが、このような行為はマイクロソ
      フトのサポート対象外になります。


 
 

テキストエディタ Vim


Linuxはテキスト文化のため、テキストファイルを扱う専用のアプリケーションである「テキスト
エディタ」が多数提供されています。
特に有名なのはVimとEmacsです。
Vimはほとんどのディストリビューションに標準でインストールされていますが、操作方法が特殊なため、初めて利用する
ユーザの多くは戸惑います。本章では、Vimしかテキストエディタがインストールされていない場合を想定し、Vimの使い
方を簡単に確認しておきましょう。

********************
【注意】
本テキストでは、Vimを使いこなせるようになることではなく、Vimの使い方を簡単に確認することなので、詳細な演習
は行いません。
********************

以下の手順を実行し、簡単な自己紹介文を記入したテキストファイル hello.txt を作成しましょう。

1. user01としてログインしている状態で、端末を開きます。
 
 

2. ホームディレクトリにカレントディレクトリを変更します。
$cd
 
 
3. 以下のように入力し、vim.txtというファイル名のテキストファイルを作成し、vimで開きます。
パスを指定せずにファイル名のみを指定すると、カレントディレクトリにファイルが保存されます。
$ vim vim.txt
 
 

4. 新規に作成したファイルなので、まだ何も文字が入力されていません。

 
 

Vimの編集操作

 
 

 


Vimは、文字の入力できないモードで起動します。これをノーマルモードといいます。ノーマルモードは、文字入力以
外の編集作業(コピー/貼り付け、削除、文字の置き換など)を行うためのモードです。
文字が入力できるモードをインサートモードといいます。
ノーマルモードからインサートモードへの切り替えは、[i]か[a]キーを1回押します。

1. [i]か[a]キーを1回押して、インサートモードに切り替えてください(Vimのウインドウの左下に「挿入」と表示さ
  れます) 。
 
 
2. 日本語入力に切り替えます。
  Vimに、以下の文字列を入力してください。文字の修正には、[Del]キーやバックスペースキーが利用できます。

   こんにちは!
   私の名前は○○○○です。(○の部分はご自身のお名前に置き換えてください)
 
 
3. ファイルの保存操作を行い、入力した文字列をvim.txtに保存します。
  [半角/全角]キーを押して、英数入力に切り替えます。
 
 
4. [ESC]キーを押して、ノーマルモードに戻ります。
  (Vimのウインドウの左下の「挿入」という表示が消えます)
 
 
5. [:]キーを押します(Vimのウインドウの左下に「:」と表示されます)。
 
 
6. [w] [q]キーを順番に押し、[Enter]キーを押します([w]は書き込み(上書き保存)、 [q]は終了で
す)。
元の端末の画面に戻ります。
 
 
7. lsコマンドを実行し、vim.txtがあることを確認します。
  $ ls
 
 
8. catコマンドを実行
  $ cat vim.txt


 
 

カーソル移動(参考)


Vimは上記のようなカーソルの移動を高速に行うためのキー操作が機能として提供されています。


 
 

編集時のキー操作(参考)


[Delete]キーや[Back Space]キーでも文字の削除はできますが、Vimでは上記のような、より簡単に文字列を操
作するキー操作も提供しています。
また、直前の編集操作を取り消すUndo操作や、Undoを取り消すredo操作を行うためのキー操作も提供されてい
ます。

これらは、本格的にVimを使用する場合は、便利なので覚えると良いでしょう。


 
 

ヘルプとドキュメント


Vimの使い方を学習するためのチュートリアルとして、vimtutorが提供されています。少し長いですが、一通りの
Vimのキー操作が確認できます。
本格的にVimの使い方を学習する場合には活用してください。

また、Vimの起動中にノーマルモードで: help と入力すると、ヘルプを確認できます。


 
 

章末問題(MUST、SHOULD)

以下の要件を満たすように、ファイルおよびディレクトリをコマンドで操作してください。
ディレクトリ構造については、テキストまたは上図を参考にしてください。

1. user01としてログインして端末を開き、カレントディレクトリをホームディレクトリに変更してください。
 
 
2. カレントディレクトリを変更せずに、ルートディレクトリ内のtmpディレクトリに、testdirという名前のディレクトリを作成してください。
 
 
3. カレントディレクトリ(ホームディレクトリ)に、backupという名前のディレクトリを作成してください。
 
 
4. ホームディレクトリ内のsampleディレクトリ内には、test_directory_03ディレクトリがあります。
test_directory_03の中にあるlog001.log(log001.logは、Webサーバのログファイルで、どのようなIPアドレスの、どのよ
うなWebブラウザを実行しているクライアントコンピュータから、いつどのWebページにアクセスがあったかを記録したテキストファイ
ルです)の内容をcatコマンドで表示してください。
---手順5. は、講義中にlessコマンドを学習済みの場合は行ってください---
 
 
5. (SHOULD)catコマンドでは内容が確認しにくいため、lessコマンドでlog003.logファイルを確認してください。
 
 
6. test_directory_03の中にあるlog001.log、log002.log、log003.logを、ワイルドカードを使って、一度の操作で手順
2で作成した/tmp/testdirにコピーしてください。
 
 
7. /tmp にカレントディレクトリを変更し、コピーしたlog001.log、log002.log、log003.logを含むtestdirをlogs.zipという
名前でZIPによるアーカイブと圧縮を行ってください。
 
 
8. 手順7で作成したlogs.zipを、手順3で作成したホームディレクトリにあるbackupという名前のディレクトリにファイル名を変え
ずに移動してください。その後、testdirを削除してください。
 
 
9. touchコマンドで、 backupディレクトリ内にreadme.txtという名前のファイルを作成します。
---手順10. ~ 12. は時間があれば行ってください---
 
 
10. (SHOULD)手順9で作成したreadme.txtをvimで開き、「 logs.zipは、Webサーバのログファイルをzipでアーカイブ、
圧縮したファイルです」と入力した後上書き保存してvimを終了します。
 
 
11. (SHOULD)手順10で編集したreadme.txtの内容を表示し、文章が保存されていることを確認します。
 
 
12. (SHOULD)~/backupディレクトリに移動したlogs.zipの中にどのようなファイルが含まれているかを、アーカイブと圧縮を解
除(展開)せずに表示してください。
 
 
13. (SHOULD)ホームディレクトリにあるbackupディレクトリに移動したlogs.zipのアーカイブと圧縮を/tmpで解除(展開)
してください。

-Linux入門

© 2021 スタートダッシュ