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 we issue ls *, we will see all the files held into the directory, because we are asking to show any file whose name is made up of any characters or numbers (except for filenames starting with a dot). Quoting the star symbol prevents the shell from actually interpreting the special character ,and so take it literally, we want to see the file whose name is simply *.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.142.12.240