Shell Command Structure Summary
Positional arguments are passed as-is after the command name.
cat file1.txt file2.txt
Options (Named Arguments)
Options take values and come in two types:
Short: One-letter options preceeded by a
-. Values are placed after (usually separated by a space).
git commit -m "Fix"
Long: Multi-letter options preceeded by a
--. Values are placed after (separated by
=or a space).
git commit --message="Fix"=
git commit --message "Fix"
Flags don't take a value and can be long or short.
git commit --dry-run -v
Combining Short Flags
When using multiple short flags, you can combine them into one.
ls -a -g -h =
The order of options/flags does not matter.
ls -a -g =
ls -g -a
However, some commands require all options/flags to come before positional arguments.
ls my-dir -a
ls -a my-dir
Thankfully, most modern commands are agnostic.
git add a.js -v =
git add -v a.js
I prefer to put positional arguments before options/flags when possible, as I find it easier easier to read.
Quotes are only required for strings that contain special characters (e.g. spaces).
git commit -m Fix thing
git commit -m "Fix thing"
git commit -m Fix
Note: When writing npm scripts, prefer double quotes
'for better cross-compatability with Windows.
Many modern commands use a command-subcommand structure, like git. In the following example,
git is the root command, and
commit is the subcommand.
git commit -m "Hi"