Linux Professional Institute Learning Logo.
main contentにスキップ
  • ホーム
    • 全てのリソース
    • LPI学習教材
    • コントリビューターになる
    • Publishing Partners
    • Publishing Partnerになる
    • About
    • FAQ
    • コントリビューター
    • Roadmap
    • 連絡先
  • LPI.org
2.3 レッスン 2
課題 1: Linuxコミュニティとオープンソースのキャリア
1.1 ポピュラーなOSとLinuxの発展
  • 1.1 レッスン 1
1.2 主なオープンソースのアプリケーション
  • 1.2 レッスン 1
1.3 オープンソースソフトウエアとライセンス
  • 1.3 レッスン 1
1.4 ICTスキルとLinuxでの作業
  • 1.4 レッスン 1
課題 2: Linuxシステムで自分の手法を見つける
2.1 コマンドラインの基本
  • 2.1 レッスン 1
  • 2.1 レッスン 2
2.2 コマンドラインのヘルプ機能の利用
  • 2.2 レッスン 1
2.3 ディレクトリの利用とファイルの一覧
  • 2.3 レッスン 1
  • 2.3 レッスン 2
2.4 ファイルの作成、移動と削除
  • 2.4 レッスン 1
課題 3: コマンドラインの力
3.1 コマンドラインでのファイル圧縮
  • 3.1 レッスン 1
3.2 ファイルの検索と展開
  • 3.2 レッスン 1
  • 3.2 レッスン 2
3.3 コマンドをスクリプトにする
  • 3.3 レッスン 1
  • 3.3 レッスン 2
課題 4: Linuxオペレーティングシステム
4.1 オペレーティングシステムの選択
  • 4.1 レッスン 1
4.2 コンピュータハードウエアの理解
  • 4.2 レッスン 1
4.3 データの保管場所
  • 4.3 レッスン 1
  • 4.3 レッスン 2
4.4 ネットワーク上のコンピュータ
  • 4.4 レッスン 1
課題 5: セキュリティとファイルパーミッション
5.1 セキュリティの基本と、ユーザタイプの確認
  • 5.1 レッスン 1
5.2 ユーザとグループの作成
  • 5.2 レッスン 1
5.3 ファイルのパーミッションと所有権の管理
  • 5.3 レッスン 1
5.4 特別なディレクトリとファイル
  • 5.4 レッスン 1
How to get certified
  1. 課題 2: Linuxシステムで自分の手法を見つける
  2. 2.3 ディレクトリの利用とファイルの一覧
  3. 2.3 レッスン 2

2.3 レッスン 2

Certificate:

Linux Essentials

Version:

1.6

Topic:

2 Linuxでのやりかたを見つける

Objective:

2.3 ディレクトリの利用とファイルの一覧

Lesson:

2 of 2

はじめに

Unixオペレーティングシステムは、もともとはメインフレームコンピュータ用に1960年代半ばに設計されました。これらのコンピューターは、ターミナル を介してシステムのリソースにアクセスする多くのユーザーで共有されていました。これらの基本的なアイデアは、今日のLinuxシステムにも継承されています。シェルにコマンドを入力するために “ターミナル” を使用することは、いまだによく話題に上りますし、すべてのLinuxシステムは、1つのシステムに多くのユーザーを簡単に作成できるように構成されています。

ホームディレクトリ

これは、Linuxにおける標準的なファイルシステムの例です:

$ tree -L 1 /
/
├── bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin
├── srv
├── sys
├── tmp
├── usr
└── var

これらのディレクトリのほとんどは、すべてのLinuxシステムに共通しています。サーバからスーパーコンピュータ、小型の組み込みシステムまで、経験豊富な Linux ユーザは、/bin の中に ls コマンドがあり、/etc の中のファイルを変更してシステム設定を変更し、 /var にあるシステムログを読むことができることを知っています。これらのファイルやディレクトリの場所は、ファイルシステム階層標準(Filesystem Hierarchy Standard/FHS)によって標準化されているので、後のレッスンで説明します。それぞれのディレクトリの内容については、Linux の学習を続けていくうちにさらに詳しく知ることになるでしょうが、今のところは、標準化されていることを知っておきましょう。

  • ルートファイルシステムの変更は、すべてのユーザーに影響します

  • また、ルートファイルシステムのファイルを変更するには、管理者権限が必要です

