Get the Directory Path of a Bash Script
So you have a bash script and you want to run it from crontab or some other context where the current working directory isn’t known. Your script wants to use relative path information (from the script itself), perhaps to create a directory structure in the script’s base directory.
The question is: How do you get the directory path of the script? dirname? Not reliably.
#!/bin/bash ABSPATH="$(cd "${0%/*}" 2>/dev/null; echo "$PWD"/"${0##*/}")" CWD=`dirname "$ABSPATH"`
Nice!
Recursive directory merge
Problem: I have two directories that are similar in structure but different in content. Say one is an older snapshot of the other. I want to copy the stuff from the new directory into the old directory (recursively).
Copy:
rsync -a SOURCE/ DEST/ --ignore-existing --whole-file
Move (no clobber):
rsync -a SOURCE/ DEST/ --remove-sent-files --ignore-existing --whole-file
Move (and clobber):
rsync -a SOURCE/ DEST/ --remove-sent-files --whole-file
Move, but only update with newer:
rsync -a SOURCE/ DEST/ --remove-sent-files --update --whole-file