リモートサーバーのコンソールキーボードレイアウトが実際のキーボードと異なる問題が発生しました。
@
ブラウザフォーラムに貼り付けるには、手紙をコピーする必要があります。
サーバーはVPNの内部にあり、外部からアクセスできないため、「記号」で検索するだけでは機能しません。
@
コピーして貼り付けるためにコンソールから印刷する方法はありますか?単にaを実行しcat
、@
その中にaを表示するよく知られたファイルはありますか? ㅏ閲覧ファイルまたは同様です。
答え1
bashシェルの使用:
echo $'\x40'
POSIXシェルの使用:
printf '\100'
答え2
man ascii
ディスプレイASCII文字セットを使用し、出力から切り取って貼り付けることができます。
(ascii
計画9または他のプログラムにプログラムがインストールされている場合は、セクション7:でマニュアルページが必要であることを明示的に指定できますが、man 7 ascii
これは通常必要ありません。)
答え3
Perlを使用している場合は、次の特殊文字を最小限に使用して、印刷可能なすべてのASCII文字を取得できます(二重引用符を使用することもできます)。
shell$ perl -l -e 'print map chr, 32..126'
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
はるかに簡単です(文字とドットのみを使用)。
shell$ perl
print chr for 32..126
^D
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~shell$
答え4
以前に言及されていないいくつかの方法は次のとおりです。
printf '\x40'
printf '\u40'
echo -e '\u40'
echo $'\u40'
echo 40 | xxd -p -r
perl -le 'print chr 64'
python <<<'print chr(64)'
python3 -c 'print(chr(64))'
php -r 'echo chr(64);'
[1]
この40
値はASCII文字の16進値です@
。または64
10進数(後で使用)。つまり、16進数()の値で表現または読み取ります\x40
。 printfコマンドはそれをこの値のバイトに変換し、コンソールはそれを印刷します。\x
40
@
そしてこれもUnicode同じ文字のコードポイント値です@
。結局のところ、UnicodeコードポイントとASCII文字の値は7F
(設計上)最大127(16進数または8進数)まで同じです177
。
\x40
しかし\100
(または)とは違いがあります\u40
。後者は、オペレーティングシステムまたはコードを実行しているコンピュータで設定されたロケール、言語、または条件に関係なく、常にUnicodeコードポイントを生成します。 while はprintf '\100'
スペースを出力します。また、設計上、UNICODEのコードポイントには静的値が割り当てられます。彼らは将来も変わらないと予想されます。つまり、EBCDICベースのシステムでは偶数を生成する\u40
必要があります@
(例:)。これはASCII値の場合は小さな利得のように見えますが、()はロケールや言語に関係なく\u2225
常に生成する必要があるため、より高いコードポイント文字の実用的な利点ですparallel
。∥
これに対するサポートは、2000年にGNU printf(スタンドアロンユーティリティ)によって最初に追加されました\uxxxx
。その後、2003年にzshのprint/printf/echo/$'...'が登場し、後で他のいくつかのシェルが登場しました。 $ '\ uxxxx'構文はPOSIXに含まれる予定もあります。別のprintf:には4桁の数字が必要ですprintf '\u0040'
。 Bashでは、ksh93とzshに1〜4桁の数字が許可されています。 Aには\Uxxxxxxxx
最大8桁の16進数を使用する必要があります。
[1]元のアイデアはStéphane Chazelasのコメントから出てきました(現在削除されています)。