# 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.