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

2.1 レッスン 1

Certificate:

Linux Essentials

Version:

1.6

Topic:

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

Objective:

2.1 コマンドラインの基本

Lesson:

1 of 2

はじめに

最近の Linux ディストリビューションには様々なグラフィカルユーザインタフェースがありますが、管理者はコマンドラインや シェル(shell)と呼ばれるものを操作できる必要があります。シェルは、オペレーティングシステムとユーザの間で、テキストベースのやりとりを行うプログラムです。通常はテキストモードのプログラムで、ユーザからの入力を読み取って、それをシステムへのコマンドとして解釈します。

Linux にはいくつかの異なるシェルがあり、ほんの一部を紹介します。

  • Bash(Bourne-again shell/バッシュ)

  • Cシェル(csh ないし tcsh、csh改良版)

  • ksh(Korn shell/コーンシェル)

  • zsh(ズィーシェル)

Linuxで最も一般的なのはBashです。このレッスンの例や演習では、これを使っています。

対話型シェルを使用する場合、いわゆるプロンプトに対して、ユーザがコマンドを入力します。Linuxディストリビューションごとにデフォルトのプロンプトは少し異なりますが、概ね以下のような構造になっています。

ユーザー名@ホスト名 作業ディレクトリ 種別

Ubuntu や Debian GNU/Linux では、一般ユーザーは次のようになります:

carol@mycomputer:~$

スーパーユーザー(root)のプロンプトは次のようになります:

root@mycomputer:~#

CentOS や Red Hat Linux では、一般ユーザーは次のようになります:

[dave@mycomputer ~]$

そして、スーパーユーザーでは次のようになります:

[root@mycomputer ~]#

それぞれの構成要素を説明しましょう:

ユーザー名

シェルを実行しているユーザーの名前(ログイン名)です。

ホスト名

シェルを実行しているホストの名前です。 hostname というコマンドがあり、システムのホスト名を表示や設定できます。

作業ディレクトリ

シェルが「居る」ディレクトリです。文字 ~ は、シェルがユーザーのホームディレクトリに居ることを意味しています。

種別

文字 $ は、一般ユーザーがシェルを実行していることを示します。

文字 # は、スーパーユーザー( root )がシェルを実行していることを示します。

以下の例では特別な権限は必要ないので、特権のないプロンプトを使用します。簡潔にプロンプトとして $ のみを使用します。

コマンドラインの構造

ほとんどのコマンドは、次のような基本的な構造のコマンドラインを使います。

コマンド  [オプション/パラメータ...]  [引数...]

次のコマンドを例にとりあげます:

$ ls -l /home

それぞれの構成要素の目的を説明しましょう:

コマンド

ユーザーが実行しようとするプログラムです 〜 上記の例では ls です。

オプション/パラメータ

コマンドの振る舞いを変更するための “スイッチ” です。 上記の例では -l です。オプションには、短い表記方法と、長い表記方法があります。例えば、-l は --format=long と同じです。

短い表記方法では、複数のオプションを1つにまとめることができ、複数の文字を続けて指定できます。例えば、以下に示すコマンドは、すべて同じ働きをします。

$ ls -al
$ ls -a -l
$ ls --all --format=long
引数

ファイル名やパスなど、プログラムが必要とするデータです。上記の例では、 /home です。

構成要素の内、必ず必要なのは「コマンド」だけです。他の構成要素はプログラムによって異なり、無い場合もありますし、特定のオプションやパラメータ、あるいは引数を必要とするものもあります。

Note

ほとんどのコマンドは --help パラメータを指定して実行すると、利用可能なコマンドの短い概要を表示します。Linux コマンドについてもっと詳しく知るための方法を後述します。

コマンド種別

シェルには2種類のコマンドがあります:

内蔵(組み込み)コマンド

シェル自体に組み込まれているコマンドで、30前後あります。シェルの内部で処理が行なわれます(例: cd、set、export)。

外部コマンド

