©
著作権記号と英ポンド記号£
をbashスクリプトに挿入する適切な方法は何ですか。
私はnano
エディターとして使用しており、DebianSqueezeを実行しています。
ウィンドウからシンボルをコピーして貼り付けると、機能しますが、nano
表示できない非表示の文字が貼り付けられているように見え、シェルスクリプトでコードを編集するのが難しくなります。
だから例えば私はこれをできるようにしたい:-
text="£15.00"
text2="© John Doe"
これらの記号をサポートしていないロケールを使用しているようです(昔は、フォントが悪い可能性もありました)。UTF-8文字(Windowsではデフォルト)を使用しているため、LinuxではUTF-8対応の環境にいる必要もあります。locale
次のコマンドで確認できます。
$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
したがって、私のシステムは問題ありませんが、デフォルトのASCIICロケールが設定されています。これらは単純なbash
変数であるため、export
個別に使用することも、すべてをオーバーライドすることもできます(を設定することによりLC_ALL
)。ただし、これは現在のシェルにのみ影響するため、毎回自動的に機能するようにシェルの初期化の一部にする必要があります。
これは通常、/etc
グローバルにプロファイルスクリプトを介して実行されますが、.bash_profile
または.bashrc
同様に機能します。お使いのバージョンのDebianでは、ロケールがに保存されて/etc/default/locale
おり、次のように使用可能な選択肢のリストを取得できますlocale -a
。
$ locale -a
C
en_US
en_US.iso88591
en_US.utf8
POSIX
sl_SI.utf8
接尾辞がutf8の1つを選択します。他のロケール(たとえば、日本語)が必要な場合は、localedef / locale-gen(付属glibc
または別のパッケージとして)を使用して生成できます。
著作権には(C)を使用する方がよいでしょう。違反に対する防御ではなく、他のロケールで常に読み取り可能にする必要があります。
ディスプレイは次のようになります
text="1.00"
text2=" ohn Doe"
私のテスト端末で。
nanoでの記号の入力に問題がある場合は、エスケープ構文を使用してください。iconv
これを使用して、現在のロケールに対応する出力エンコーディングに変換できます。
text=$'\xa315.00'
text2=$'\xa9 John Doe'
iconv -f latin1 <<< $text
iconv -f latin1 <<< $text2
またはutf8でも同じです:
text=$'\xc2\xa315.00'
text2=$'\xc2\xa9 John Doe'
iconv -f utf-8 <<< $text
iconv -f utf-8 <<< $text2