ANSIエスケープコードは、コンソールの表示を制御するための特殊な文字列です。これを使用することで、文字の色や背景色を変更できます。
今回は、curlコマンドで打鍵して、HTTPレスポンスヘッダに含まれる「HTTP/1.1 200 OK」という文字列の文字色を赤色、文字背景色を黄色に変更する例を紹介します。基本的な書き方は下記の通りです。
curl -v http://example.com 2>&1 | sed ‘s/HTTP\/1\.1 200 OK/\x1B[31;43m&\x1B[0m/g’ |
コマンドの説明
- curl -v :詳細なログ出力を行います。
- 2>&1 :-vオプションの出力は標準エラー出力に送られるため、標準出力にリダイレクトしています。(重要)
- sedコマンドを使用して特定文字列の文字色と背景色を変更します。
- \x1B(または\033):エスケープ文字。(以下、 ESC と表記)
- [ : 制御シーケンスの開始(CSI)
- m : 文字の色やスタイルの設定(SGR)
- ESC[31 : 文字色を赤に設定
- ESC[43 : 背景色を黄色に設定
- ; : 複数の色指定を行う際の区切り文字
- ESC[0 : 色指定をリセット
- & : マッチした文字列全体
curlの-vオプションによりHTTPレスポンスヘッダが標準エラー出力されるところが盲点でした。「2>&1」でリダイレクトしないと色が変わらないので注意してください。
エスケープ文字(ESC:\x1B or \033)の入力方法
サクラエディタでコントロールコードを入力します。
- 「編集」→「挿入」→「コントロールコード入力」から「ESC(エスケープ)」を選んでOK