それぞれのファイルに格納されているコマンドです。通常は、バイナリプログラムやスクリプトです。シェルに組み込まれていないコマンドを実行するときに、シェルは PATH 変数を使って、コマンドと同じ名前の実行可能ファイルを探します。ディストリビューションのパッケージマネージャでインストールされたプログラムだけではなく、ユーザは独自の外部コマンドを作成することもできます。

type コマンドは、コマンドの種別を表示します。

$ type echo
echo is a shell builtin
$ type man
man is /usr/bin/man

クオーティング(Quoting)

Linuxユーザは、様々な方法でファイルや変数を作成したり操作できる必要があります。短いファイル名や1ワードを扱う場合には簡単ですが、例えばスペースや特殊文字、変数などが含まれている場合には複雑になります。シェルにはクォート(quote/引用)と呼ばれる機能があり、このようなデータを様々な種類のクォート(" ", ' ') を使ってカプセル化します。Bash では、3種類のクオート(引用符)があります。

  • ダブルクオート

  • シングルクオート

  • エスケープ文字

たとえば、次のコマンドは、クオーティングにより動作が異なっています:

$ TWOWORDS="two words"
$ touch $TWOWORDS
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 two
-rw-r--r-- 1 carol carol     0 Mar 10 14:56 words
$ touch "$TWOWORDS"
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
$ touch '$TWOWORDS'
$ ls -l
-rw-r--r-- 1 carol carol     0 Mar 10 15:00 '$TWOWORDS'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  two
-rw-r--r-- 1 carol carol     0 Mar 10 14:58 'two words'
-rw-r--r-- 1 carol carol     0 Mar 10 14:56  words
Note

TWOWORDS= の行は、ユーザーが自分で作成したBash変数です。変数は後で紹介します。これは、クオーティングが変数の出力にどのように影響するかを示しています。

ダブルクオート

