Linux 中的引用机制
在 Linux Shell 中,许多特殊字符都有自己的特殊含义。有时它们用于执行操作,而有时它们仅用作字符,因此引用机制执行此任务,它使我们能够以任何我们想要的方式使用它们。
元字符:这些是在将其传递给命令之前首先由 shell 解释的特殊字符。它们也称为外壳通配符。
- $ Variable 替换或扩展Variable 的值。
- >用于输出重定向。
- >>用于附加的输出重定向。
- <输入重定向。
- <<用于输入重定向,也称为此处文档。
- *匹配任意数量的字符,零个或多个字符的替换通配符
- ?匹配一个字符,替换通配符为 1 个字符
- []匹配范围字符,括号内任意字符替换通配符
- `cmd`将 cmd 替换为要执行的命令并将执行该命令,替换通配符以执行命令
- $(cmd)将 cmd 替换为要执行的命令并将执行该命令,替换通配符以执行命令
- |管道是一种重定向,用于将一个命令/程序/进程的输出发送到另一个命令/程序/进程以进行进一步处理。
- ;命令分隔符用于用一条语句执行 2 个或多个命令。
- ||或有条件地执行命令。
- && AND 命令的条件执行。
- ()将命令分组到一个输出流中。
- &在后台执行命令并显示分配的 Pid。
- #评论一些东西。
- $扩展一个变量的值。
- \用于转义字符的解释或防止这种情况发生。
转义字符或反斜杠
Backslash('\')是 bash 转义字符。任何紧跟在反斜杠后面的字符都失去了它的特殊含义,而任何跟在反斜杠后面的字母都获得了它的特殊含义。在终端中输入以下命令。
echo "Quotation"
echo \"Quotation\"
从示例中可以看出,没有反斜杠和带反斜杠的 double 不能打印,因为它们失去了特殊含义,所以它们被打印了。
反斜杠转义字符
\a alert (bell)
\b backspace
\e an escape character
\f form feed
\n new line
\r carriage return
\t horizontal tab
\v vertical tab
\\ backslash
\’ single quote
\nnn the eight-bit character whose value is the octal value nnn (one to three digits)
\xHH the eight-bit character whose value is the hexadecimal value HH (one or two hex digits)
\cx a control-x character
单引号
单引号(”)用于保留引号内每个字符的字面量值。单引号之间不能出现单引号,即使前面有反斜杠。单引号内的所有特殊字符都失去了它们的特殊含义。
有些字符串有很多特殊字符,因此很难在每个特殊字符之前使用反斜杠。因此,如果我们将相同的字符串放在单引号内,大多数特殊字符将失去其特殊含义。在终端中输入以下命令。
echo \\\
echo ''
从示例中可以看出,我们必须在第一条语句中使用大量反斜杠,这使得它变得复杂。虽然使用单引号输出相同但不使用反斜杠
双引号
双引号(“”)保留引号内所有字符的字面量,'$'、'`'、'\' 以及启用历史扩展时的'!' 除外。反斜杠仅在后跟以下字符之一时才保留其特殊含义:'$'、'`'、'"'、'\' 或换行符。在终端中输入以下命令。
name=geeksforgeeks
echo '$name'
echo "$name"
您可以看到,在单引号的情况下,变量的值没有被打印出来,而在双引号的情况下,变量的值被打印出来。
后引号
反引号(“)用于执行命令。它们之间包含的任何内容都将被视为命令并被执行。打开终端并执行以下命令。
hostname=`hostname`
echo $hostname
您可以从示例中看到 hostname 命令被执行并且名称被存储在变量中。