Chapter 4. Quoting and Escaping
Not everything is what it looks like. We must bear in mind that when dealing with operators and variables, sometimes we get unexpected results based on how we use them. A small example will make this advice more clear:
zarrelli:~$ ls
The directory has no content, so it is our starting point:
zarrelli:~$ touch *
We just created a file named star:
zarrelli:~$ ls * *
When we do ls *
, we actually see it:
zarrelli:~$ ls *
We see this even if we issue a simple ls
without any arguments:
zarrelli:~$ touch 1 2 3
Now, we created three empty files:
zarrelli:~$ ls * * 1 2 3
Well, we tried to list only the star file, but we saw all of them. How to show only the star named file? We can do so as follows:
zarrelli:~$ ls "*" *
So, now that we have quoted the star symbol, we can see the file named after it. Why is this? Well, as I said, there are some characters that have a special meaning for the shell, such as the star, which is expanded by the shell into ALL characters. This is why if...