45

cat /dev/urandomは、ディスプレイ上でスクロールする文字を作成する楽しい方法ですが、印刷できない文字が多すぎます。

すべての出力が読み取り可能な文字、たとえばbase64またはuuencodeになるように、コマンドラインでエンコードする簡単な方法はありますか?

追加のファイルを作成する必要のないソリューションを好むことに注意してください。

4

7 に答える 7

68

のようなものはどうですか

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

これで折り返しがなくなり、「フルスクリーン」表示になります ^^

于 2009-08-08T23:36:45.743 に答える
22

多くの人々が、 orcatを介した ting とパイプを提案しています。これに関する 1 つの問題は、読み取るデータの量を制御できないことです (それは永遠に、または ctrl+c を押すまで続きます)。もう 1 つの可能性は、コマンドを使用することです。これにより、終了する前に読み取るデータの量を指定できます。たとえば、1kb を読み取るには:base64uuencodedd

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
于 2009-08-08T23:58:14.450 に答える
5

それで、何が悪いのですか

cat /dev/urandom | uuencode -

?

最初の試行が実際に機能しなかった後に修正されました... ::sigh::

ところで -- 多くの UNIX ユーティリティは、ファイル名の代わりに「-」を使用して、「標準入力を使用する」ことを意味します。

于 2009-08-08T23:36:19.207 に答える
4

ランダムデータを 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強力なパスワードを生成するためによく使用します。

于 2014-02-04T12:00:51.273 に答える
1
cat /dev/urandom | tr -dc 'a-zA-Z0-9'
于 2012-08-23T20:54:20.957 に答える
1

BASH の FIFO パイプを使用すると、さらに興味深いことができます。

uuencode <(head -c 200 /dev/urandom | base64 | gzip)
于 2009-08-09T22:08:22.730 に答える
-2

試す

xxd -ps /dev/urandom

xxd(1)

于 2009-08-13T03:42:52.530 に答える