Shell ================================ 简介 ---------------------------------------- Shell 是一个特殊的程序,是用户使用 Linux 的桥梁。Shell 既是一种命令,又是一种程序设计语言。 Linux 包含多种 Shell ,常见的有: - Bourne Shell(ATT的Bourne开发,名为sh) - Bourne Again Shell(/bin/bash) - C Shell(Bill Joy开发,名为csh) - K Shell(ATT的David G.koun开发,名为ksh) - Z Shell(Paul Falstad开发,名为zsh) 元字符 ---------------------------------------- shell一般会有一系列特殊字符,用来实现的一定的效果,这种字符被称为元字符(Meta),不同的Shell支持的元字符可能会不相同。 常见的元字符如下: - ``IFS`` 由 三者之一组成 - ``CR`` 由 产生。 - ``=`` 设定变量 - ``$`` 作变量或运算替换 - ``>`` 重定向 stdout - ``>>`` 追加到文件 - ``<`` 重定向 stdin - ``|`` 命令管道 - ``&`` 后台执行命令 - ``;`` 在前一个命令结束后,执行下一个命令 - ``&&`` 在前一个命令未报错执行后,执行下一个命令 - ``||`` 在前一个命令执行报错后,执行下一个命令 - ``'`` 在单引号内的命令会保留原来的值 - ``"`` 在双引号内的命令会允许变量替换 - `` ` `` 在反引号内的内容会当成命令执行并替换 - ``()`` 在子Shell中执行命令 - ``{}`` 在当前Shell中执行命令 - ``~`` 当前用户的主目录 - ``!number`` 执行历史命令,如 ``!1`` 通配符 ---------------------------------------- 除元字符外,通配符(wildcard)也是shell中的一种特殊字符。当shell在参数中遇到了通配符时,shell会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行替换,否则就将该通配符作为一个普通字符直接传递。 常见的通配符如下: - ``*`` 匹配 0 或多个字符 - ``?`` 匹配任意一个字符 - ``[list]`` 匹配 list 中的任意一个字符 - ``[!list]`` 匹配除 list 外的任意一个字符 - ``[a-c]`` 匹配 a-c 中的任意一个字符 - ``{string1,string2,...}`` 分别匹配其中字符串