Redian新闻
>
如何入门 Linux Shell 脚本编写 | Linux 中国

如何入门 Linux Shell 脚本编写 | Linux 中国

科技
 
导读:各位读者,我们将在本文中介绍如何在 Linux 或 UNIX 系统中入门 Shell 脚本编写。   
本文字数:3776,阅读时长大约:5分钟

各位读者,我们将在本文中介绍如何在 Linux 或 UNIX 系统中入门 Shell 脚本编写。

什么是 Shell 呢?

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

  1. $ ls
  2. 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 的内容:

  1. #!/bin/bash
  2. # Written by LinuxTechi
  3. echo
  4. echo "Current Working Directory: $(pwd)"
  5. echo
  6. echo "Today' Date & Time: $(date)"
  7. DISK=$(df -Th)
  8. echo
  9. echo "Disk Space on System:"
  10. echo "$DISK"

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

使用如下的 chmod 命令🔗 www.linuxtechi.com 来给文件增加执行权限:

  1. $ chmod a+x myscript.sh

现在来执行脚本:

  1. $ sh myscript.sh
  2. $ ./myscript.sh

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

在 Shell 脚本中获取用户输入

read 命令用来获取用户的键盘输入,并且将之赋值给一个变量。echo 命令用来展示内容。

让我们更改上方的脚本以使之获取输入:

  1. #!/bin/bash
  2. # Written by LinuxTechi
  3. read -p "Your Name: " NAME
  4. echo
  5. echo "Today' Date & Time: $(date)"
  6. echo
  7. read -p "Enter the file system:" DISK
  8. echo "$(df -Th $DISK)""

现在,再执行脚本试试,这回应该会有输入信息的提醒:

  1. $ ./myscript.sh
  2. Your Name: Pradeep Kumar
  3. Today' Date & Time: Sat 15 Oct 05:32:38 BST 2022
  4. Enter the file system:/mnt/data
  5. Filesystem Type Size Used Avail Use% Mounted on
  6. /dev/mapper/volgrp01-lv01 ext4 14G 24K 13G 1% /mnt/data

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

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

(题图:MJ/f83b771e-a70d-4c62-a169-ec42e9004a14)


via: https://www.linuxtechi.com/get-started-shell-scripting-linux/

作者:Pradeep Kumar 选题:lkxed 译者:cyberwaddle 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

LCTT 译者 :cyberwaddle
🌟
翻译: 1.0 篇
|
贡献: 1 天
2023-05-18
2023-05-18
https://linux.cn/lctt/cyberwaddle
欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
教你如何用 10 行 bash shell 脚本监控 Linux?新手如何入门活动策划?看了你就明白了如何在 Rocky Linux 9 / AlmaLinux 9 上安装 KVM | Linux 中国Chinese Gamers Brace for Adventure as the New Zelda Hits ShelvesSparkyLinux 7 “Orion Belt” 评测:稳定性与新鲜感的结合 | Linux 中国超越 Bash: 9 个不太知名的 Linux Shell 及其功能 | Linux 中国用 Tekton 在 Kubernetes 中编写你的第一条 CI/CD 流水线 | Linux 中国Shell壳牌春招Last Call!500强外企,WLB,女性友好,6大类职位,往届海归可投!如何在 RHEL 9/8 上设置高可用性 Apache(HTTP)集群 | Linux 中国Linux 下文本编辑神器:Vim 最全图解如何在 Linux 系统中使用 Ventoy 创建多重引导的 U 盘 | Linux 中国编写对社区真正有用的文档 | Linux 中国TUXEDO Stellaris 16(Gen5)是目前所能找到的终极 Linux 笔记本电脑 | Linux 中国Rust 基础系列 #8:编写里程碑 Rust 程序 | Linux 中国Jiangsu City Punishes Property Developers For Selling Cheaply硬核观察 #1001 微软正在研究使 Linux 脚本更安全爱晒衣服的日本人斜风细雨不须归在没有构建系统的情况下编写 Javascript | Linux 中国【美食探店】Roswell美国南方菜:The Mill Kitchen and Bar校招 | Shell壳牌春招Last Call!500强外企,WLB,女性友好,6大类职位,往届海归可投!Linux0基础入门,教你如何在Shell中使用正则表达式Linux ——超级漂亮的 ShellLinux下文本编辑神器:Vim 最全图解长篇小说《如絮》第一百零三章 哈尔滨-1952-1953年 2 任务常用的 34 个 Linux Shell 脚本,一定能帮到你!如何在 RHEL 8 上安装 FreeIPA 服务器 | Linux 中国Agustín Hernández:中美洲建筑背景下的未来主义巨构如何在 RHEL 9 上配置 DHCP 服务器 | Linux 中国40 个简单又有效的 Linux Shell 脚本示例!Bash 基础知识系列 #1:创建并运行你的第一个 Bash Shell 脚本 | Linux 中国如何在 Linux 中使用旧相机作为网络摄像头 | Linux 中国40 个简单又有效的 Linux Shell 脚本示例九剑一魂 - 第23回 太子遇害 贾后伏诛(九)意外地好!!!!!Microsoft 必应图像创建者
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。