#Bash の基本構文

この章では、Bash の最も基本的な構文を紹介します。

エコーコマンド

以下の例では「echo」コマンドが多用されるため、ここではこのコマンドを紹介します。

echo コマンドの機能は画面上に 1 行のテキストを出力することであり、コマンドのパラメータはそのまま出力できます。

$ エコーハローワールド
こんにちは世界

上記の例では、echoのパラメータはhello worldなので、そのまま出力できます。

複数行のテキストを出力する場合は、改行を含めます。この場合、複数行のテキストを引用符で囲む必要があります。

$ echo "<HTML>
    <頭>
          <TITLE>ページタイトル</TITLE>
    </HEAD>
    <本体>
          ページ本文。
    </BODY>
</HTML>"

上記の例では、「echo」は複数行のテキストをそのまま出力できます。

-n パラメータ

デフォルトでは、echo によって出力されるテキストには最後に復帰文字が含まれます。 -n パラメータを使用すると、最後のキャリッジ リターン文字をキャンセルして、次のプロンプトが出力内容に続くようにすることができます。

$ echo -n hello world
ハローワールド$

上の例では、「world」の直後に次の行のプロンプト「$」が続きます。

$ エコー a; エコー b
ある
b

$ echo -na;echo b
腹筋

上の例では、「-n」パラメータを使用すると、2 つの「echo」コマンドの出力を連結して同じ行に表示できます。

-e パラメータ

-e パラメータは、引用符 (二重引用符と一重引用符) 内の特殊文字 (改行文字 \n など) を解釈します。 -e パラメータを使用しない場合、つまりデフォルトでは、引用符は特殊文字を通常の文字に変換し、echo は特殊文字を解釈せずにそのまま出力します。

$ echo "Hello\nWorld"
こんにちは\n世界

# 二重引用符
$ echo -e "Hello\nWorld"
こんにちは
世界

# 一重引用符の場合
$ echo -e 'Hello\nWorld'
こんにちは
世界

上記のコードでは、「-e」パラメータにより「\n」が改行文字として解釈され、出力コンテンツに改行が表示されます。

コマンド形式

コマンドライン環境では、主にシェルコマンドを利用して各種操作を実行します。シェルコマンドは基本的に以下のような形式になります。

$ コマンド [ arg1 ... [ argN ]]

上記のコードでは、「command」は特定のコマンドまたは実行可能ファイル、「arg1 ... argN」はコマンドに渡されるパラメータであり、これらはオプションです。

$ls -l

上記のコマンドでは、「ls」がコマンド、「-l」がパラメータです。

一部のパラメータはコマンド設定項目です。これらの設定項目は通常、上記の -l などの接続行で始まります。同じ構成項目には、長い形式と短い形式の 2 つの形式があることがよくあります。たとえば、-l は短い形式で、--list は長い形式です。それらの機能はまったく同じです。短い形式は手動入力に便利で、長い形式は一般にスクリプトで使用され、読みやすく、それ自体の意味を説明するのに役立ちます。

# 短い形式
$ls -r

# 長い形式
$ ls --リバース

上記のコマンドでは、「-r」は短い形式、「--reverse」は長い形式であり、まったく同じ効果があります。前者は入力しやすく、後者は理解しやすいです。

単一の Bash コマンドは通常 1 行であり、ユーザーが Enter キーを押すと実行が開始されます。一部のコマンドは比較的長いため、複数行で記述すると読み取りと編集に役立ちます。この場合、各行の最後にバックスラッシュを追加すると、Bash は現在の行とともに次の行を解釈します。

$エコーフーバー

# に相当
$ エコー foo \
バー

空間

Bash は、スペース (または Tab キー) を使用して、さまざまな引数を区別します。

$ コマンド foo バー

上記のコマンドでは、「foo」と「bar」の間にスペースがあるため、Bash はこれらが 2 つのパラメータであると認識します。

引数の間に複数のスペースがある場合、Bash は余分なスペースを自動的に無視します。

$ echo これはテストです
これはテストです

上記のコマンドでは、「a」と「test」の間に複数のスペースがあり、Bash は余分なスペースを無視します。

セミコロン

セミコロン (;) はコマンドの終端文字であり、複数のコマンドを 1 行に配置できます。前のコマンドの実行が完了した後、2 番目のコマンドが実行されます。

$ クリア;

上記の例では、Bash は最初に clear コマンドを実行し、実行が完了した後に ls コマンドを実行します。

