Linux Professional Institute Learning Logo.
main contentにスキップ
  • ホーム
    • 全てのリソース
    • LPI学習教材
    • コントリビューターになる
    • Publishing Partners
    • Publishing Partnerになる
    • About
    • FAQ
    • コントリビューター
    • Roadmap
    • 連絡先
  • LPI.org
2.1 レッスン 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.1 コマンドラインの基本
  3. 2.1 レッスン 2

2.1 レッスン 2

Certificate:

Linux Essentials

Version:

1.6

Topic:

2 Linuxでのやり方を見つける

Objective:

2.1 コマンドラインの基本

Lesson:

2 of 2

はじめに

すべてのシェルは、シェルセッションの中に一連のステータス情報を管理しています。この実行時情報はセッションの途中で変更されることがあり、シェルの動作に影響を与えます。また、このデータはシステム構成を決定するプログラムによっても使用されます。このデータのほとんどは、このレッスンで取り上げる、いわゆる 変数 に保存されます。

変数

変数は、テキストや数値などのデータを保存する記憶するものです。セットした値を後で参照することができます。変数には名前が付けられていて、内容が変更されてもその名前でアクセスすることができます。変数は、ほとんどのプログラミング言語で非常に一般的な道具です。

Linuxのほとんどのシェルでは、2種類の変数があります:

ローカル変数(シェル変数)

この種の変数は、現在のシェルでのみ使用することができます。ローカル変数を作成した後に、シェルから別のプログラムを実行すると、そのプログラムは変数にアクセスすることができません。サブプロセスに引き継がれないことから、これらを ローカル変数 と呼びます。

環境変数

環境変数は、シェルセッションと、そのシェルセッションから生成されたサブプロセスの両方で利用できます。実行するコマンドに設定データを渡すために、変数を使用することができます。プログラムがこれらの変数にアクセスできることから、 環境変数 と呼ばれています。環境変数の名前は、大文字で書くのが慣例です (例: PATH、DATE、USER)。デフォルトの環境変数のセットは、ユーザのホームディレクトリや、端末種類などに関する情報を提供します。すべての環境変数の集合そのものを 環境 と呼ぶこともあります。

このように、変数の種類によって有効範囲の スコープ(scope/範囲)が異なります。

Note

変数は永続的ではありません。それらを設定したシェルを閉じると、すべての変数とその内容も無くなります。ほとんどのシェルでは、新しいシェルが開始されるたびに読み取られる、変数設定を含む構成ファイルがあります。永続的に設定する必要がある変数は、これらの構成ファイルの1つに追加する必要があります。

変数の操作

システム管理者は、ローカル変数と環境変数の両方を作成、変更、または削除する必要があります。

ローカル変数の操作

ローカル変数をセットするには、=(イコール)オペレータを使います。単純な割り当てでは、ローカル変数が作成されます:

$ greeting=hello
Note

= オペレーターの前後に空白をおいては行けません。

echo コマンドを使用すると、任意の変数を表示できます。コマンドは、引数として指定されたテキストを表示します。

$ echo greeting
greeting

変数の値にアクセスするには、変数名の前に $(ドル記号)を置きます。

$ echo $greeting
hello

このように、変数が作成されています。次に、別のシェルを開いて、同じ変数の内容を表示してみます。

$ echo $greeting

何も表示されません。これは、変数が特定のシェルにのみ存在していることを示しています。

変数が実際にローカル変数であることを確認するには、新しいプロセスを生成して、そのプロセスが変数にアクセスできるかどうかを確認します。別のシェルを起動して、そのシェルで echo コマンドを実行することで確認できます。新しいシェルは新しいプロセスで実行されますが、親プロセスからローカル変数を継承しません。

$ echo $greeting world
hello world
$ bash -c 'echo $greeting world'
world
Note

上記の例では、(echoコマンドを)シングルクオートで囲んで下さい。

変数を削除するには、unset コマンドを使用します:

$ echo $greeting
hey
$ unset greeting
$ echo $greeting
Note

unset コマンドには、引数に変数名を指定します。つまり、変数名に $ を付けてはいけません。 $ を付けると変数が展開されるので、変数の名前ではなくその値が unset に渡されることになってしまいます。

グローバル変数(環境変数)の操作

変数をサブプロセスでも使用できるようにするには、 export コマンドを使用して、ローカル変数を環境変数に転換します。コマンドに変数名を指定して実行すると、その変数がシェルの環境に追加されます。

$ greeting=hello
$ export greeting
Note

繰り返しますが、 export コマンドを実行する時に、変数の値ではなく変数名を渡したいのですから、変数名に `$`を付けてはいけません。

環境変数を作成する簡単な方法は、上記の方法を組み合わせて、コマンドの引数で変数の値を割り当てることです。

$ export greeting=hey

もう一度、サブプロセスから変数にアクセスできることを確認してみましょう:

$ export greeting=hey
$ echo $greeting world
hey world
$ bash -c 'echo $greeting world'
hey world

環境変数を使用するもう一つの方法は、コマンドの手前に環境変数を指定することです。タイムゾーンを保持する環境変数 TZ を使って確認してみましょう。 date コマンドは、表示する時刻のタイムゾーンを決定するために、この環境変数を使います。

