# Wildcards
When a wildcard character ```(*)``` is provided to a command as part of an argument, the shell will first perform filename expansion (also known as globbing) on the wildcard.
This process replaces the wildcard with a space-separated list of the file and directory names in the current directory.
An easy way to see this action is to run the following command from your home directory:
```bash
$ echo *
```
Since the filesystems in Linux are generally very permissive with filenames, and filename expansion happens before the command is executed, it is possible to pass command line options (e.g. -h, --help) to commands by creating files with these names.
The following commands should show how this works:
```bash
$ ls *
%touch ./-l
$ ls *
```
Filenames are not simply restricted to simple options like -h or --help.
In face we can create filenames that match complex options:
--option=key=value
GTFOBins (https://gtfobins.github.io) can help determine whether a command has command line options which will be useful for our purposes.