cat /dev/urandom
は常にディスプレイにスクロール文字を作成する楽しい方法ですが、印刷できない文字が多すぎます。
すべての出力が読み取り可能な文字(base64やuuencodeなど)になるように、コマンドラインで簡単にエンコードする方法はありますか。
追加のファイルを作成する必要のないソリューションを好むことに注意してください。
何かのようなものはどうですか
cat /dev/urandom | base64
どのようなもの(の多く)を与える
hX6VYoTG6n+suzKhPl35rI+Bsef8FwVKDYlzEJ2i5HLKa38SLLrE9bW9jViSR1PJGsDmNOEgWu+6
HdYm9SsRDcvDlZAdMXAiHBmq6BZXnj0w87YbdMnB0e2fyUY6ZkiHw+A0oNWCnJLME9/6vJUGsnPL
TEw4YI0fX5ZUvItt0skSSmI5EhaZn09gWEBKRjXVoGCOWVlXbOURkOcbemhsF1pGsRE2WKiOSvsr
Xj/5swkAA5csea1TW5mQ1qe7GBls6QBYapkxEMmJxXvatxFWjHVT3lKV0YVR3SI2CxOBePUgWxiL
ZkQccl+PGBWmkD7vW62bu1Lkp8edf7R/E653pi+e4WjLkN2wKl1uBbRroFsT71NzNBalvR/ZkFaa
2I04koI49ijYuqNojN5PoutNAVijyJDA9xMn1Z5UTdUB7LNerWiU64fUl+cgCC1g+nU2IOH7MEbv
gT0Mr5V+XAeLJUJSkFmxqg75U+mnUkpFF2dJiWivjvnuFO+khdjbVYNMD11n4fCQvN9AywzH23uo
03iOY1uv27ENeBfieFxiRwFfEkPDgTyIL3W6zgL0MEvxetk5kc0EJTlhvin7PwD/BtosN2dlfPvw
cjTKbdf43fru+WnFknH4cQq1LzN/foZqp+4FmoLjCvda21+Ckediz5mOhl0Gzuof8AuDFvReF5OU
または、(役に立たない)cat + pipeなし:
base64 /dev/urandom
(同じ種類の出力^^)
EDIT:--wrap
オプションのbase64
、「短い線」を避けるため:
base64 --wrap=0 /dev/urandom
これによりラッピングが削除され、「フルスクリーン」表示が得られます^^
多くの人々がcat
tingとbase64
またはuuencode
を介してパイプすることを提案しています。これに関する1つの問題は、読み取るデータ量を制御できないことです(永久に、またはctrl + cを押すまで続きます)。もう1つの可能性は、dd
コマンドを使用することです。これにより、終了する前に読み込むデータの量を指定できます。たとえば、1kbを読み取るには:
dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64
もう1つのオプションは、strings
コマンドにパイプすることです。これにより、出力の多様性が得られます(印刷不能文字は破棄され、4文字以上の印刷可能文字[デフォルト]が表示されます)。 strings
の問題は、各「実行」を独自の行に表示することです。
dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings
(もちろん、コマンド全体を
strings /dev/urandom
停止したくない場合)。
本当にファンキーなものが必要な場合は、次のいずれかを試してください。
cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v
だから、何が悪いの
cat /dev/urandom | uuencode -
?
最初の試行が実際に機能しなかった後に修正されました... :: sigh ::
ところで-多くのUNIXユーティリティは、ファイル名の代わりに「-」を使用して「標準入力を使用する」ことを意味します。
ランダムデータをbase64でエンコードする方法については、すでにいくつかの良い回答があります(つまり、cat /dev/urandom | base64
)。ただし、質問の本文では次のように詳しく説明します。
...コマンドラインで[urandom]をエンコードし、その出力がすべて読み取り可能な文字、たとえばbase64またはuuencodeになるようにします。
あなたが実際に解析可能なbase64を必要とせず、単にそれを読みやすくしたいなら、私は提案します
cat /dev/urandom | tr -dC '[:graph:]'
base64
は、英数字と2つの記号(デフォルトでは+および/)のみを出力します。 [:graph:]
は、base64にはない多くの記号/句読点記号を含む、印刷可能な非空白ASCIIに一致します。したがって、tr -dC '[:graph:]'
は、よりランダムに見える出力になり、入出力効率が向上します。
私はよく< /dev/random stdbuf -o0 tr -Cd '[:graph:]' | stdbuf -o0 head --bytes 32
強力なパスワードを生成します。
BASHのFIFOパイプを使用すると、もっと面白いことができます。
uuencode <(head -c 200 /dev/urandom | base64 | gzip)
cat /dev/urandom | tr -dc 'a-zA-Z0-9'