主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

Shell 教程

Shell 是一个命令行解释器,它通常用 C 语言等编程语言编写,是用户和 操作系统内核(Kernel) 之间的桥梁。

Shell 是指一种应用程序,这个应用程序提供了一个命令行界面(CLI),用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Linux Shell 教程


Shell 脚本

Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

业界所说的 shell 通常都是指 shell 脚本,但读者朋友要知道,shell 和 shell script 是两个不同的概念。

由于习惯的原因,简洁起见,本文出现的 "shell编程" 都是指 shell 脚本编程,不是指开发 shell 自身。


Shell 环境

Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。

✅ Linux 的 Shell 种类众多,下面列出常见的几种:

  • Bourne Shell(路径:/usr/bin/sh/bin/sh
  • Bourne Again Shell(路径:/bin/bash
  • C Shell(路径:/usr/bin/csh
  • K Shell(路径:/usr/bin/ksh
  • Shell for Root(路径:/sbin/sh

本文以 Bash (Bourne Again Shell) 为基础进行讲解。Bash 是 sh 的增强版本,不仅易于使用且完全免费,也因此成为日常工作中最广泛使用的 Shell。此外,它还是大多数 Linux 系统默认的命令行解释器。

在通常情况下,人们并不严格区分 Bourne Shell (sh) 与 Bourne Again Shell (bash)。因此,即使脚本中声明为 #!/bin/sh,系统也常常会调用 bash 来执行。开头的#!被称为 Shebang,用于告诉系统,其后路径所指定的程序即为执行该脚本的 Shell 解释器。


第一个shell脚本

使用文本编辑器(如通过vi/vim命令)新建一个名为test.sh的文件,扩展名.sh用于表示 Shell 脚本类型,便于识别文件用途。需要注意的是,扩展名并不会直接影响脚本的执行,仅为见名知意。例如,若使用 PHP 编写 Shell 脚本,则可将扩展名设为.php

✅ 在编写脚本时,通常在第一行输入以下格式的代码:

实例代码
复制
#!/bin/bash
echo "Hello World !"
  • #! 是一个约定的标记(Shebang),它告诉系统这个脚本需要什么解释器来执行。
  • echo 命令用于向窗口输出文本。

运行 Shell 脚本有两种方法:

1. 作为可执行程序

请将上述代码保存为test.sh文件,并切换至脚本所在目录:

实例代码
复制
chmod +x ./test.sh    # 脚本文件添加可执行权限
./test.sh             # 在当前目录下执行脚本

注意,运行脚本时必须输入./test.sh而不是test.sh。直接输入test.sh,Linux 系统会在PATH环境变量指定的目录中查找该命令,而当前目录 (.) 通常不在PATH中,因此系统会提示 “命令未找到”。使用./test.sh是明确指定在当前目录下执行。这种设计主要是出于安全考虑。

2. 作为解释器参数

直接运行解释器,并将脚本文件名作为参数传入,例如:

实例代码
复制
/bin/sh test.sh
/bin/bash test.sh
/bin/php test.php

以这种方式运行脚本时,无需在第一行指定 Shebang 解释器信息,写了也不会生效。



评论区 0
发表评论