つまり、一般ユーザーがこれらのファイルを変更することは禁止されており、読み取ることも禁止されていることがあります。権限については、後のセクションで説明します。

では、すでにお馴染みの home ディレクトリに着目してみましょう:

$ tree -L 1 /home
/home
├── user
├── michael
└── lara

この例で取り上げるシステムには、3人の一般ユーザーがいて、各ユーザーは専用の場所を持っています。この場所では、隣人に影響を与えることなくファイルやディレクトリを作成・変更できます。たとえば、前のレッスンでは、次のファイル構造を取り上げました。

$ tree /home/user
user
└── Documents
    ├── Mission-Statement
    └── Reports
        └── report2018.txt

実際のファイルシステムでは、次のようになります:

$ tree /home
/home
├── user
│   └── Documents
│       ├── Mission-Statement
│       └── Reports
│           └── report2018.txt
├── michael
│   ├── Documents
│   │   └── presentation-for-clients.odp
│   └── Music

…​lara についても同様です。

Linuxの /home は、アパートに似ています。多くのユーザーが専用の部屋に分かれて、それぞれのスペースを使っています。共有設備と建物自体のメンテナンスは、管理者であるrootユーザーの責任です。

ホームを示す特別な相対パス

Linuxでターミナルセッションを開始すると、次のようなコマンドプロンプトが表示されます:

user@hostname ~ $

ここでのチルダ(~)は、ホームディレクトリ を示します。 ls コマンドを実行すると、見慣れた出力が行われることでしょう:

$ cd ~
$ ls
Documents

前述のファイルシステムと見比べて、自身の理解度を確認しましょう。

先ほどのたとえを思い出してみましょう。アパートに類似していて、/home には多くのユーザーが住んでいます。user の部屋と michael の部屋は別々です。これを確認するために、su コマンド(Switch User)を使ってユーザーを切り替えてみましょう。

user@hostname ~ $ pwd
/home/user
user@hostname ~ $ su - michael
Password:
michael@hostname ~ $ pwd
/home/michael

チルダ文字 ~ の意味はユーザー毎に異なります。 michael にとっての ~ は絶対パスで /home/michael ですし、 lara にとっての ~ は絶対パスで /home/lara になります。

ホームに相対なパス

ユーザーを切り替えない限り、~ は(同じパスを指し続けるので)便利に使えます。次の例について考察してみましょう。 user は新しいセッションを始めたばかりだとします:

$ ls
Documents
$ cd Documents
$ ls
Mission-Statement
Reports
$ cd Reports
$ ls
report2018.txt
$ cd ~
$ ls
Documents

ユーザーは必ず、そのホームディレクトリから新しいセッションを開始することに注意しましょう。この例では、user は Documents/Reports サブディレクトリに移動してから、cd ~ コマンドで出発点に戻っています。引数を付けない cd コマンドでも、同じことが行えます:

$ cd Documents/Reports
$ pwd
/home/user/Documents/Reports
$ cd
$ pwd
/home/user

~ について最後にもう一つ: チルダに続いて、他のユーザー名 を置くと、そのユーザーのホームディレクトリを示します。

$ ls ~michael
Documents
Music

この実行例は、michael がそのホームディレクトリの内容を読み出すことを許可した場合にのみ行えます。

michael が user のホームディレクトリにあるファイル report2018.txt を表示したいとします。michael がそうする許可を持っていれば、michael は次のように less コマンドを使用して表示できます。

$ less ~user/Documents/Reports/report2018.txt

