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
(同じ種類の出力^^)
編集:「短い行」を避けるために、の--wrap
オプションを使用することもできます:base64
base64 --wrap=0 /dev/urandom
これで折り返しがなくなり、「フルスクリーン」表示になります ^^
多くの人々が、 orcat
を介した ting とパイプを提案しています。これに関する 1 つの問題は、読み取るデータの量を制御できないことです (それは永遠に、または ctrl+c を押すまで続きます)。もう 1 つの可能性は、コマンドを使用することです。これにより、終了する前に読み取るデータの量を指定できます。たとえば、1kb を読み取るには:base64
uuencode
dd
dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64
別のオプションは、コマンドにパイプすることです。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
強力なパスワードを生成するためによく使用します。
cat /dev/urandom | tr -dc 'a-zA-Z0-9'
BASH の FIFO パイプを使用すると、さらに興味深いことができます。
uuencode <(head -c 200 /dev/urandom | base64 | gzip)