カテゴリ: Linux 更新日: 2026/05/21

Linuxの単一引用符(シングルクォート)とは?文字列をそのまま扱う方法を徹底解説

Linuxの単一引用符とは?文字列をそのまま扱う方法
Linuxの単一引用符とは?文字列をそのまま扱う方法

先生と生徒の会話形式で理解しよう

生徒

「Linuxのシェルスクリプトを勉強しているのですが、コマンドの中で使う『'』(シングルクォート)の意味がよく分かりません。普通の文字と何が違うんですか?」

先生

「それは非常に大切なポイントですね。Linuxにおいて単一引用符(タンイツインヨウフ)、読み方は単一引用符(シングルクォート)は、中身を『一切解釈せずにそのままの文字列として扱う』という魔法の記号なんです。」

生徒

「そのまま扱う?変数とかコマンドの結果とかが勝手に変わらないようにするってことでしょうか?」

先生

「その通りです!二重引用符(ダブルクォート)との違いを理解すると、シェル操作がぐっと楽になりますよ。基本から具体例まで、順番に見ていきましょう。」

Linuxを初めて学ぶ人や、 OS・プロセス・メモリ管理・仮想マシン・コンテナの仕組みを図解で理解したい人におすすめの定番書籍です。

試して理解 Linuxのしくみを見る

※ Amazonアソシエイト広告リンク

1. 単一引用符(シングルクォート)とは何か?

1. 単一引用符(シングルクォート)とは何か?
1. 単一引用符(シングルクォート)とは何か?

