什么是 Shell ?

shell 是 类 Unix / Linux 操作系统中的解释器,它获取用户键入的命令,并调用操作系统运行这些命令。简单地说,shell 充当的是操作系统的包装器角色。例如,您可以使用 shell 输入 ls 命令来列出目录中的文件,输入 cp 命令执行复制操作。

$ ls
Desktop Documents Downloads Music Pictures playbook.yaml Public snap Templates test5 Videos
$

在本例中,当您简单地输入 ls 并按下 enter 时。$ 是 shell 提示符,它告诉您 shell 正在等待您的命令。其余行是当前目录中的文件名。

什么是 Shell 提示符 ?

提示符 $ 被称为命令提示符,由 shell 发出。当提示符显示时,您可以输入命令。shell 在呈现后读取您的输入。它通过查看输入的第一个单词来确定要执行的命令。单词是一组完整的字符。空格和制表符分隔单词。

有哪些不同类型的shell ?

由于 shell 没有被垄断,您可以运行任何你喜欢的 shell,但是我们有必要知道其它替代方案是很有帮助,以下是是一些常见的可供 UNIX / Linux 使用的 shell 列表。

Bourne Shell

最初的 Unix Shell 被称为 sh,是 Shell 或 Bourne Shell 的缩写,以 sh 的创建者 steven Bourne 命名。这在几乎所有的 Unix 类操作系统上都可用。Basic bourne shell 只支持最有限的命令行编辑,您可以输入字符,用退格键删除一个字符,按回车键来执行命令。如果命令行出错,可以按 Ctrl-C 取消整个命令。

C Shell

它是由加州大学伯克利分校的 Bill Joy 设计的,C shell 之所以如此命名,是因为它的许多语法与 C 编程语言相似。这个 shell 为 Bourne shell 添加了一些简洁的特性,特别是能够召回以前的命令以帮助创建将来的命令。因为很可能需要执行多个命令来执行一个特定的任务,所以这个 C shell 功能非常有用。

Korn Shell

它是由 AT&T Bell 实验室的 David Korn 创建的,Korn shell 或 ksh 提供了 C shell 提供的相同类型的增强,但有一个重要的区别:Korn shell 向后兼容较老的 Bourne shell Synatx。在 AIX 和 HP-UX 等 UNIX 系统中,korn shell 是默认 shell。

Bash (Bourne Again Shell)

Bash 提供了像 korn shell 一样的命令行编辑功能,像 C shell 一样的文件名完成功能,以及许多其他高级特性。许多用户认为 bash 在一个 shell 中集合了 Korn 和 C shell 的优点。在 Linux 和 Mac OS X 系统中,bash 是默认 shell。

tcsh (TC Shell)

Linux 系统普及了 tc shell (tcsh),tcsh 扩展了传统的 csh,增加了命令行编辑、文件名补全等功能。例如,当您按 Tab 键 (与 bash 中使用的键相同) 时,tcsh 将补全文件和目录名。旧的 C shell 不支持这个特性。

什么是 Shell Script ?

Shell Script 是一个包含一个或多个命令的文本文件。在 shell 脚本中,shell 假定文本文件的每一行都包含一个单独的命令。这些命令在大多数情况下看起来就像在 shell 窗口中键入的一样。

为何使用 Shell Script ?

Shell Script 用于自动化管理任务,封装复杂的配置细节,并获得操作系统的全部功能。组合命令的能力允许您创建新的命令,从而为您的操作系统增加价值。此外,将 shell 与图形化桌面环境结合起来可以使您获得两方面的优势。

在 Linux 系统管理员日常工作中,每天重复的任务可以使用 shell 脚本自动化,这节省了时间,并允许管理员进行高质量的工作。

创建 Shell Script

在当前目录中创建一个名为 myScript.sh 的文本文件,所有 Shell 脚本都具有 .sh 扩展名。Shell 脚本的第一行是 #!/bin/sh#!/bin/bash,它被称为 Shebang, 指明命令使用 SH 或 Bash Shell 解释器执行。

#!/bin/bash
# Written by LinuxTechi
echo
echo "Current Working Directory: $(pwd)"
echo
echo "Today' Date & Time: $(date)"
DISK=$(df -Th)
echo
echo "Disk Space on System:"
echo "$DISK"

上面的 shell 脚本将显示当前工作,今天的日期和时间以及文件系统磁盘空间。我们使用了 echo 命令和其他 linux 命令来构建这个脚本。

使用 chmod 命令分配可执行权限

$ chmod a+x myscript.sh

现在执行脚本

$ sh myscript.sh
or
$ ./myscript.sh

注意: 要执行当前目录中 shell 脚本,请使用 ./{script-name},如下所示

shell-script-contents-linux

在 Shell Script 中接受用户的输入

Read 命令用于获取用户通过键盘输入的值并将值赋给一个变量,Echo 命令用于查询查询内容。

让我们修改上面的脚本,以便它开始接受输入

#!/bin/bash
# Written by LinuxTechi
read -p "Your Name: " NAME
echo
echo "Today' Date & Time: $(date)"
echo
read -p "Enter the file system:" DISK
echo "$(df -Th $DISK)"

现在,尝试执行脚本,这次应该会提示输入详细信息。

$ ./myscript.sh
Your Name: Pradeep Kumar

Today' Date & Time: Sat 15 Oct 05:32:38 BST 2022

Enter the file system:/mnt/data
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/volgrp01-lv01 ext4 14G 24K 13G 1% /mnt/data
$

Input-Read-Shell-Script-Examples

完美,上面的输出证实了脚本正在提示输入和处理数据。

扩展阅读: How to Debug a Bash Shell Script in Linux

我的开源项目

酷瓜云课堂


鸠摩智首席音效师
472 声望9 粉丝

身强体健,龙精虎猛的活着。