Your bash shell understand special characters with special meanings. For example, $var is used to display the variable value. Bash expands variables and wildcards, for example:
echo $PATH echo $PS1 echo /etc/*.conf
However, sometime you do not wish to use variables or wildcards. For example, do not print value of $PATH, but just print $PATH on screen as a word. You can enable or disable the meaning of a special character by enclosing them into a single or double quotes. This is also useful to suppress warnings and error messages while writing the shell scripts.
echo "Path is $PATH"
echo 'I want to print $PATH'
There are three types of quotes
|Quote type||Name||Meaning||Example (type at shell prompt)|
|"||The double quote||The double quote ( "quote" ) protects everything enclosed between two double quote marks except $, ', " and \.Use the double quotes when you want only variables and command substitution.
* Variable - Yes
* Wildcards - No
* Command substitution - yes
|The double quotes allowes to print the value of $SHELL variable, disables the meaning of wildcards, and finally allows command substitution.|
|'||The single quote||The single quote ( 'quote' ) protects everything enclosed between two single quote marks. It is used to turn off the special meaning of all characters.
* Variable - No
* Wildcards - No
* Command substitution - No
|The single quotes prevents displaying variable $SHELL value, disabled the meaning of wildcards /etc/*.conf, and finally command substitution ($date) itself. |
|\||The Backslash||Use backslahs to change the special meaning of the characters or to escape special characters within the text such as quotation marks.||You can use \ before dollar sign is used to told to have no special meaning. Disable the meaning of the next character in $PATH (i.e. do not display value of $PATH variable):|
The backslash ( \ ) alters the special meaning of the ' and " i.e. it will escape or cancel the special meaning of the next character. The following will display filename in double quote:
FILE="/etc/resolv.conf" echo "File is \"$FILE\" "
File is "/etc/resolv.conf"
The following will remove the special meaning of the dollar ( $ ) sign:
FILE="/etc/resolv.conf" echo "File is \$FILE "
File is $FILE