セミコロンを使用する場合、最初のコマンドが成功したか失敗したかに関係なく、2 番目のコマンドは常に最初のコマンドの後に実行されることに注意してください。

##コマンド組み合わせ記号 && および ||

セミコロンに加えて、Bash には 2 つのコマンド コンビネータ &&|| も用意されており、これにより複数のコマンド間の後続の関係をより適切に制御できるようになります。

コマンド 1 && コマンド 2

上記のコマンドの意味は、Command1 コマンドが正常に実行された場合、引き続き Command2 コマンドを実行することです。

コマンド 1 || コマンド 2

上記のコマンドの意味は、Command1 コマンドの実行が失敗した場合、Command2 コマンドの実行を続行することです。

以下にいくつかの例を示します。

$ cat ファイルリスト.txt; ls -l ファイルリスト.txt

上記の例では、cat コマンドの実行が終了する限り、成功または失敗に関係なく、ls コマンドは実行され続けます。

$ cat ファイルリスト.txt && ls -l ファイルリスト.txt

上記の例では、cat コマンドが正常に実行された場合にのみ、ls コマンドが実行され続けます。 cat が実行に失敗した場合 (たとえば、ファイル flielist.txt が存在しない場合)、ls コマンドは実行されません。

$ mkdir foo || バー

上記の例では、mkdir foo コマンドの実行が失敗した場合 (たとえば、foo ディレクトリがすでに存在する場合) のみ、mkdir bar コマンドが実行され続けます。 mkdir foo コマンドが正常に実行された場合、bar ディレクトリは作成されません。

コマンドを入力します

Bash 自体には多くの組み込みコマンドがあり、外部プログラムを実行することもできます。コマンドが組み込みコマンドであるか外部プログラムであるかをどのようにして知ることができますか?

type コマンドは、コマンドのソースを決定するために使用されます。

$タイプエコー
echo はシェル組み込みです
$タイプls
ls はハッシュ化されます (/bin/ls)

上記のコードでは、type コマンドは、echo が内部コマンドであり、ls が外部プログラム (/bin/ls) であることを示しています。

type コマンド自体も組み込みコマンドです。

$タイプ タイプ
タイプはシェル組み込みです

コマンドのすべての定義を表示したい場合は、type コマンドの -a パラメータを使用できます。

$ type -a エコー
エコーはシェルに組み込まれています
echo は /usr/bin/echo です
エコーは/bin/echoです

上記のコードは、「echo」コマンドが組み込みコマンドであり、対応する外部プログラムでもあることを示しています。

type コマンドの -t パラメータは、コマンドのタイプ (エイリアス (alias)、キーワード (keyword)、関数 (function)、組み込みコマンド (builtin)、およびファイル (file) を返すことができます。

$ type -t bash
ファイル
$ type -t if
キーワード

上の例では、「bash」がファイルで、「if」がキーワードです。

ショートカットキー

Bash には多くのショートカット キーが用意されており、操作が大幅に容易になります。以下に、最も一般的に使用されるショートカット キーの一部を示します。詳細については、「行の操作」の章を参照してください。

  • Ctrl + L: 画面をクリアし、現在の行をページの先頭に移動します。
  • Ctrl + C: 現在実行中のコマンドを中止します。
  • Shift + PageUp: 上にスクロールします。
  • Shift + PageDown: 下にスクロールします。
  • Ctrl + U: カーソル位置から行頭までを削除します。
  • Ctrl + K: カーソル位置から行末までを削除します。
  • Ctrl + W: カーソル位置より前の単語を削除します。
  • Ctrl + D: シェルセッションを閉じます。
  • : 実行したコマンドの履歴を参照します。

上記のショートカット キーに加えて、Bash にはオートコンプリート機能もあります。コマンドの入力途中で Tab キーを押すと、Bash が残りの部分を自動的に完了します。たとえば、「tou」と入力して Tab キーを押すと、Bash は自動的に「ch」を追加します。

コマンドの自動補完に加えて、Bash はパスの自動補完もサポートしています。場合によっては、長いパスを入力する必要がある場合、最初の部分を入力するだけで、Tab キーを押すと、次の部分が自動的に入力されます。複数の選択肢がある場合は、Tab キーを 2 回押すと、Bash によって選択できるすべてのオプションが表示されます。


作者: wangdoc

アドレス: https://wangdoc.com/

ライセンス: クリエイティブ・コモンズ 3.0