man -t ascii | ps2pds - > ascii_man_page.pdf
-t flag formats the output and ps2pds converts post script to pdf.
hyphen (-) after ps2pdf command indicates it to read input from stdin and write output to stdout.
2. Want to terminate the script after first failure ?
'set -e' thats it. it does everything.
$> cat setexit.sh #/bin/bash set -e echo "line 1" cat tmp.x.12.12 echo "line 2" $> ./setexit.sh line 1 cat: tmp.x.12.12: No such file or directory #line 2 is not echoed
3. Simple way to create huge file
yes, we have 'yes' in unix to do that. yes will echo what ever you give as argument.
#press ctr+c after a while $yes "some random text..." > bigfile.txt
'yes' has another interesting advantage. just imagine to answer yes to the every question by bash.
$rm file.txt rm: remove regular file 'file.txt' ? #you probably give 'y' to remove it. what if you want to remove 100 such files? yes | rm *.sh
though this can be achieved just by ignoring alias ( \rm *.sh ) this is just an example to demonstrate the usage.
4. Creating dirty random number
we have $RANDOM shell variable to generate a random number may be max of 5 characters. If you wish to create a big random number use 'mcookie'. This command generates a "magic cookie," a 128-bit pseudorandom hexadecimal number, normally used as an authorization signature by the X server. This also available for use in a script as a quick and dirty random number.
$mcookie
a2cae14a060720bca183d05f165a5a8e
5. Get directory name or file name from path and file extension
#extract dir name and file name $> basename /dir1/dir2/file.txt file.txt $> dirname /dir1/dir2/file.txt /dir1/dir2 #Extract extension $> path="/dir1/dir2/file.txt" $> ext=${path##*.} $> echo $ext txt
6. Simple 'cut'
var="one two three" set -- $var a=${1}; #one b=${2}; #two c=${3}; #three
Just a basic example to avoid invoking forked process (cut/awk)
7. Base conversion
'bc' can convert from any base to any.
Ex: decimal to hexadecimal conversion
echo 'obase=16; ibase=10; 64' | bc # (ibase=input base, obase=output base)
This will convert 64 from base 10 to base 16.