If the -f option is given, the data is taken from that files' contents or if the filename is - ``stdin''.
If the -n option is given, its argument is treated as a number, and the program prints a random permutation of the numbers greater than or equal to 0 and less than the argument.
If the -p option is given, its argument is treated as a number, and the program prints that number of randomly selected lines or arguments in a random order.
The -0 option changes the field separator character from \n to \0, so that the output is suitable to be sent to xargs(1) (to handle filenames with whitespace in them).
$ shuffle a b c d
c
b
d
a
$ shuffle -p 1 a b c d
d
$ shuffle -n 4 -p 2
0
3