Bash is the default shell for Linux & macOS. It’s an interpreted language providing users with an interface to the OS. Learning how to use command line arguments & options in Bash is important for power & advanced users. This blog explains what they are & how to use them effectively.
Prerequisites
For those new to bash, start with a beginner’s guide and have a basic understanding of Linux and the terminal.
What are Command Line Arguments and Options?
You can pass extra info to terminal commands using command line args & options. Args specify info needed for the command, while options modify its behavior.
For example, consider the ls
command, which is used to list the files in a directory. By default, ls
lists the files in the current directory. If you want to list the files in another directory, you can pass the directory path as an argument to the ls
command.
ls /path/to/directory
Options, on the other hand, are used to modify the behavior of a command. For example, the ls
command has the -l
option, which displays the files in a long format.
ls -l /path/to/directory
List All Options
In order to see which options and arguments are possible on a give command, use the --help
option or the man page of the command. Here is an example of the help section for the ls command, by typing ls --help
in the terminal.
-a, --all do not ignore entries starting with .
-A, --almost-all do not list implied . and ..
--author with -l, print the author of each file
-b, --escape print C-style escapes for nongraphic characters
--block-size=SIZE with -l, scale sizes by SIZE when printing them;
e.g., '--block-size=M'; see SIZE format below
-B, --ignore-backups do not list implied entries ending with ~
-c with -lt: sort by, and show, ctime (time of last
modification of file status information);
with -l: show ctime and sort by name;
otherwise: sort by ctime, newest first
-C list entries by columns
--color[=WHEN] colorize the output; WHEN can be 'always' (default
if omitted), 'auto', or 'never'; more info below
-d, --directory list directories themselves, not their contents
-D, --dired generate output designed for Emacs' dired mode
-f do not sort, enable -aU, disable -ls --color
-F, --classify append indicator (one of */=>@|) to entries
--file-type likewise, except do not append '*'
--format=WORD across -x, commas -m, horizontal -x, long -l,
single-column -1, verbose -l, vertical -C
How to Use Command Line Arguments and Options
Using command line arguments and options is straightforward. Arguments are passed directly after the command, separated by spaces. Options, on the other hand, are usually prefixed with a single or double hyphen. For example, the following command lists the files in the /path/to/directory
directory in a long format:
ls -l /path/to/directory
In some cases, options can take additional arguments. For example, the grep
command is used to search for a pattern in a file. The grep
command has the -e
option, which allows you to specify the pattern to search for.
grep -e 'pattern' /path/to/file
Practical Use-Cases
Here are some practical use-cases for command line arguments and options:
- Listing files in a specific directory:
ls /path/to/directory
- Searching for a pattern in a file:
grep -e 'pattern' /path/to/file
- Compressing files using tar:
tar -czvf file.tar.gz /path/to/directory
- Uncompressing files using tar:
tar -xzvf file.tar.gz
- Copying files:
cp source_file destination
Risks Involved
Use caution when using command line args & options as they can cause unintended consequences if used improperly. For example, rm
with r
option recursively deletes all files & subdirectories in a directory. Double-check options & args before executing a command & always make backups of important files before making changes using the terminal.
Tips for Using Command Line Arguments and Options
Here are 5 tips for effectively using command line arguments and options:
- Read the manual: Most commands have a manual page that provides information on the available options and arguments. Use the
man
command to access the manual page for a specific command. - Use tab completion: Bash provides tab completion, which makes it easier to enter commands and options. Pressing the tab key will automatically complete the command or option if there is only one possible match.
- Use
--help
option: Most commands have a –-help
option that provides a summary of the available options and arguments. Use the –-help
option to get a quick overview of the options and arguments for a specific command. - Keep options short: Options are usually prefixed with a single hyphen, followed by a single letter. To make it easier to remember options, keep them short and memorable.
- Experiment: Don’t be afraid to experiment with different options and arguments. Try different combinations to see how they affect the behavior of the command.
What’s Next?
If you want to learn more about bash, it’s recommended to explore shell scripting and learn how to automate tasks using bash scripts. Additionally, you can also learn about environment variables and how they can be used in bash.