「速通Shell」初次走近Shell,Shell是什么?

这篇具有很好参考价值的文章主要介绍了「速通Shell」初次走近Shell,Shell是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对于开发者来说,除了掌握Java、C/C++等主要编程语言外,还需要掌握支撑性的工具语言和库,学习和掌握Shell,能够帮助我们高效便捷的编译和运行程序,让系统代替复杂的人工操作。通过速通Shell系列,我们一起走近Shell,读懂Shell,用好Shell,提高程序执行效率和日常工作效率。

初次走进Shell

要想走进Shell的世界,我们需要先观其貌,识其才,进而攻其心,得其人,所谓知己知彼,无往不利。我们从Shell的概念、原理、分类和优点开始。

Shell是什么

Shell 是一种脚本语言,一种命令语言,也是一种程序设计语言。脚本语言最显著的特点是解释执行而非编译执行,一个Shell脚本主要由原本需要在命令行输入的命令组成,Shell可以控制进程和文件,以及启动和控制其它程序。Shell 通过提示输入,向操作系统解释该输入,然后处理来自操作系统的结果输出,管理用户与操作系统之间的交互。

Shell工作原理

计算机设备是由一个个物理硬件组成的,本身不具备运行处理能力,需要通过内核和驱动对硬件进行操作,驱动其工作。在计算机系统中,内核接口是隐藏起来的,用户不能直接操作内核,我们需要通过一个中间程序,接收用户操作命令,将其传递给内核,推动内核工作,进而推动硬件工作。Shell便是这个中间程序,起到连接操作系统内核和用户的作用。

「速通Shell」初次走近Shell,Shell是什么?

所以Shell起到一个代理商的作用,通俗点说,有点像一个代购。一般情况下,我们难以直接获得海外商品,可以将需求提给代购。代购理解消化需求后,去海外供应商采购商品,供应商就是内核。供应商收到采购指令,将商品返回给代购,代购将商品可视化的呈现给用户。

Shell分类

随着历史发展和技术演进,Shell诞生了数个版本,它们彼此借鉴学习,推陈出新,使得Shell更容易被用户接受和使用,极大释放了生产力。主要Shell版本如下:

  • Bourne Shell

    标识为sh,由Steve Bourne在贝尔实验室开发,在UNIX系统中被普遍使用,在编程方面比较优秀,但在用户交互方面没有其他Shell优秀。

  • Bourne-Again Shell

    标识为bash,该Shell是linux操作系统上使用最为广泛的Shell,也是现在的主流Shell,在Bourne Shell基础上增强了很多特性,如命令补全,命令历史表等。

  • Korn Shell

    标识为ksh,二十世纪八十年代早期由David Korn在贝尔实验室编写开发。它完全向上兼容Bourne Shell并包含了C Shell的很多特性,集成了C Shell和Bourne Shell优点。

  • C Shell

    标识为csh,C Shell开发于二十世纪七十年代末,作为编程语言使用时,语法类似于C,更容易被接受。此外,C Shell还提供了增强交互使用的功能,如作业控制、命令行历史和别名等。但是类C的特点使其降低了作为脚本语言的灵活性,因此C Shell对于个人用户而言运行比较慢。

现如今,在我们日常系统中,bash已经成为Shell编程的不二人选,因此速通Shell系列也是全部采用bash版本。

Shell的优势

没有金刚钻就揽不了瓷器活,Shell能够在软件系统中有着举足轻重的作用,自然有着它的天然优势,简单、易用、高效是其三大基本原则。

  • 语法简单

    Shell看似复杂,实际上语法和结构是比编译执行的编程语言要简单,主要内容是命令调用、语句拼接、文件读写等,逻辑复杂度一般不会非常高;

  • 使用方便

    Shell将一系列操作复杂的命令存储在一个或几个脚本文件内,只需要一次调用就可以顺序执行完所有命令;

  • 适用范围广

    Shell是解释执行,灵活性高,适用场景多,例如代码编译、版本打包发布、软件安装、程序运行、log存储、进程监控等一系列操作繁琐、重复性高的工作,均可以依靠Shell来高效准确完成。

第一个Shell脚本

Hello World

按照惯例,我们编写一个最基本的Shell脚本hello.sh:

#!/bin/bash
echo "hello world"

代码只有两行,但也值得进行一下分析。

脚本文件第一行使用#!符号指定一个脚本的解释器,如#!/bin/bash、#!/bin/sh等,该行被#注释,所以不会被当作命令来执行,但计算机通过该注释信息得知应该使用什么解释器来解释整个脚本文件中的所有有效代码,在上面的例子中使用的解释器是/bin/bash。

脚本文件第二行echo 命令用于向窗口输出文本,hello word被双引号括起来,表示是一个字符串。

Shell脚本文件以sh作为扩展名,sh代表Shell。脚本写完,下面看一下脚本怎么运行。

Shell执行方式

Shell是解释型语言,常用执行方法有四种:绝对路径执行、相对路径执行、脚本命令执行、系统命令执行。

绝对路径执行

刚创建出来的脚本文件是没有可执行权限的,因此绝对路径执行时需要先给脚本文件赋予可执行权限,使用命令chmod +x hello.sh即可。执行完毕,打印hello world。

「速通Shell」初次走近Shell,Shell是什么?

相对路径执行

相对路径就是通过./来执行脚本文件,操作最为方便。

「速通Shell」初次走近Shell,Shell是什么?

脚本命令执行

