美文网首页
Shell中的特殊字符

Shell中的特殊字符

作者: echo_1992 | 来源:发表于2017-04-20 22:04 被阅读0次

Shell的预处理

当我们在shell中敲击命令按下enter键时,其实bash在这些命令字符送到命令前做了一些处理,这些处理叫expansion,比如“*”字符在shell命令行中有很多意义。在命令行enter后,这些特殊字符将会扩展成另外的一些东西。
echo是shell內建的程序,打印出该命令的参数到stdout。但是如果是echo *,命令将不是打印出*而是另外一些东西。shell在echo命令执行之前将*扩展成了另外的东西。

  1. 通配符“*”的工作机制被称为pathname expansion。


    通配符*
  2. ”在单词前扩展为该单词名称的家目录,如syl。
    ~家目录
  3. “$”是算术扩展。echo $((expression)),可以嵌套。echo $((2 + 2));echo $(($((5**2)) * 3))。
    $算术扩展
  4. {}花括号扩展。可以根据花括号中的模型pattern创建多个text字符串


    花括号扩展
  5. 参数扩展parameter expansion。在系统中存储着一些有名字的数据集,实际上这些数据集叫做变量。echo $USER显示USER变量的内容。想要知道可用的变量列表可以printenv | less。


    变量扩展
  6. 命令替换。可以让我们使用一个命令的输出作为另一个命令的参数。


    命令替换

引号的使用

出现问题
  • 忽略了参数中多余的空格
  • 由于$1是一个没有定义的变量所以为空字符

引号的出现解决这些问题。

双引号

将字符放在双引号内,shell中那些拥有特有含义的字符就失去了这些特殊含义,只是普通的字符文本,但是其中“$”“\”“`”三个例外。


出现问题

ls命令会认为这是两个参数。用ls -l "two words.txt"就可以去除空格的影响,修复mv "two words.txt" two_words.txt。然而$依然可用,echo "$USER $((2 + 2)) $(cal)"。


$依然可用
通常,单词分割是根据空格space,制表符tab,换行newlines这些单词间的分隔符。这就是说,没有在引号内的spaces,tabs,newlines并不是文本的一部分,他们只是分隔符,因此就变成了多个命令参数。加上双引号就取消了这些分隔符的意义,变成一个参数。
分隔符

单引号

为了消除所有的expansion,使用单引号

单引号

转义字符

通常在双引号中出现的消除特殊含义的扩展。

相关文章

  • Shell中的特殊字符

    Shell的预处理 当我们在shell中敲击命令按下enter键时,其实bash在这些命令字符送到命令前做了一些处...

  • 转义

    有些字符有特殊的意义,但是放在"中便不会被shell解释,如'、*。 有些字符即使在"中,仍然具有特殊意义,如$、...

  • python脚本入参的单、双引号

    Linux的shell中存在一些特殊字符(保留字),我们将这些具有一些特殊功能的字符叫做meta(元字符),还有一...

  • shell特殊字符

    转载自:https://www.cnblogs.com/wangcp-2014/p/6427689.html Sh...

  • Shell特殊字符

    命令替换 命令替换是指从命令输出中提取信息,并将其赋给变量,有如下2种方法。 反引号字符(`) $()形式 She...

  • Linux中的转移符号

    1.转义字符""如果将“\”放到特殊字符前面,shell就忽略这些特殊字符的原有含义,把它们当作普通字符对待,例如...

  • shell编程之转义和引用

    转载自:挑战者V shell中有两类字符,一类是普通字符,在Shell中除了本身的字面意思外没有其他特殊意义,即普...

  • Linux Shell 特殊字符

    在Linux Shell中有很多的特殊符号,这对于我们写Shell脚本时要特别留意:一方面要知道这些特殊符号的用法...

  • Linux 基础知识

    第一章:特殊字符 1.1 & 特殊字符 在Linux的 shell 文件中常会见到以 & 结尾的命令,例如: 命令...

  • Linux运维学习三

    十三、shell中的特殊且重要的变量 1.shell中的特殊位置参数变量在shell中存在一些特殊且重要的变量,例...

网友评论

      本文标题:Shell中的特殊字符

      本文链接:https://www.haomeiwen.com/subject/byfrzttx.html