$ TZ=EST date
Thu 31 Jan 10:07:35 EST 2019
$ TZ=GMT date
Thu 31 Jan 15:07:35 GMT 2019

env コマンドで、環境変数の一覧を表示することができます。

PATH 変数

PATH 変数は、Linuxシステムにおける最も重要な環境変数のひとつです。これには、Linuxシェルからコマンドと見なされる実行可能プログラムを格納したディレクトリのリストを、コロンで区切って格納します。

$ echo $PATH
/home/user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

変数にディレクトリを追加するには、区切りのコロン( : )も指定します。

$ PATH=$PATH:new_directory

例を示します:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ PATH=$PATH:/home/user/bin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin

この例では、PATH に割り当てる新しい値の中に $PATH が含まれています。 $PATH は、コマンド実行の前に展開されて、変数の元の内容が保持されることになります。もちろん、割り当ての際に、他の変数を使用することもできます。

$ mybin=/opt/bin
$ PATH=$PATH:$mybin
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/home/user/bin:/opt/bin

PATH 変数は、コマンドラインで作業するときに必要不可欠なものなので、取り扱いには注意が必要です。次の PATH 変数の例を見てみましょう:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

which コマンドの引数にコマンド名を指定すると、シェルがそのコマンドを呼び出す方法を見ることができます。例えば、 nano コマンドがどこにあるのかをを見てみましょう:

$ which nano
/usr/bin/nano

例に示すように、 nano の実行可能形式は、 /usr/bin ディレクトリにあります。変数からディレクトリを削除して、コマンドがまだ使えるかを見てみましょう:

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games

もう一度、 nano コマンドを探します:

$ which nano
which: no nano in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin:/usr/games)

例に示すように、コマンドが見つからないため、実行できません。エラーメッセージには、コマンドが見つからなかった理由と検索した場所も説明されています。 ディレクトリを元に戻して、再度コマンドを実行してみましょう:

$ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$ which nano
/usr/bin/nano

今度はまた、コマンドが実行できました。

Tip

PATH に指定する要素の順番が、探す順序を決めています。パスをたどって、最初に一致した実行可能形式が実行されます。

演習

  1. number というローカル変数を作ってみましょう。

  2. ORDER という環境変数を、2通りの方法のいずれかで作ってみましょう。

  3. 変数の名前とその値の両方を表示しましょう。

  4. 先に作った変数のスコープは何ですか?

発展演習

  1. ローカル変数 nr_files を作成して、 /etc/passwd ファイルの行数を格納してみましょう。ヒント: コマンド wc と「コマンド置換」を調べましょう。引用符を忘れないでください。

  2. 環境変数 ME を作成して、変数 USER の値を割り当てましょう。

  3. ME に、 : をデリミター(区切り記号)として、 HOME 変数の値を追加しましょう。 ME 変数の値を表示します。

  4. 上記の日付例を使い、 today という変数を作り、あるタイムゾーンの日付を割り当てましょう。

  5. 続いて、 today1 という変数を作り、システムの日付を割り当てましょう。

まとめ

このレッスンでは、次のことを学びました。

  • 変数の種類

  • 変数の作り方

  • 変数の操作方法

演習で使用したコマンド:

env

現在の環境を表示する

echo

テキストを出力する

export

ローカル変数をサブプロセスから利用可能とする

unset

変数を削除する

演習の解答

  1. number というローカル変数を作ってみましょう。

    $ number=5
  2. ORDER という環境変数を、2通りの方法のいずれかで作ってみましょう。

    $ export ORDER=desc
  3. 変数の名前とその値の両方を表示しましょう。

    $ echo number
    number
    $ echo ORDER
    ORDER
    $ echo $number
    5
    $ echo $ORDER
    desc
  4. 先に作った変数のスコープは何ですか?

    • 変数 number のスコープは、現在のシェルです

    • 変数 ORDER のスコープは、現在のシステムです

発展演習の解答

  1. ローカル変数 nr_files を作成して、 /etc/passwd ファイルの行数を格納してみましょう。ヒント: コマンド wc と「コマンド置換」を調べましょう。引用符を忘れないでください。

    $ nr_files=`wc -l /etc/passwd`
  2. 環境変数 ME を作成して、変数 USER の値を割り当てましょう。

    $ export ME=$USER
  3. ME に、 : をデリミター(区切り記号)として、 HOME 変数の値を追加しましょう。 ME 変数の値を表示します。

    $ ME=$ME:$HOME
    $ echo $ME
    user:/home/user
  4. 上記の日付例を使い、 today という変数を作り、あるタイムゾーンの日付を割り当てましょう。

    以下にはタイムゾーンとしてGMTとESTを例に挙げていますが、有効なタイムゾーンであれば何でも構いません。

    $ today=$(TZ=GMT date)
    $ echo $today
    Thu 31 Jan 15:07:35 GMT 2019

    または

    $ today=$(TZ=EST date)
    $ echo $today
    Thu 31 Jan 10:07:35 EST 2019
  5. 続いて、 today1 という変数を作り、システムの日付を割り当てましょう。

    システムが`GMT`にあることを仮定します:

    $ today1=$(date)
    $ echo $today1
    Thu 31 Jan 10:07:35 EST 2019

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

次のレッスン

2.2 コマンドラインのヘルプ機能の利用 (2.2 レッスン 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.