通过sh或者bash命令来执行脚本,不需要为脚本文件分配可执行条件。该方式下,脚本默认解释器类型为运行命令所指定,不受脚本文件开头的#!/bin/bash、#!/bin/sh所控制。

「速通Shell」初次走近Shell,Shell是什么?

系统命令执行

通过source命令来执行脚本,在执行时hello.sh作为了参数source命令的参数,因此也不需要hello.sh有执行权限。

「速通Shell」初次走近Shell,Shell是什么?

总结

在项目开发中,脚本是工具性语言,受到的关注不如C/C++、Java等语言高,但它是操作系统和软件项目运行的推进器和管理员,尤其是在运维上起到了关键作用。掌握Shell编程,实现软件自动化,大大提升了我们的工作效率,提高了系统的运行效率。

一支战队是否优秀,C位非常重要,辅助也要出彩,相辅相成。

下一篇我们将进入shell编程非常关键的变量。文章来源地址https://www.toymoban.com/news/detail-438685.html

到了这里,关于「速通Shell」初次走近Shell,Shell是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 为什么开发者关系对 Web3 的成功至关重要?

    之前,我们研究了早期初创公司如何建立开发者社区和跟踪产品与市场的契合度。如果没有有效的开发者关系团队,这些举措不太可能成功。 开发者关系专业人员通常作为信息枢纽,经常与产品、销售和营销等其他运营团队合作,并让每个人都了解情况。由于许多Web3初创公

    2023年04月08日
    浏览(57)
  • 为什么超过500万开发者选择了ASP.NET Core?

    ASP.NET Core 是一个新的开源和跨平台的框架,用于构建如 Web 应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。 ASP.NET Core 应用可运行于 .NET Core 和完整的 .NET Framework 之上。构建它的目的是为那些部署在云端或者内部运行(on-premises)的应用提供

    2024年02月04日
    浏览(51)
  • 为什么聚合云厂商的vps可以降低谷歌开发者账号关联风险?

    谷歌上架马甲包需要多个不同的开发者账号,而谷歌又不允许一个开发者拥有多个账号。 因此,谷歌会通过多种方法分析判断是否存在账号关联或滥用,但具体算法或方法并没有公开。根据经验,IP是一个重要因素。 先了解一下谷歌及其它平台是如何根据IP地址来判断账号关

    2024年02月07日
    浏览(51)
  • 为什么越来越多的开发者放弃使用Postman,而选择Apifox

    1、Postman + Swagger + Mock + JMeter 作为一个后端开发,我做的大部分项目一般都是基于 Swagger 来管理 API 文档,基于 Postman 来做接口调试,基于 JMeter 来做接口性能测试,基于 RAP 等工具 Mock API 数据。 2、存在的问题 (1)多系统数据不互通 API设计者、前端开发、后端开发、测试人

    2024年01月20日
    浏览(54)
  • 开发者工具network里请求pending状态耗时长是为什么?(项目部分页面的请求)

    前言:本文主要是提问,后文有一个解决办法,但仅供参考 目录 问题 排查过程 解决办法(仅供参考) 提问:         在开发一个数字化大屏项目的时候遇到问题:某个大屏接口请求10多秒才能拿到响应数据,其他大屏页面接口响应很快。         发现主要是接口statu

    2023年04月08日
    浏览(75)
  • 如何成为一名高效的前端开发者(10X开发者)

    如今,每个人都想成为我们所说的“10倍开发者”。然而,这个术语经常被误解和高估。 本质上,一个高效或者10倍开发者,在我看来,是指那些能够充分利用所有可用工具的人,通过让这些工具处理冗余和重复的任务,使他们能够专注于复杂和创造性的工作。以下是一些成

    2024年02月05日
    浏览(71)
  • 小米手机开发者选项在哪?小米手机怎么打开开发者选项

    小米手机开发者选项在哪?小米手机的开发者选项是什么?开发者选项是小米手机中的隐藏功能,为什么我们会问起这个呢?因为普通的设置我们都很容易就能找到,但开发者模式是需要用特殊的操作才能将其唤醒。下面就让我们看看怎么将这个隐藏设置给唤醒吧! 第1步:

    2024年02月10日
    浏览(47)
  • 开发者的瑞士军刀!一款适用于开发者的工具集合!

    大家好,我是 Java陈序员 。 俗话说“工欲善其事必先利其器”,有一个好的工具可以事半功倍。 编程开发亦是如此。 今天,给大家介绍一款离线的 Windows 应用程序,该应用涵盖常见的开发工具集合,旨在提高工作效率! 关注微信公众号:【Java陈序员】,获取 开源项目分享

    2024年01月22日
    浏览(63)
  • 极路由怎么申请开发者权限?极路由开发者模式的详细教程

    极路由最新固件已经开通了root权限,供有经验的同学自助开发插件。鉴于部分同学依然不知道如何申请开发者权限,懒蛇写这篇教程简单讲一下申请过程。 1、浏览器输入192.168.199.1,进入极路由管理页面,点击进入云平台。 2、云平台选择“路由器信息” 3、滚动到页面底部

    2024年02月08日
    浏览(61)
  • 华为云课堂基础认证,开发者认证,HarmonyOS应用开发者认证的题库

    1【习题】运行Hello World工程  习题内容 判断题 1. main_pages.json存放页面page路径配置信息。(正确) 2. DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。(正确) 单选题 1. 在stage模型中,下列配置文件属于AppScope文件夹的是?(C) A. main_pages.json B. module.json5 C. app.json5 D.

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包