Linux系统 Shell编程

FlyDinosaur Lv1

什么是Shell

Shell是计算机操作系统中的一个核心组件,充当用户与操作系统内核之间的桥梁。主要作用是接收用户输入的命令,将其翻译成系统能理解的指令,然后执行并返回结果。

如何查看自己有哪些Shell版本

以MacOS为例,在终端Terminal中输入下行命令即可查看自己系统中有哪些Shell版本

1
cat /etc/Shells

输出类似于下种结果:

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 ShellC ShellDebian Almquist Shell等等。

如何查看系统默认的Shell版本

在终端中输入下列命令可以输出系统默认使用的Shell版本:

1
echo $Shell

其会输出当前系统默认使用的Shell路径,例如:

1
/bin/zsh

使用$0输出正在执行的脚本名称,如:

1
2
3
4
5
/bin/dash
$ echo $0
/bin/dash
$ echo $Shell
/bin/zsh

如何编写Shell脚本

  1. 新建文件,文件结尾名一般以.sh结尾。
1
touch hello.sh
  1. 使用文本编辑器编写脚本,这里以vim为例:
1
vim hello.sh
  1. 输入i进入编辑模式,Shell脚本第一行声明使用的Shell类型,如果使用Bash,则声明:
1
#!/bin/bash
  1. 在第二行开始编辑自己要编写的命令,如打印Hello World,则命令如下:
1
echo "Hello, World"
  1. 编辑完命令后按Esc键退出编辑模式,输入:wq保存文件。
  2. 之后执行脚本需要赋予文件可执行权限:
1
chmod +x hello.sh
  1. 执行脚本,可以使用./脚本名执行(需要上一步赋予权限)或使用bash 脚本名执行。

上述脚本全部代码如下:

1
2
#!/bin/bash
echo "Hello, World"

执行结果如下:

1
Hello, World

Shell关键字及特殊符号

通配符

  1. 一般通配符(*?[]!)
  • *:匹配任意字符的0次或多次出现
  • ?:匹配任意一个字符
  • []:方括号中有一个字符组,其作用是匹配该字符组所限定的任何一个字符,如:
    f[abcd]:匹配字母f后紧跟abcd中的任意一个字符.
    f[a-d]:a-d等价于abcd,因此匹配规则与f[abcd]完全一致.
    f[1-9]代表匹配字母f后紧跟一个19之间的数字.
    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`
  • Title: Linux系统 Shell编程
  • Author: FlyDinosaur
  • Created at : 2025-04-25 10:27:07
  • Updated at : 2025-05-13 14:20:14
  • Link: https://www.flydinosaur.top/2025/04/25/Linux系统 Shell编程/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments