views:

1037

answers:

5

cat /dev/urandom
is always a fun way to create scrolling characters on your display but in that output, there is too many non character output.

now i was thinking, is there an easy way to encode on the commandline it in such way that all of itś output are readable characters, base64 or uuencode for example.

note that i prefer solutions that require no additional files to be created.

+2  A: 

So, what is wrong with

cat /dev/urandom | uuencode -

?

Fixed after the first attempt didn't actually work... ::sigh::

BTW-- Many unix utilities use '-' in place of a filename to mean "use the standard input".

dmckee
didn't know about the dash option. thanks for teaching me that ;)
alexanderpas
(actually the dash means stdout in this case) Useless use of `cat` - do this instead: `uuencode /dev/random -`
Dennis Williamson
+7  A: 

What about something like

cat /dev/urandom | base64

Which gives (lots of) stuff like

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

Or, without the (useless) cat+pipe :

base64 /dev/urandom

(Same kind of output ^^ )


EDIT : you can also user the --wrap option of base64, to avoid having "short lines" :

base64 --wrap=0 /dev/urandom

This will remove wrapping, and you'll get "full-screen" display ^^

Pascal MARTIN
wow... I feel dizzy now.
Stefano Borini
"All I see now is blonde, brunette, redhead."
alexanderpas
@Stefano : so did I :-D ; @alexanderpas : if watching random scrolling characters makes you see that kind of characters, maybe I should watch random characters more often ^^
Pascal MARTIN
@alexanderpas: cat /dev/urandom | uuencode - | tr -d '0-9' | sed -e 's/\([@$]\)/^[[1m^[[32m\1^[[0m/g' | sed -e 's/\([*!]\)/^[[30m\1^[[0m/g' | sed -e 's/\([A-Z]\)/^[[32m\1^[[0m/g' | tr -d '\n' # 1) convert ^[ to ctrl-v esc after pasting 2) can be improved, but now I'm tired ;)
Stefano Borini
+2  A: 

A number of folks have suggested catting and piping through base64 or uuencode. One issue with this is that you can't control how much data to read (it will continue forever, or until you hit ctrl+c). Another possibility is to use the dd command, which will let you specify how much data to read before exiting. For example, to read 1kb:

dd if=/dev/urandom bs=1k count=1 2>/dev/null | base64

Another option is to pipe to the strings command which may give more variety in its output (non-printable characters are discarded, any runs of least 4 printable characters [by default] are displayed). The problem with strings is that it displays each "run" on its own line.

dd if=/dev/urandom bs=1k count=1 2>/dev/null | strings

(of course you can replace the entire command with

strings /dev/urandom

if you don't want it to ever stop).

If you want something really funky, try one of:

cat -v /dev/urandom
dd if=/dev/urandom bs=1k count=1 2>/dev/null | cat -v
Adam Batkin
Or `head -c 100` for instance would print the first 100 bytes of the file.
Mark Rushakoff
A: 

You can do more interesting stuff with BASH's FIFO pipes:

uuencode <(head -c 200 /dev/urandom | base64 | gzip)
greyfade
+1  A: 

Try xxd -ps /dev/urandom

lhf