什么是 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 中接受用户的输入
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
$
完美,上面的输出证实了脚本正在提示输入和处理数据。
扩展阅读: How to Debug a Bash Shell Script in Linux
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。