ダブルクオート(二重引用符)は、挟まれているテキスト("...")を、通常の文字として解釈するようにシェルに指示します。$(ドル記号)、\(バックスラッシュ)、および `(バッククォート)を除いて、すべての特殊文字は意味を失います。つまり、変数、コマンド置換、および算術式を使用できます。(訳注: 日本語環境では、バッククオート \ が円マーク ¥ で表示されます。使用しているキーボードやフォント、OSの言語設定によって異なります)。

例えば、変数 $USER は、ダブルクオートの影響を受けません:

$ echo I am $USER
I am tom
$ echo "I am $USER"
I am tom

一方、空白文字は、引数の区切りとしての意味を失います:

$ touch new file
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 file
-rw-rw-r-- 1 tom students 0 Oct 8 15:18 new
$ touch "new file"
$ ls -l
-rw-rw-r-- 1 tom students 0 Oct 8 15:19 new file

最初の例では touch コマンドは2つのファイルを別々に作成し、2番目の例ではコマンドが2つの単語をひとつの引数として解釈するため、1つのファイルのみが作成されます。ただし、ファイル名に空白文字を使用することはお勧めできません。代わりに、アンダースコア( _ )やドット( . )を使用するとよいでしょう。

シングルクオート

シングルクオート(一重引用符)には、二重引用符のような例外はありません。それらは、すべての文字から特別な意味を取り消します。前述の最初の例を1つ取り上げましょう。

$ echo I am $USER
I am tom

シングルクオートで囲むと、違う結果になります:

$ echo 'I am $USER'
I am $USER

今度は、変数置換を行わずに、そのままの文字列を表示しました。

エスケープ文字

Bashでは、 エスケープ文字 を使用して、文字から特別な意味を取り除くことができます。環境変数 $USER の例に戻りましょう。

$ echo $USER
carol

デフォルトでは、変数の内容がターミナルに表示されます。ただし、ドル記号の前にバックスラッシュ( \ )を付けると、ドル記号の特別な意味が無効になります。これにより、Bashは変数の値をコマンドを実行しているユーザー名に展開せず、代わりに変数名を文字通りに解釈します。

$ echo \$USER
$USER

シングルクオートを使用して、これと同様の結果を得ることができることを思い出しましょう。シングルクオートに囲まれた内容をそのまま出力するのでした。エスケープキャラクターの場合は、続く文字が持つ特別な意味を無視するようにBashに指示します。

演習

  1. 行の構成要素を、コマンド、オプション(パラメータ)、引数に分類しましょう:

    • 例: cat -n /etc/passwd

      コマンド:

      cat

      オプション:

      -n

      引数:

      /etc/passwd

    • ls -l /etc

      コマンド:

      オプション:

      引数:

    • ls -l -a

      コマンド:

      オプション:

      引数:

    • cd /home/user

      コマンド:

      オプション:

      引数:

  2. 以下のコマンドの種類を答えてください:

    例:

    pwd

    シェル内蔵

    mv

    外部コマンド

    cd

    cat

    exit

  3. クオートを展開して、次のコマンドの結果を考えましょう:

    例:

    echo "$HOME is my home directory"

    echo /home/user is my home directory

    touch "$USER"

    touch 'touch'

発展演習

  1. Bashにおいて、ブレース( { } )展開(Bashのマニュアルの Brace expansion を参照のこと)を使って、プレフィックス game に1〜5の数値を続けた名前のファイルを、1つのコマンドだけで作成しましょう(game1、game2、…)。

  2. 特別な意味を持つ文字(Bashマニュアルの パス名の拡張(Pathname Expansion)を参照のこと)を使った1つのコマンドで、前問で作成した5つのファイルをすべて削除しましょう。

  3. 2つのコマンドを相互に作用させる方法はありますか? それは何ですか?

​

まとめ

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

  • Linuxシェルの概念

  • Bashシェルとは何か

  • コマンドラインの構成

  • クオーティングの紹介

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

bash

Linuxシステムで、最もポピュラーなシェル

echo

ターミナルにテキストを出力する

ls

ディレクトリの内容を一覧表示する

type

指定したコマンドがどのように実行されるかを表示する

touch

空のファイルを作成する。もしくは、既存ファイルの更新時刻を更新する

hostname

システムのホスト名を表示または変更する

演習の解答

  1. 行の構成要素を、コマンド、オプション(パラメータ)、引数に分類しましょう:

    • ls -l /etc

      コマンド:

      ls

      オプション:

      -l

      引数:

      /etc

    • ls -l -a

      コマンド:

      ls

      オプション:

      -l -a

      引数:

    • cd /home/user

      コマンド:

      cd

      オプション:

      引数:

      /home/user

  2. 以下のコマンドの種類を答えてください:

    cd

    シェル内蔵

    cat

    外部コマンド

    exit

    シェル内蔵

  3. クオートを展開して、次のコマンドの結果を考えましょう:

    touch "$USER"

    ユーザー名のファイルが作られる

    touch 'touch'

    touch というファイルが作られる

発展演習の解答

  1. Bashにおいて、ブレース( { } )展開(Bashのマニュアルの Brace expansion を参照のこと)を使って、プレフィックス game に1〜5の数値を続けた名前のファイルを、1つのコマンドだけで作成しましょう(game1、game2、…)。

    1つのコマンド内で、範囲を使用して 1〜5の数字を表現することができます。

    $ touch game{1..5}
    $ ls
    game1  game2  game3  game4  game5
  2. 特別な意味を持つ文字(Bashマニュアルの パス名の拡張(Pathname Expansion)を参照のこと)を使った1つのコマンドで、前問で作成した5つのファイルをすべて削除しましょう。

    すべてのファイルは game から始まり、1文字(この場合は数字の1〜5)で終わります。ファイル名の最後の一文字を示すために、特別な文字 ? を使用します。

    $ rm game?
  3. 2つのコマンドを相互に作用させる方法はありますか? それは何ですか?

    あります。例えば、ひとつのコマンドがデータをファイルに出力し、他のコマンドで処理することができます。Linuxでは、あるコマンドの出力をまとめて、他のコマンドの入力とすることができます。これを パイプ と呼び、後のレッスンで学びます。

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

次のレッスン

2.1 コマンドラインの基本 (2.1 レッスン 2)

次のレッスンを読む

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.