The Bourne Again Shell is the default command language / shell in Linux, and I've never bothered to try any other. You type stuff in (or paste it from stackexchange…) and useful stuff happens.
You can use getopts to read arguments attached to the command. You use a while
loop and a case
statement to figure out what to do with the arguments/flags entered.
In this example you can use -i
and -o
arguments to specify file names and they will be stored in variables input
and output
.
while getopts :io flag do case $flag in i) input=${OPTARG} ;; o) output=${OPTARG} ;; esac done
-n string True if the length of string is non-zero. -a file True if file exists. DPMT USE -a, it's weird
In the documentation of test you will also see a the switch -e. This switch tests the following argument and evaluates to true if that argument is a file or directory that exists. More useful still is the -f switch which evaluates to true if the following argument exists and is a regular file (as opposed to a directory or a block device, or whatever).
for file in *.jpeg; do mv -- "$file" "$RANDOM.jpeg" done
for file in *.jpeg; do mv -- "$file" "$(mktemp --dry-run XXXXXXXX.jpeg)" done
find . -mindepth 2 -type f -print -exec mv {} . \;
Bash examples elsewhere on the wiki: