# 简介
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
由 <space> 或 <tab> 或 <enter> 三者之一组成CR
由 <enter> 产生。=
设定变量$
作变量或运算替换>
重定向 stdout>>
追加到文件<
重定向 stdin|
命令管道&
后台执行命令;
在前一个命令结束后,执行下一个命令&&
在前一个命令未报错执行后,执行下一个命令||
在前一个命令执行报错后,执行下一个命令'
在单引号内的命令会保留原来的值"
在双引号内的命令会允许变量替换`
在反引号内的内容会当成命令执行并替换()
在子 Shell 中执行命令{}
在当前 Shell 中执行命令~
当前用户的主目录!number
执行历史命令,如!1
# 通配符
除元字符外,通配符(wildcard)也是 shell 中的一种特殊字符。当 shell 在参数中遇到了通配符时,shell 会将其当作路径或文件名去在磁盘上搜寻可能的匹配:若符合要求的匹配存在,则进行替换,否则就将该通配符作为一个普通字符直接传递。
常见的通配符如下:
*
匹配 0 或多个字符?
匹配任意一个字符[list]
匹配 list 中的任意一个字符[!list]
匹配除 list 外的任意一个字符[a-c]
匹配 a-c 中的任意一个字符{string1,string2,...}
分别匹配其中字符串