shell和bash 你是不是傻傻分不清?什么又是shell脚本

什么是shell

Shell在计算机科学中是指一个提供给用户使用操作系统功能的接口。这种接口可以是图形化的,也可以是基于文本的命令行接口。

在Linux和Unix-like系统中,“shell”一词通常特指命令行接口(Command Line Interface, CLI)。它允许用户通过键入命令来与操作系统交互。Shell接收用户的命令,然后将其传递给操作系统的内核去执行。之后,它将执行结果返回给用户。

有许多不同类型的shell,每个都有自己的特性集和语法。
最常见的Linux shell 包括:

  • Bash (Bourne Again Shell): Bash是许多Linux发行版的默认shell,以及MacOS之前版本的默认shell。它是Bourne Shell (sh) 的增强版,提供了更多的功能和改进。
  • Tcsh / Csh (C Shell): Csh的语法和C编程语言类似。Tcsh是Csh的改进版本,添加了命令行编辑等特性。
  • Zsh (Z Shell): Zsh包含了Bash的许多特性,并且还加入了自己的额外功能,如改进的自动补全和主题支持。
  • Fish (Friendly Interactive Shell): Fish是设计来易于使用的,它提供了丰富的功能,比如高级自动补全和人性化的界面。

在shell中,用户可以运行各种各样的命令,从文件管理、查看系统信息到复杂的脚本编写等等。由于命令行界面没有图形,它依赖于输入的文本命令和返回的文本输出,这使得它非常灵活和强大,尤其是对于那些已经熟悉了命令和脚本的用户。
Shell脚本是一系列以文本形式保存的命令集合,可以被shell顺序执行,这使得自动化复杂的任务成为可能。

总结来说,shell是用户和Linux操作系统之间互动的媒介,类似于Windows中的命令提示符或PowerShell,但功能要更加强大和灵活。

那为什么会有shell脚本一说?

Shell 脚本的出现是为了允许用户自动化命令行任务,使得重复性或复杂的操作可以方便地一次性执行。使用 Shell 脚本可以组合多个命令,创建更加强大和灵活的工具,提高工作效率。以下是 Shell 脚本存在的几个原因:

  • 自动化: 通过将一系列命令和逻辑写入一个脚本文件中,您可以简单地运行该脚本来自动执行这些命令。这种自动化对于定期需要运行的任务尤其有用。

  • 批处理: Shell 脚本通常用于批处理大量文件,例如批量重命名、转换格式或提取数据。

  • 系统管理: 系统管理员使用 Shell 脚本来管理系统状态,如备份、更新、监控系统性能等。

  • 编程功能: Shell 提供了许多传统编程语言的特性,如变量、循环、条件判断和函数,允许开发者写出相对复杂的程序。

  • 快捷方式: 如果您经常需要输入长串的命令,可以把它们写入一个脚本中,以后就可以简单地调用脚本而无需重新输入全部命令。

  • 可移植性: Shell 脚本基于文本,不依赖于特定的IDE或编译器,通常在任何类Unix系统上都可以运行,只要交互的Shell类型(如Bash, Zsh等)兼容。

  • 集成和扩展: Shell 脚本可以轻松地调用其他命令行工具和程序,也可以通过各种各样的命令和资源与操作系统进行交互。

事实上,Shell 脚本是 Unix 和 Linux 系统管理的一个核心工具。由于它们是基于文本的,所以易于编辑和分享,并且可以通过常见的版本控制系统进行管理。此外,学习 Shell 脚本是理解操作系统工作方式的好方法,这在很多情况下都是一项非常宝贵的技能。

什么是脚本?为什么叫脚本?

像javascript、shell这类是不是可以写入一个文本文档,然后直接被解释器执行(nodejs、bash)

创建一个名为 script.js 的文件
写入
console.log('Hello, World!');
命令行执行
node script.js

script.sh
 用vim 编辑
#!/bin/bash
echo "Hello, World!"
保存后 赋予执行权限
chmod +x script.sh

如果你在当前目录下,可以通过在脚本名前加上 ./ 来执行脚本:
sh
./script.sh

bash script.sh 可以用解释器直接执行

“脚本”(Script) 这个词在计算机编程语境中指的是一种用来自动化执行任务的编程代码。脚本通常由一系列命令组成,可以由解释器直接逐行读取和执行,而不需要像编译型语言那样事先编译成机器语言。

以下是为什么它们被称为“脚本”的一些原因:

  • 轻量级: 脚本通常比完整的程序简单,大小较小,并且易于编写和理解。

  • 即时执行: 脚本语言设计成被解释执行,这意味着代码可以立即运行,而无需编译过程。这使得开发者能快速测试和修改代码。

  • 自动化流程: 脚本最初的目的之一就是自动执行操作系统中的常规任务,如批处理文件、管理系统配置、运行定期的备份等。

  • 灵活性: 脚本允许用户快速地更改程序的行为,只需编辑文本文件即可调整脚本逻辑。

  • 文本形式: 脚本是以纯文本形式保存,使得它们容易使用普通的文本编辑器进行编辑、共享和分发。

  • 支持交互: 脚本常常用于创建交互式环境,如Shell脚本可与用户进行交互、获取输入并提供输出。

另外,“脚本”一词也可能源自早期的电影和戏剧产业,其中“剧本”或“脚本”是演员和导演用来指导演出的文字记录。类似地,在计算机世界里,“脚本”是计算机用来执行一连串操作的指令集。

Shell脚本是这一概念的一个实例,它包含了一系列的Shell命令,以文本形式存储,并可被Shell程序读取和执行。这些脚本大大简化了系统管理和任务自动化的复杂性。其他类型的脚本语言还包括Python、Ruby、Perl和JavaScript(尤其是Node.js环境下)。

  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值