任意のパスワードを生成し、次のことをしたいと思います。
</dev/urandom tr -dc [:print:] | head -c 64
Ubuntuを実行している私のラップトップでは、期待どおりに印刷可能な文字のみが生成されます。ただし、学校サーバー(Red Hat Enterprise Linuxを実行)にSSHで接続して実行すると、同様の結果が得られ、3!ri�b�GrӴ��1�H�<�oM����&�nMC[�Pb�|L%MP�����9��fL2q���IFmsd|l�K
まったく機能しません。ここで何が間違っている可能性がありますか?
ベストアンサー1
今、GNU TRシングルバイト文字のみが完全にサポートされています。したがって、マルチバイトエンコーディングを使用するロケールでは、出力が奇妙に見えることがあります。
$ </dev/urandom LC_ALL=vi_VN.tcvn tr -dc '[:print:]' | head -c 64
`�pv���Z����c�ox"�O���%�YR��F�>��췔��ovȪ������^,<H ���>
シェルはマルチバイト文字を正しく印刷しますが、GNUはtr
印刷できないと見なされるバイトを削除します。
確実に使用するには、ロケールを設定する必要があります。
$ </dev/urandom LC_ALL=C tr -dc '[:print:]' | head -c 64
RSmuiFH+537z+iY4ySz`{Pv6mJg::RB;/-2^{QnKkImpGuMSq92D(6N8QF?Y9Co@