What Happens when you type “ls *.c”

The Unix shell is a command language interpreter, following a simple loop calling another program to commit a system action. beginning with “read command”, “interpret the command”, “execution” and then “receiving results -or error-” where the shell display a prompt to alert the finish of the execution, a little process as simple as it’s appear with an addition of other fancy underground work.
When we need to communicate with the system through the shell interpreter we need to build a block of code named as “shell script” a kind a file contains a list of commands linked together in order to execute it like a single command. To succeed the shell dialogues we need to follow some rule defining our commands. The basic form it should like the following format:
command [OPTIONS] [ARGUMENTS]
In order to look further to the shell as interpreter let’s demonstrate the following command:
Unix has a built of certain special character called “Meta characters” the shell interpreter can recognise this character any way they appear in the command.
Every command on the Unix shell can gain some extra feature, and an addition of power if we joined with other command or when he take a wildcards symbols to surf more efficiently in the structure of file.
Wildcards is your map in the jungle.
So combining between the listing command “ls” and the wildcards, we filter more efficiently our output to fit the expectation.
Let’s say, in the middle of project we need to print out a list of all the C file filtering all the strange format without a help of any other command, so all the C file had a “.c” extension at the end of the name.
When typing “ls *.c”, the shell take ls as an aliase of another command