For an exhaustive list, man test. Here are some common ones.
-z STRING the length of STRING is zero
-n STRING the length of STRING is nonzero
STRING1 == STRING2 the strings are equal
STRING1 != STRING2 the strings are not equal
INTEGER1 -eq INTEGER2 the numbers are equal
INTEGER1 -ne INTEGER2 the numbers are not equal
-e FILE FILE exists
-d FILE FILE exists and is a directory
-f FILE FILE exists and is a regular file
-h FILE FILE exists and is a symbolic link (same as -L)
$# the number of arguments passed to a function or script
$1 the first argument passed to a function or script. $2 is the second, etc.
$@ all of the arguments passed to the function or script
${@:2} all of the arguments passed to the function or script, except $1
set -e if any command fails, the script will exit. If you have commands should be allowed to
fail, append || true or || : to prevent exit.
set -u treat unset variables as an error, and immediately exit
set -o pipefail causes a pipeline to produce a failure return code if any command errors.
set -eo pipefail causes the script to exit if any command, including one in a pipeline, fails.
items=(item1 item2 item3)
for item in "${items[@]}"; do
echo $item
done
Create a temporary file in /tmp
tmpfile=$(mktemp)
Create a temprary directory in /tmp
tmpdir=$(mktemp -d)
-O FILE Write output to FILE
-O- Pipe output to stdout
-f Fail fast
-L Follow redirects
-o FILE Output to FILE
-o- Pipe to stdout
-O Output to a file named as it is named in the URL
-s Hide progress meter and error messages
-sS Hide progress meter, but show error messages
--proto =https only allow https
--tlsv1.x forces curl to use TLS vversion 1.x or later.
-d DIRNAME unzip into DIRNAME
-xf ARCHIVE extract files from ARCHIVE
-v List files processed. Can be specified up to -vvv for more verbosity.
chown <user>:<group> <file>
-R recursively sets ownership inside directory