文字 ~ を含むパスを、ホームに相対(relative-to-home)なパスと呼びます。(訳注: 日本ではこの呼び方はほとんど使われておらず、単に「チルダ」と呼ぶことが多い。)

隠しファイルと隠しディレクトリ

前のレッスンでは、ls コマンドの -a オプションを紹介しました。ls -a で表示される2つの特別な相対パス . と .. も紹介しました。-a オプションは、隠し ファイルと 隠し ディレクトリを含む、すべての ファイルとディレクトリをリスト表示します。

$ ls -a ~
.
..
.bash_history
.bash_logout
.bash-profile
.bashrc
Documents

隠しファイルと隠しディレクトリは、名前がピリオド(.)で始まります。ユーザーのホームディレクトリには、デフォルトで多くの隠しファイルが含まれてます。これらは、ユーザー独自の設定を調整するためのもので、経験豊富なユーザーが主に変更します。

長い形式オプション

ls コマンドには多くのオプションがあり、その動作を変更することができます。最も一般的なオプションの1つを見てみましょう。

$ ls -l
-rw-r--r-- 1 user staff      3606 Jan 13  2017 report2018.txt

-l オプションは 長い形式 の表示を行います。ファイルやディレクトリは、それぞれが1行全体を使用して表示されます。

-rw-r—​r--

ファイルの種別とそのパーミッションを示しています。通常ファイルの1文字目はハイフンで、ディレクトリは d で始まります。

1

ファイルのリンク数を示しています。

user staff

ファイルの所有者を示しています。ファイルの所有者は user であり、staff グループにも関連付けられています。

3606

ファイルのサイズを、バイト単位で表示しています。

Jan 13 2017

ファイルが最後に変更されたタイムスタンプを示しています。(訳注: システムの言語設定によって表記方法が異なります)

report2018.txt

ファイルの名前を示しています。

所有者、パーミッション、リンクについては、後の章で説明します。このように、長い形式の表示は、デフォルトの表示よりも多くの情報を含んでいます。

lsのその他のオプション

以下に、ls コマンドでもっとも良く使われるオプションを示します。例示するように、目的とする出力を得るために、複数のオプションを組み合わせることができます。

ls -lh

長い形式 と 人が読みやすい形式 を組み合わせると、ファイルサイズに K(キロバイト)や M(メガバイト)などのサフィックスが付けられます。

ls -d */

-d オプションは、ディレクトリの情報を表示しますが、その内容は表示しません。 */ と組み合わせると、ファイルを除外してサブディレクトリのみを表示します。

ls -lt

長い形式 と 変更日時 による並び替えを組み合わせます。直近に変更されたものを先頭に、最も昔に変更されたものを末尾に並びます。順序は、次に示すように逆にすることができます。

ls -lrt

長い形式 と 変更日時 による並び替えに加えて、逆順 を意味する -r を組み合わせたものです。この場合は、最も古いものが先頭に、最も新しいものが末尾にリストされます。変更日時 ではなく、アクセス日時 や、ステータス変更日時 による並び替えも行えます。

ls -lX

長い形式 と ファイル名のサフィックス による並び替えを組み合わせたものです。例えば、ファイル名が .txt で終わるものや、.jpg で 終わるものがまとめて表示されます。

ls -S

-S オプションは、-t (時刻)や -X (サフィックス)と同様に、ファイル サイズ で並び替えを行います。一番大きなファイルが先頭に、一番小さなファイルが末尾に来ます。サブディレクトリの内容は、並び替えに 含まれない ことに注意してください。

ls -R

-R オプションは、ls コマンドに 再帰的に 表示するように指示します。再帰とはどのようなことでしょうか。

Bashにおける再帰

再帰とは、“何かがその定義自体の中に含まれている” 状況を意味します。コンピュータサイエンスでは非常に重要な概念ですが、ここでの意味はもっと簡単です。先の例を考えてみましょう。

$ ls ~
Documents

