Lazy Redirector
Some of the best ideas are the simplest, and here's an example...
When using linux/unix command line, a common mistake is to attempt to read a file, process it and redirect the results to the same file :
sort mylist.txt > mylist.txt
This won't work though (as mylist.txt is overwritten before the sort process even starts).
Here's my solution :
In a file called "lazyredirect" somewhere on your PATH :
#!/bin/bash # # Takes stdin, and redirects is to a file once stdin has been closed (i.e. after the # process that generates the input is complete) # # Usage : # lazyredirect FILE # # Example : # sort mylist.txt | lazyredirect mylist.txt # TMP_FILE="$1-lazyredirect~$$~" cat > "${TMP_FILE}" mv -- "${TMP_FILE}" "$1"
Now to sort that file :
sort mylist.txt | lazyredirect mylist.txt