您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

如何入门 Linux Shell 脚本编写

时间:2023-05-22 15:07:12  来源: Linux中国  作者:Pradeep Kumar
各位读者,我们将在本文中介绍如何在 linux 或 UNIX 系统中入门 Shell 脚本编写。

什么是 Shell 呢?

Shell(交互界面)是类 UNIX/Linux 操作系统中的一个解释器。它将用户输入的命令解释成操作系统的系统调用来执行这些命令。简单来说,Shell 形式上是操作系统的包装。比如,你可能使用 Shell 命令来列出目录中的文件,如 ls 命令,或使用命令复制,如 cp 命令。

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

在上方的例子中,当你输入 ls 并按下回车键。$ 符号是 Shell 的提示符,意味着 Shell 等着命令的输入。下面的一行就是当前目录下的文件名。

什么是 Shell 提示符?

提示符,即 $,被称作命令提示符,是由 Shell 发出的(LCTT 译注:这个概念,可能有误。请参看:https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html#Controlling-the-Prompt )。当提示符出现后(LCTT 译注:此处提示符并不特指 $ 符号),你就可以输入命令了。Shell 将会在你按下回车键后读取你的输入。它会通过查看你输入的第一个单词来确定你希望执行的命令。“单词”指的是一组连续的字符。空格和制表符作为分割单词的标志。

不同类型的 Shell

由于没有限制只能有一个 Shell,你可以按照自己的意愿来自由选择运行任何一种 Shell。这当然挺好的,但是在不清楚其它替代方案的情况下选择一种 Shell 没有多大益处。下面列出了一些 UNIx/Linux 下常见的 Shell。

Sh(Bourne Shell)

最初的 Unix Shell 通常被称作 Sh,是 Shell(或 Bourne Shell)的简写,以其作者 Steven Bourne 命名。它在几乎所有的类 UNIX 操作系统下都可以找到。基本的 Bourne Shell 仅支持相当有限的命令行编辑。你可以输入字符,使用退格键删除字符,还有就是按下回车键来执行命令。当命令行出现异常了,你可以按下 Ctrl-C 组合键来终止整个命令。

Csh(C Shell)

它是由加利福尼亚大学伯克利分校的 Bill Joy 设计的,由于它的语法和 C 语言相似,所以被命名为 C Shell。这种 Shell 在 Bourne shell 的基础上增加了一些实用功能,尤其是可以重用之前的命令来帮助创建之后要执行的命令。当你去完成一项专门任务的时候,大多数的情况下需要执行不止一条命令,这样 C shell 的能力就相当有用了。

Ksh(Korn Shell)

它是由贝尔实验室的 David Korn 创造的,Korn Shell 提供了和 C Shell 相同的增强,其中有一项重要的不同:Korn Shell 提供了对旧的 Bourne Shell 语法的向后兼容。在 Unix 下,如 AIX & HP-UX 上,Korn Shell 是默认 Shell。

Bash(Bourne Again Shell)

Bash 提供了像 Korn Shell 一样的命令行编辑,像 C Shell 一样的文件名补全和许多其它的高级功能。许多用户认为 Bash 集 Korn Shell 和 C Shell 的优点于一身。在 Linux 和 mac OS X 系统下,Bash 是默认的 Shell。

Tcsh(T C Shell)

Linux 系统推广了 Tcsh。Tcsh 扩展了传统的 csh,增加了命令行编辑、文件名补全和其它功能。例如,当你按下 Tab 键后,Tcsh 会补全文件和目录名(与 Bash 中的按键相同)。旧的 C Shell 不支持这项功能。

什么是 Shell 脚本呢?

Shell 脚本是包含一条或多条命令的文本文件。在 Shell 脚本中,Shell 程序假定文本文件的每一行是一条不同的命令。这些命令的大部分就和你在 Shell 窗口手动输入的一样。

为什么要使用 Shell 脚本呢?

Shell 脚本被用来自动化管理任务、简化复杂的配置细节,并且充分运用操作系统的性能。有了组合不同命令的能力就可以创造新命令了,从而增加操作系统的价值。此外,结合使用 Shell 与图形化桌面环境,可以兼得二者之长。

从系统管理员的角度看,日复一日的重复工作可以使用 Shell 脚本来实现自动处理,那就可以节约时间从事其它高质量的工作。

创建第一个 Shell 脚本

在当前工作目录下创建一个名为 myscript.sh 的文本文件,所有的 Shell 脚本都有 .sh 的扩展名(LCTT 译注:Linux 下根本没有扩展名一说,没有这个扩展一样是可以执行的)。脚本的第一行是 #!/bin/sh 或 #!/bin/bash,因为 # 符号被称作 “hash” 并且 ! 符号被称作 “bang” 故被称为 shebang(释伴)。至于 /bin/sh 和 /bin/bash 则指出了命令将被 Sh 还是 Bash shell 执行。

以下就是 myscript.sh 的内容:

#!/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"

上方的脚本将会展示当前工作目录、今天的日期与时间,还有磁盘空间。我们需要用到 echo 命令 和其它 Linux 命令 来实现这个脚本。

使用如下的 chmod 命令 来给文件增加执行权限:

$ chmod a+x myscript.sh

现在来执行脚本:

$ sh myscript.sh
或
$ ./myscript.sh

注意:在当前目录下执行当前目录下的 Shell 脚本,须使用 ./<脚本名> 方式,如下所示:

在 Shell 脚本中获取用户输入

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

完美,上方的输出表明脚本有输入提醒,并加工处理了相应的数据。

本文结束。希望对你是有用的。非常欢迎任何的疑问、反馈。



Tags:Shell   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
各位读者,我们将在本文中介绍如何在 Linux 或 UNIX 系统中入门 Shell 脚本编写。什么是 Shell 呢?Shell(交互界面)是类 UNIX/Linux 操作系统中的一个解释器。它将用户输入的命令...【详细内容】
2023-05-22  Tags: Shell  点击:(0)  评论:(0)  加入收藏
作者:阿良 来自:DevOps技术栈1、Dos 攻击防范(自动屏蔽攻击 IP)2、Linux 系统发送告警脚本3、MySQL 数据库备份单循环#!/bin/bashDATE=$(date +%F_%H-%M-%S)HOST=localhostUSER=...【详细内容】
2022-08-29  Tags: Shell  点击:(162)  评论:(0)  加入收藏
在 Windows 中有些特殊文件夹或隐藏目录可以用 shell 命令打开。例如系统下载目录,按 Win + R 输入 shell:Downloads 再回车就可以打开。编写程序时也可以用代码调用 shell...【详细内容】
2022-08-16  Tags: Shell  点击:(478)  评论:(0)  加入收藏
资料推荐:109个shell脚本案例174道运维面试题/128道k8s面试题/108道shell脚本面试题&middot;&middot;&middot;&middot;&middot;&middot; 经典的Shell十三问 1. 为何叫做she...【详细内容】
2022-06-30  Tags: Shell  点击:(227)  评论:(0)  加入收藏
大家好,作为互联网农名工离不开终端命令行,在工作中用的最多的工具就是「终端连接工具」了,而且企业中 Linux 服务器居多,通过终端连接工具连到服务器,在此之上我们可以排查一些...【详细内容】
2022-06-16  Tags: Shell  点击:(171)  评论:(0)  加入收藏
最受欢迎的 shell 是什么?我猜你会回答 bash 或者 zsh,没错,的确如此。UNIX 和 Linux 系统上有许多可用的 shell,包括 Bash、Ksh、Zsh、Fish 等等。最近,我碰到了另外一个 shell,...【详细内容】
2022-03-25  Tags: Shell  点击:(239)  评论:(0)  加入收藏
1、服务器系统配置初始化#/bin/bash# 安装系统性能分析工具及其他yum install gcc make autoconf vim sysstat net-tools iostat iftop iotp wget lrzsz lsof unzip openssh...【详细内容】
2022-02-08  Tags: Shell  点击:(291)  评论:(0)  加入收藏
Linux 中有很多可以查看系统信息如处理器信息、生产商名字、序列号等的命令。你可能需要执行多个命令来收集这些信息。同时,记住所有的命令和他们的选项也是有难度。-- Mage...【详细内容】
2021-02-26  Tags: Shell  点击:(335)  评论:(0)  加入收藏
Loki 扩展了 Prometheus 用于度量监测和日志聚合的模型。&bull; 来源:linux.cn &bull; 作者:Ed Welch &bull; 译者:Xingyu.Wang &bull;(本文字数:6786,阅读时长大约:9 分钟) Loki...【详细内容】
2021-01-07  Tags: Shell  点击:(365)  评论:(0)  加入收藏
在 shell 中使用 bc 更好地做算数,它是一种用于高级计算的数学语言。&bull; 来源:linux.cn &bull; 作者:Seth Kenlon &bull; 译者:geekpi &bull;(本文字数:1955,阅读时长大约:2 分...【详细内容】
2020-09-29  Tags: Shell  点击:(281)  评论:(0)  加入收藏
▌简易百科推荐
各位读者,我们将在本文中介绍如何在 Linux 或 UNIX 系统中入门 Shell 脚本编写。什么是 Shell 呢?Shell(交互界面)是类 UNIX/Linux 操作系统中的一个解释器。它将用户输入的命令...【详细内容】
2023-05-22  Pradeep Kumar   Linux中国  Tags:Shell   点击:(0)  评论:(0)  加入收藏
现如今我们已经全面迈入互联网时代:“新技术代表的新生产力,一定是我们开创未来最好的原动力”。究竟什么样的新技术,才能真正解放IT生产力,加速社会数字化转型,Make The World G...【详细内容】
2023-05-22  移动Labs    Tags:低代码   点击:(1)  评论:(0)  加入收藏
对于前端来说,网络请求主要就是用 ajax 的方式去处理。所以本文也会站在前端角度简单讲解 Node 中如何使用 http 模块。前后端对接时,现在常用的请求方法有 GET、POST、PUT、P...【详细内容】
2023-05-22  德育处主任pro  今日头条  Tags:node http   点击:(1)  评论:(0)  加入收藏
前言大家好,我是林三心,用最通俗易懂的话讲最难的知识点是我的座右铭,基础是进阶的前提是我的初心。chatGPT 回复效果相信使用过 chatGPT 的朋友,都会看到,当你提问一个问题时,cha...【详细内容】
2023-05-22  林三心不学挖掘机  微信公众号  Tags:ChatGPT   点击:(1)  评论:(0)  加入收藏
什么是嵌入嵌入(embeddings)捕捉文本、图像、视频或其他信息类型的“相关性”。这种相关性最常用于以下方面: 搜索:搜索词与文本主体的相似程度有多高? 推荐:两个产品有多相似? 分...【详细内容】
2023-05-22    闪念基因  Tags:Embeddings   点击:(2)  评论:(0)  加入收藏
阿里巴巴是中国最著名的互联网企业之一,其成功的背后离不开高质量的代码。然而,随着近年来大量公司源代码泄露事件的发生,安全问题也逐渐成为了程序员们关注的焦点。本文将从阿...【详细内容】
2023-05-19  月亮供电不足    Tags:关键词   点击:(14)  评论:(0)  加入收藏
常见的生产故障有哪些?在生产环境中,常见的故障类型包括但不限于以下几种: 网络故障:网络故障可能包括网络连接中断、网络延迟过高、路由错误等。这可能导致系统无法正常访问外...【详细内容】
2023-05-18    悟空聊架构  Tags:生产故障   点击:(11)  评论:(0)  加入收藏
摘要远程过程调用(RPC)是分布式服务广泛使用的一种技术。 这种技术现在越来越多地用于高性能计算 (HPC) 的上下文中,它允许将例程的执行委托给远程节点,这些节点可以留出并专用...【详细内容】
2023-05-18  云原生云  微信公众号  Tags:Mercury   点击:(12)  评论:(0)  加入收藏
一、摘要上篇文章中,我们有介绍到对象属性复制相关的工具,这些工具所进行的对象拷贝,其实都是浅拷贝模式。可能有的同学会发出疑问,什么叫浅拷贝?我们都知道,Java 中的数据类型分...【详细内容】
2023-05-17  Java极客技术    Tags:浅拷贝   点击:(17)  评论:(0)  加入收藏
使用 GitLab 管道部署 Terraform 为管理基础设施提供了一个安全、无缝的过程,从而实现更快、更高效的部署。基础设施即代码 (IaC) 是现代 DevOps 和敏捷团队一致、高效地管理...【详细内容】
2023-05-17  科技狠活与软件技术  今日头条  Tags:GitLab   点击:(9)  评论:(0)  加入收藏
站内最新
站内热门
站内头条