user はホームディレクトリに居て、そのディレクトリには1つのサブディレクトリがあるのでした。ls は、そこにあるファイルとサブディレクトリを表示するだけで、サブディレクトリの内容は表示されませんでした。複数のサブディレクトリの内容を表示するために、このレッスンでは tree コマンドを使います。あいにくと、tree はLinuxのコアユーティリティではないので、常に使用できるとは限りません。以下の例では、tree の出力と、ls -R の出力を比べてみます。

$ tree /home/user
user
└── Documents
    ├── Mission-Statement
    └── Reports
        └── report2018.txt

$ ls -R ~
/home/user/:
Documents

/home/user/Documents:
Mission-Statement
Reports

/home/user/Documents/Reports:
report2018.txt

このように、再帰オプションを使用すると、はるかに長い出力が得られます。user のホームディレクトリで ls コマンドを実行すると、サブディレクトリに出会います。次に、そのサブディレクトリに入って、再度 ls コマンドを実行します。そこでは、Mission-Statement ファイルと、Reports というサブディレクトリに出会います。再び、そのサブディレクトリに入り、ls コマンドを再実行します。つまるところ、 ls -R を実行することは、Bashに “ここで ls を実行し、出会ったすべてのサブディレクトリでコマンドを繰り返せ” と伝えるようなものです。

再帰は、ディレクトリのコピーや削除などの、ファイルを変更するコマンドで特に重要です。たとえば、Documents サブディレクトリをコピーする場合、すべてのサブディレクトリも一緒にコピーするには、再帰的なコピーを指示する必要があります。

演習

  1. 下のファイル構造を見て、以下の3つの問いに答えましょう:

    /
    ├── etc/
    │   ├── network/
    │   │   └── interfaces/
    │   ├── systemd/
    │   │   ├── resolved.conf
    │   │   ├── system/
    │   │   ├── system.conf
    │   │   ├── user/
    │   │   └── user.conf
    │   └── udev/
    │       ├── rules.d
    │       └── udev.conf
    └── home/
        ├── lost+found/
        ├── user/
        │   └── Documents/
        └── michael/
            └── Music/
    • 現在の位置によらず、network ディレクトリに移動するコマンドは何ですか?

    • /etc/udev ディレクトリから、user が Documents ディレクトリに移動するコマンドは何ですか? 最短のパスを指定してください。

    • user が、michael の Music ディレクトリに移動するコマンドは何ですか? 最短のパスを指定してください。

  2. 下の ls -lh からの出力を見て、以下の2つの問いに答えましょう:

    drwxrwxrwx  5 eric eric  4.0K Apr 26  2011 China/
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0066.jpg
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0067.jpg
    -rwxrwxrwx  1 eric eric  1.6M Jul 18  2011 img_0074.jpg
    -rwxrwxrwx  1 eric eric  1.8M Jul 18  2011 img_0075.jpg
    -rwxrwxrwx  1 eric eric   46K Jul 18  2011 scary.jpg
    -rwxrwxrwx  1 eric eric  469K Jan 29  2018 Screenshot from 2017-08-13 21-22-24.png
    -rwxrwxrwx  1 eric eric  498K Jan 29  2018 Screenshot from 2017-08-14 21-18-07.png
    -rwxrwxrwx  1 eric eric  211K Jan 29  2018 Screenshot from 2018-01-06 23-29-30.png
    -rwxrwxrwx  1 eric eric  150K Jul 18  2011 tobermory.jpg
    drwxrwxrwx  6 eric eric  4.0K Apr 26  2011 Tokyo/
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 081.jpg
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 085.jpg
    -rwxrwxrwx  1 eric eric  944K Jul 18  2011 Toronto 152.jpg
    -rwxrwxrwx  1 eric eric  728K Jul 18  2011 Toronto 173.jpg
    drwxrwxrwx  2 eric eric  4.0K Jun  5  2016 Wallpapers/
    • ls -lrS コマンドを実行すると、最初に来るファイルはどれですか?

    • ls -ad */ コマンドの出力がどうなるかを説明してください。