Linux(リナックス)の環境で、Bash(バッシュ)やZsh(ゼットシェルのようなシェルを利用しているとき、特定の文字を「特別な意味」ではなく「ただの文字」として扱いたい場面があります。これをクォート(引用)と呼びます。

単一引用符(タンイツインヨウフ)、英語ではSingle Quote(シングルクォート)といい、キーボードの「7」のキーをShift(シフト)キーと一緒に押すことで入力できる記号です。この記号で囲まれた部分は、シェルによって一切の加工が行われません。つまり、「書かれた通りに表示・処理される」という強力なルールが適用されます。

例えば、ドル記号「$」は通常、変数を展開するために使われますが、シングルクォートで囲むと、それはただの「$」という記号として認識されます。初心者が最初につまずきやすいポイントですが、ここを理解すると、意図しないエラーを防ぐことができるようになります。

2. シングルクォートとダブルクォートの決定的な違い

2. シングルクォートとダブルクォートの決定的な違い
2. シングルクォートとダブルクォートの決定的な違い

Linuxには、引用符が2種類あります。一重(いちじゅう)のシングルクォート ' ' と、二重(にじゅう)のダブルクォート " " です。この二つの使い分けが、シェルスクリプトやコマンドライン操作の鍵となります。

二重引用符(ニジュウインヨウフ)、読み方は二重引用符(ダブルクォート)は、中にある変数やコマンド置換を実行します。それに対して、シングルクォートは一切の例外を認めません。すべてを「ただの文字列」として固定します。

以下の例を見てみましょう。環境変数 $USER(現在ログインしているユーザー名が入っている場所)を使って比較します。


echo "Hello $USER"
Hello linuxuser
echo 'Hello $USER'
Hello $USER

ダブルクォートでは $USER が中身の「linuxuser」に変換されましたが、シングルクォートではそのまま $USER と表示されています。このように、内容を保護したいときにシングルクォートを使います。

3. 文字列をそのまま扱う「エスケープ」の役割

3. 文字列をそのまま扱う「エスケープ」の役割
3. 文字列をそのまま扱う「エスケープ」の役割

Linuxのシェルにおいて、特定の文字(メタキャラクタ)は特別な役割を持っています。例えば、アスタリスク * はワイルドカードとして全てのファイルを指し、バックスラッシュ \ は次の文字の意味を打ち消す役割を持ちます。

もし、これらの特殊な記号を文章の中でそのまま使いたい場合、一つずつバックスラッシュを付けてエスケープ(回避)するのは非常に手間がかかります。そこで、シングルクォートの出番です。

シングルクォートで囲むことで、内部にある全ての特殊記号が無効化されます。これを「強いクォート」と呼ぶこともあります。プログラミング初心者が、複雑なパスや記号混じりのメッセージを表示させたいときは、まずシングルクォートで囲む癖をつけると良いでしょう。読み方は回避(エスケープ)といいます。

4. 空白を含むファイル名や引数を正しく処理する方法

4. 空白を含むファイル名や引数を正しく処理する方法
4. 空白を含むファイル名や引数を正しく処理する方法

Linuxでは、空白(スペース)はコマンドと引数を区切るための「区切り文字」として認識されます。そのため、名前に空白が入っているファイルを操作しようとすると、シェルが「二つの別々のファイル」だと勘違いしてエラーを出してしまいます。

例えば、「My Data.txt」というファイルを ls コマンドで確認したいとき、そのまま入力すると ls は「My」と「Data.txt」を探しに行ってしまいます。これを防ぐためにシングルクォートを利用します。


ls -l 'My Data.txt'
-rw-r--r-- 1 user group 0 Apr  2 13:00 My Data.txt

このように、空白を含む文字列を一つの固まりとして認識させる際にも、シングルクォートは非常に便利です。特に、Windowsから移行してきた方はファイル名に空白を使いがちですので、このテクニックは必須の知識となります。

5. シェルスクリプト内での活用シーン:定数の定義

5. シェルスクリプト内での活用シーン:定数の定義
5. シェルスクリプト内での活用シーン:定数の定義

シェルスクリプトを作成する際、プログラムの中で値が変わることのない文字列(定数)を定義することがよくあります。その際にシングルクォートを使うと、後からコードを読んだ人が「あ、ここは変数が展開されない固定の文字列なんだな」と一目で理解できるようになります。

保守性(ホシュセイ)、読み方は保守性(ホシュセイ)の高いコードを書くためには、意図を明確にすることが重要です。何でもかんでもダブルクォートで囲むのではなく、展開の必要がない場所にはシングルクォートを徹底して使うのが、プロのエンジニアの作法です。


STR='This is a fixed string.'
echo $STR
This is a fixed string.

上記の例では、変数 STR に代入する文字列をシングルクォートで保護しています。これにより、もし文字列の中に $`(バッククォート)が含まれていても、誤動作することなく安全に代入が完了します。

6. シングルクォート内でシングルクォートを使いたい時は?

6. シングルクォート内でシングルクォートを使いたい時は?
6. シングルクォート内でシングルクォートを使いたい時は?

ここで一つ、少し難しい問題が出てきます。シングルクォート ' ' で囲まれた中では、すべての文字が「そのまま」扱われるため、実は「シングルクォートの中にシングルクォート自身を入れることはできない」というルールがあります。

例えば、It's a pen という文字列を表示させたいとき、'It's a pen' と書くと、二つ目の ' で引用が終わったと判断されてしまい、エラーになります。これを解決するには、一度シングルクォートを閉じて、バックスラッシュで単体のシングルクォートを書き、また再開するというテクニックが必要です。


echo 'It'\''s a pen'
It's a pen

この書き方は一見複雑に見えますが、構造は 'It' + \' + 's a pen' という3つのパーツがつながった形になっています。初心者のうちは混乱するかもしれませんが、「引用符を一時的に脱出する」というイメージを持つと分かりやすいでしょう。

7. パイプやリダイレクトとの組み合わせ

7. パイプやリダイレクトとの組み合わせ
7. パイプやリダイレクトとの組み合わせ

Linuxの醍醐味であるパイプライン | やリダイレクト > を使う際も、シングルクォートは役立ちます。例えば、特定の文字列を検索する grep コマンドを使う際、検索パターンに特殊記号が含まれる場合は、パターンをシングルクォートで囲むのが一般的です。

検索パターン(ケンサクパターン)、読み方は検索パターン(ケンサクパターン)をシェルに解釈させず、そのまま grep コマンドに渡すことで、正確なフィルタリングが可能になります。


cat list.txt | grep 'ID: [0-9]*'
ID: 12345
ID: 67890

この例では、正規表現(セイキヒョウゲン)という技術を使って数値を検索していますが、[ ]* がシェルに反応しないよう、しっかりとシングルクォートでガードしています。これにより、意図した通りの検索結果を得ることができます。

8. 実践:複雑な記号入りのメッセージを表示する

8. 実践:複雑な記号入りのメッセージを表示する
8. 実践:複雑な記号入りのメッセージを表示する

最後に、より実践的な例を見てみましょう。システム管理者が、ユーザーに対して環境構築の指示を表示するような場面です。コマンド例そのものを画面に出したいとき、シングルクォートは最強の味方になります。


echo 'Setting: PATH=$PATH:/usr/local/bin'
Setting: PATH=$PATH:/usr/local/bin

ルートユーザー(管理者)として作業をする際、誤って環境変数を上書きしてしまうと大変なことになります。しかし、このように echo コマンドとシングルクォートを組み合わせれば、実際のシステム設定を変えることなく、安全に手順を表示させることができます。

標準出力(ヒョウジュンシュツリョク)、読み方は標準出力(ヒョウジュンシュツリョク)を自在に操るためには、このシングルクォートによる文字列の保護が欠かせません。今回学んだことを活かして、安全で確実なLinux操作を楽しんでください。

LPICレベル1の合格を目指している人や、 Linuxコマンド・シェル・ネットワーク・セキュリティの試験対策を効率よく進めたい人におすすめの定番問題集です。

Linux教科書 LPICレベル1 スピードマスター問題集を見る

※ Amazonアソシエイト広告リンク

まとめ

まとめ
まとめ

今回の記事では、Linux(リナックス)のコマンドライン操作において欠かすことのできない単一引用符(シングルクォート)の役割と、その具体的な活用方法について詳しく解説してきました。シングルクォートは、シェルが持つ特別な意味をすべて打ち消し、中身を「純粋な文字列」として保護するための非常に強力な手段です。特に、変数展開を抑制したい場合や、空白を含むファイル名を一つの塊として扱いたい場合にその真価を発揮します。

シングルクォートの重要ポイントの整理

Linuxの学習を効率的に進めるために、シングルクォートに関する重要な特性を改めて整理しておきましょう。以下のポイントを意識するだけで、シェルスクリプトのバグやコマンドの入力ミスを劇的に減らすことができます。

  • 完全な文字列保護: ドル記号($)やバックスラッシュ(\)などの特殊文字をそのままの文字として扱う。
  • 変数展開の禁止: ダブルクォートとは異なり、シェル変数の値を展開せずに変数名そのものを表示する。
  • 空白の処理: スペースを含むファイル名やディレクトリ名を、一つの引数として正しく認識させる。
  • ネストの制限: シングルクォートの中でシングルクォートを直接使うことはできないため、特殊な記述が必要になる。

シングルクォート活用の応用例

実務においては、設定ファイルの書き換えやログの抽出など、複雑な文字列を扱う場面が多く存在します。例えば、正規表現(セイキヒョウゲン)を用いた検索を行う際、シェルがアスタリスクやブラケットを解釈してしまうと、期待した検索結果が得られません。このような場面でシングルクォートを使用することで、検索パターンを正確にコマンドに渡すことができます。

また、プログラム開発においても、Linuxサーバー上で動作するスクリプトを書く機会は多いでしょう。以下のJavaプログラムの例は、Linuxコマンドを外部から呼び出す際のイメージです。プログラム内部でコマンドを組み立てる際も、シングルクォートで引数を囲むことで、安全な実行が可能になります。


public class LinuxCommandHelper {
    public static void main(String[] args) {
        // スペースを含むファイル名をシングルクォートで囲んで指定する例
        String fileName = "'My Document.txt'";
        String command = "ls -l " + fileName;

        System.out.println("実行予定のコマンド: " + command);
        // 出力結果: ls -l 'My Document.txt'
    }
}

このように、シングルクォートは単なる記号ではなく、データの整合性を守るための「ガード」として機能します。シェルスクリプトにおいて「定数」を定義する際も、シングルクォートを用いることで、意図しない値の書き換えや展開を防ぎ、コードの可読性と安全性を高めることができます。

Linuxの操作に慣れてくると、ダブルクォートとシングルクォートの使い分けが自然にできるようになります。まずは、「中身をそのまま出したいときはシングルクォート」という基本を徹底して、日々のターミナル操作に役立ててください。

先生と生徒の振り返り会話

生徒

「先生、ありがとうございました!シングルクォートを使うと、変数が勝手に中身に置き換わらなくなるんですね。さっき自分の端末で echo '$HOME' って試してみたら、自分のホームディレクトリのパスじゃなくて、ちゃんと文字としての $HOME が表示されて感動しました!」

先生

「素晴らしいですね、早速実践しましたか!その通りです。ダブルクォートだと /home/user のように展開されてしまいますが、シングルクォートは中身を一切いじりません。これを『強い引用』と呼んだりもするんですよ。」

生徒

「強い引用、かっこいいですね!でも、記事の最後の方にあった、シングルクォートの中にシングルクォートを入れる方法がちょっと難しそうです。'It'\''s a pen' という書き方は、正直に言うとまだ少し混乱しています。」

先生

「確かに初見では不思議な書き方に見えますよね。これは、文字列を 'It' という塊と、エスケープされた \' という文字、そして 's a pen' という塊の3つに分けて、それらをシェルが自動的に連結しているだけなんです。パズルのようなものだと思ってください。」

生徒

「なるほど、一度閉じて、特殊な方法で一文字入れて、また開くという手順なんですね。それなら納得です!あ、そういえばファイル名にスペースがあるときもシングルクォートで囲めばいいんですよね?」

先生

「その通り!例えば rm 'Study Memo.txt' と書けば、一つのファイルとして削除できます。もし引用符を忘れると、シェルは StudyMemo.txt という二つの別々のファイルを消そうとしてしまうので注意が必要ですよ。」

生徒

「危ないところでした……。これからは、空白がある名前や、変な記号が入っているメッセージを表示させたいときは、まずシングルクォートで囲むようにします。先生、Linuxのコマンド操作がもっと楽しくなりそうです!」

先生

「その意気です。基本をマスターすれば、次は複雑なパイプラインや自動化スクリプトにも挑戦できるようになります。エラーが出たときは、まず引用符の使い方が正しいか見直す癖をつけてみてくださいね。応援していますよ!」

カテゴリの一覧へ
新着記事
New1
Linux
Linuxの/proc/meminfoとは?メモリ使用状況を確認する仕組みを初心者向けに徹底解説
新規投稿
New2
情報セキュリティマネジメント試験
RATとは?リモートアクセス型ウイルスの仕組みと対策を初心者向けに解説
更新記事
New3
基本情報技術者試験
ビッグデータとは?初心者でもわかる大量データ活用の基本と活用事例
更新記事
New4
基本情報技術者試験
クライアントとは?初心者でもわかるコンピュータの基本用語をやさしく解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
基本情報技術者試験
NIC
307
NICとは何か?初心者にもわかるネットワークインターフェースカードの基本
No.2
Java&Spring記事人気No2
基本情報技術者試験
セグメントとは?ネットワークの基本単位を初心者向けにやさしく解説
No.3
Java&Spring記事人気No3
基本情報技術者試験
16進数とは?初心者にもわかる意味・読み方・変換方法をやさしく解説!
No.4
Java&Spring記事人気No4
基本情報技術者試験
DHCP
236
DHCPとは?初心者でもわかるIPアドレス自動割り当ての仕組み
No.5
Java&Spring記事人気No5
基本情報技術者試験
SMTP
174
SMTPとは?初心者でもわかるメール送信の仕組みとプロトコルをやさしく解説!
No.6
Java&Spring記事人気No6
基本情報技術者試験
マイクロ(μ)とは?初心者にもわかる単位の意味と使い方をやさしく解説
No.7
Java&Spring記事人気No7
基本情報技術者試験
IMAP
162
IMAPとは?初心者でもわかるメール受信プロトコルの仕組みと使い方
No.8
Java&Spring記事人気No8
基本情報技術者試験
ビット(bit)とは?デジタルデータの最小単位をわかりやすく解説