コマンドやシェルでエスケープ文字やUnicodeを入力する方法

コマンドやシェルで改行コードやタブ文字を入力する方法は意外と悩むものです。そんな人のためにエスケープ文字を入力する方法を2つ紹介したいと思います。また、2つ目の方法はコマンドやシェルでUnicode文字を入力することも可能です。

改行などを直接入力する方法

一つは直接入力してしまう方法があります。直接入力するといっても、入力に少し工夫が必要です。

それは、端末上でまずCtrl+Vを入力することです。

その後にほしいエスケープ文字を入力します。例えば、Enterを押すと

のような文字が入力することができます。このような文字の記法はキャレット記法といいます。またはCtrl+Vの後にCtrl+Mでも同じような文字を入力することができます。

この入力に必要なエスケープ文字の入力方法をまとめると

意味 エスケープシーケンス キャレット記法 入力方法
水平タブ \t ^I 「Ctrl+V」の後に

「TAB」又は「Ctrl+I」

改行 \n ^J 「Ctrl+V」の後に

「Ctrl+J」

復帰 \r ^M 「Ctrl+V」の後に

「Enter」又は「Ctrl+M」

しかし、端末によってキャレット記法で表示されずにそのままエスケープ文字の意味で表示される場合もあります。そのため、もしかしたら次の方法のほうがおすすめかもしれません。

「$' '」または「$" "」でエスケープ文字を入力する

コマンドやシェルで文字を入力する場合、文字列をシングルクォーテーションやダブルクォーテーションで囲む場合が多いと思います。そのシングルクォーテーションやダブルクォーテーションの前に「$」の記号を入れることでC言語のようにエスケープ文字を入力できるようになります。例えば、

のように入力すると単純に改行コードを出すことができます。

また、Unicodeも入力することが可能です。例えば、ひらがなの「あ」を入力したい場合、16進4桁のUnicodeの場合は小文字uを用いて

または16進8桁のUnicodeで入力する場合は大文字Uを用いて、

で入力することができます。

また、「$」の記号を入れたシングルクォーテーションやダブルクォーテーションで囲む場合の違いは、文字列をシングルクォーテーションやダブルクォーテーションで囲む場合と同じで変数を展開するかどうかの違いがあります。

もし、コマンドやシェルでエスケープ文字やUnicode文字を用いる場合は、「$''」や「$""」を利用したほうが、スマートに見えておすすめです。