発展演習

  1. サブディレクトリがあるディレクトリで、ls -lh コマンドを実行します。表示されたディレクトリのサイズに着目します。それらのファイルサイズは正しいでしょうか? 表示内容は、そのディレクトリ内のすべてのファイルの内容を正確に示していますか?

  2. 新しいコマンド du -h を使ってみましょう。このコマンドを実行して、その出力を説明してください。

  3. 多くのLinuxシステムでは、ll を入力すると ls -l を入力したのと同じ出力が得られます。ただし、ll はコマンドでは ありません 。たとえば、man ll と入力しても、マニュアル項目がないというメッセージが表示されます。これは、別名(エイリアス) の例です。別名の便利な点を挙げましょう。

まとめ

このレッスンでは以下の事柄を学習しました:

  • Linuxのそれぞれのユーザーは、ホームディレクトリを持つこと

  • 現在のユーザーのホームディレクトリは、~ で表されること

  • ~ を含むパスを、 ホームに相対 (relative-to-home)なパスと呼ぶこと(訳注: 日本ではほとんど使われていません)

また、ls コマンドの動作を調整するよく使われるオプションについても学びました。

-a (all)

隠しファイルや隠しディレクトリを含む、すべてを表示します

-d (directories)

ディレクトリの内容ではなく、ディレクトリ自体の情報を表示します

-h (human readable)

ファイルサイズを、人間が読みやすい形式で表示します

-l (long list)

ファイルやディレクトリ毎に1行を使い、多くの情報を表示します

-r (reverse)

並び替えの順序を反転します

-R (recursive)

サブディレクトリに含まれるファイルを含む、すべてのファイルを表示します

-S (size)

ファイルサイズで並べ替えます

-t (time)

更新日時で並び替えます

-X (eXtension)

ファイル名のサフィックス毎に並び替えます

演習の解答

  1. 下のファイル構造を見て、以下の3つの問いに答えましょう:

    /
    ├── etc/
    │   ├── network/
    │   │   └── interfaces/
    │   ├── systemd/
    │   │   ├── resolved.conf
    │   │   ├── system/
    │   │   ├── system.conf
    │   │   ├── user/
    │   │   └── user.conf
    │   └── udev/
    │       ├── rules.d
    │       └── udev.conf
    └── home/
        ├── lost+found/
        ├── user/
        │   └── Documents/
        └── michael/
            └── Music/
    • 現在の位置によらず、network ディレクトリに移動するコマンドは何ですか?

      cd /etc/network
    • /etc/udev ディレクトリから、user が Documents ディレクトリに移動するコマンドは何ですか? 最短のパスを指定してください。

      cd ~/Documents
    • user が、michael の Music ディレクトリに移動するコマンドは何ですか? 最短のパスを指定してください。

      cd ~michael/Music
  2. 下の ls -lh からの出力を見て、以下の2つの問いに答えましょう。ディレクトリは先頭の文字が d で表示されることに気をつけましょう。

    drwxrwxrwx  5 eric eric  4.0K Apr 26  2011 China/
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0066.jpg
    -rwxrwxrwx  1 eric eric  1.5M Jul 18  2011 img_0067.jpg
    -rwxrwxrwx  1 eric eric  1.6M Jul 18  2011 img_0074.jpg
    -rwxrwxrwx  1 eric eric  1.8M Jul 18  2011 img_0075.jpg
    -rwxrwxrwx  1 eric eric   46K Jul 18  2011 scary.jpg
    -rwxrwxrwx  1 eric eric  469K Jan 29  2018 Screenshot from 2017-08-13 21-22-24.png
    -rwxrwxrwx  1 eric eric  498K Jan 29  2018 Screenshot from 2017-08-14 21-18-07.png
    -rwxrwxrwx  1 eric eric  211K Jan 29  2018 Screenshot from 2018-01-06 23-29-30.png
    -rwxrwxrwx  1 eric eric  150K Jul 18  2011 tobermory.jpg
    drwxrwxrwx  6 eric eric  4.0K Apr 26  2011 Tokyo/
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 081.jpg
    -rwxrwxrwx  1 eric eric  1.4M Jul 18  2011 Toronto 085.jpg
    -rwxrwxrwx  1 eric eric  944K Jul 18  2011 Toronto 152.jpg
    -rwxrwxrwx  1 eric eric  728K Jul 18  2011 Toronto 173.jpg
    drwxrwxrwx  2 eric eric  4.0K Jun  5  2016 Wallpapers/
    • ls -lrS コマンドを実行すると、最初に来るファイルはどれですか?

      3つのディレクトリはいずれもサイズが(ディレクトリとして)最小の4.0Kです。デフォルトで ls はディレクトリをアルファベット順に並べます。正解はファイル scary.jpg です。

    • ls -ad */ コマンドの出力がどうなるかを説明してください。

      このコマンドは、隠しディレクトリを含むすべてのサブディレクトリを表示します。

