什么是Shell
Shell
是计算机操作系统中的一个核心组件,充当用户与操作系统内核之间的桥梁。主要作用是接收用户输入的命令,将其翻译成系统能理解的指令,然后执行并返回结果。
如何查看自己有哪些Shell版本
以MacOS为例,在终端Terminal
中输入下行命令即可查看自己系统中有哪些Shell
版本
输出类似于下种结果:
1 2 3 4 5 6 7 8 9 10 11
| # List of acceptable Shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these Shells.
/bin/bash /bin/csh /bin/dash /bin/ksh /bin/sh /bin/tcsh /bin/zsh
|
可以查看我的系统中有Bourne-Again Shell
、C Shell
、Debian Almquist Shell
等等。
如何查看系统默认的Shell版本
在终端中输入下列命令可以输出系统默认使用的Shell
版本:
其会输出当前系统默认使用的Shell
路径,例如:
使用$0
输出正在执行的脚本名称,如:
1 2 3 4 5
| /bin/dash $ echo $0 /bin/dash $ echo $Shell /bin/zsh
|
如何编写Shell脚本
- 新建文件,文件结尾名一般以
.sh
结尾。
- 使用文本编辑器编写脚本,这里以
vim
为例:
- 输入
i
进入编辑模式,Shell
脚本第一行声明使用的Shell
类型,如果使用Bash
,则声明:
- 在第二行开始编辑自己要编写的命令,如打印Hello World,则命令如下:
- 编辑完命令后按
Esc
键退出编辑模式,输入:wq
保存文件。
- 之后执行脚本需要赋予文件可执行权限:
- 执行脚本,可以使用
./脚本名
执行(需要上一步赋予权限)或使用bash 脚本名
执行。
上述脚本全部代码如下:
1 2
| #!/bin/bash echo "Hello, World"
|
执行结果如下:
Shell关键字及特殊符号
通配符
- 一般通配符(
*
、?
、[]
、!
)
*
:匹配任意字符的0次或多次出现
?
:匹配任意一个字符
[]
:方括号中有一个字符组,其作用是匹配该字符组所限定的任何一个字符,如:
f[abcd]
:匹配字母f
后紧跟a
、b
、c
或d
中的任意一个字符.
f[a-d]
:a-d
等价于abcd
,因此匹配规则与f[abcd]
完全一致.
f[1-9]
代表匹配字母f
后紧跟一个1
到9
之间的数字.
f[*?]abc
代表匹配字母f
后紧跟字面符号*
或?
,再紧跟字符串 abc
其他正则元字符(如 .
、*
、?
)在字符组内自动失去特殊含义,视为字面字符
!
:如果它紧跟在一对方括号的左方括号([)之后,则表示不在一对方括号中所列出的字符
mindmap
root((Linux系统 Shell编程))
::icon(fab fa-linux)
什么是Shell
定义: 计算机操作系统核心组件,用户与内核桥梁
主要作用: 接收、翻译、执行命令并返回结果
如何查看自己有哪些Shell版本
命令: `cat /etc/Shells`
示例输出: `/bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh, /bin/tcsh, /bin/zsh`
如何查看系统默认的Shell版本
命令: `echo $Shell`
示例输出: `/bin/zsh`
使用 `$0` 输出正在执行的脚本名称
示例: `echo $0` (若在dash中执行,输出 `/bin/dash`)
如何编写Shell脚本
步骤1: 新建文件
文件名约定: 以 `.sh` 结尾
命令: `touch hello.sh`
步骤2: 使用文本编辑器编写脚本
示例编辑器: `vim`
命令: `vim hello.sh`
步骤3: 输入 `i` 进入编辑模式,声明Shell类型 (Shebang)
Bash声明 (脚本第一行)
`#!/bin/bash`
步骤4: 第二行开始编辑命令
示例: 打印Hello World
命令: `echo "Hello, World"`
步骤5: 编辑完命令后按 `Esc` 键退出编辑模式,输入 `:wq` 保存文件
步骤6: 赋予文件可执行权限
命令: `chmod +x hello.sh`
步骤7: 执行脚本
方法一 (需权限)
命令: `./hello.sh`
方法二: `bash hello.sh`
上述脚本全部代码如下
`#!/bin/bash`
`echo "Hello, World"`
执行结果如下
`Hello, World`