Archive for the 'Shell' Category

How to Look Like a UNIX Guru

Tuesday, February 7th, 2006

http://www.cs.usfca.edu/~parrt/course/601/lectures/unix.util.html

Here’s a very useful set of instructions that every developer that deploys on unix/linux should know.

“If you want to be a serious server developer, you will need to have a certain facility with a number of UNIX tools; about 15. You will start to see similarities among them, particularly regular expressions, and soon you will feel very comfortable. Combining the simple commands, you can build very powerful tools very quickly–much faster than you could build the equivalent functionality in C or Java, for example.”

My favorite of all the commands mentioned is rsync. I use it daily to move things around between servers and even on the same machine. I’ll discuss rsync and how I use it later.

tee it up

Thursday, January 26th, 2006

When writing shell scripts I often need to both run the scripts manually during the day and also have them run via cron at night. I frequently log the output of the shell script to a file to reference later and email the log file.

Referred to as a pipe fitting program in its man page, tee will allow you to copy STDIN to STDOUT and display it to both the screen and a file. I’ve included a short script as an example:

#!/bin/sh
echo "Hello World!" | tee file.log

You’ll find the output Hello World! on both the terminal and in file.log. You can also tell tee to append to the file with the (-a) option. Without it you would continually write over the file with the latest output you wanted to log.

It took me a while to discover the tee command but I’ve been able to put it to great use when writing scripts that I’ll run both manually and from cron.