発展演習の解答

  1. サブディレクトリがあるディレクトリで、ls -lh コマンドを実行します。表示されたディレクトリのサイズに着目します。それらのファイルサイズは正しいでしょうか? 表示内容は、そのディレクトリ内のすべてのファイルの内容を正確に示していますか?

    いいえ、正しくありません。各ディレクトリのファイルサイズは、4096バイトと表示されています。これは、ディレクトリが抽象化されていて、実際のディスク上では木構造として存在していないからです。一覧におけるディレクトリは、ファイルのリストへの リンク が表示されているのです。これらのリンクのサイズは、少なくとも4096バイトになります。

  2. 新しいコマンド du -h を使ってみましょう。このコマンドを実行して、その出力を説明してください。

    du コマンドは、すべてのファイルとディレクトリのリストを生成し、それぞれのサイズを示します。一例として、du -s は、現在の位置から、すべてのファイル、ディレクトリ、サブディレクトリのサイズを表示します。

  3. 多くのLinuxシステムでは、ll を入力すると ls -l を入力したのと同じ出力が得られます。ただし、ll はコマンドでは ありません 。たとえば、man ll と入力しても、マニュアル項目がないというメッセージが表示されます。これは、別名(エイリアス) の例です。別名の便利な点を挙げましょう。

    ll は ls -l の エイリアス です。 Bashでは、エイリアスを使用して、よく使用されるコマンドを簡略化できます。 Linuxでは ll が定義されていることが多いですが、独自のエイリアスを作成することもできます。

Linux Professional Insitute Inc. All rights reserved. 学習資料をご覧ください: https://learning.lpi.org
ここでの作成物は、Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Licenseの下でライセンスされています。

次のレッスン

2.4 ファイルの作成、移動と削除 (2.4 レッスン 1)

次のレッスンを読む

Linux Professional Insitute Inc. All rights reserved. 学習資料をご覧ください: https://learning.lpi.org
ここでの作成物は、Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Licenseの下でライセンスされています。

LPIは非営利団体です。

© 2023 Linux Professional Institute(LPI)は、オープンソースプロフェッショナル向けのグローバルな認定基準およびキャリアサポート組織です。200,000人以上の認定保持者を擁する、世界初かつ最大のベンダー中立Linuxおよびオープンソース認定機関です。LPIは180か国以上で認定プロフェッショナルを擁し、複数の言語で試験を実施し、何百ものトレーニングパートナーを擁しています。

私たちの目的は、オープンソースの知識とスキルの認定資格を世界中からアクセスできるようにすることで、誰にとっても経済的で創造的な機会を可能にすることです。

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • お問い合わせ
  • 個人情報とCookieポリシー

間違いを見つけたり、このページを改善したいですか? 私たちに知らせてください。.

© 1999–2023 The Linux Professional Institute Inc. All rights reserved.