什么是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`