2019独角兽企业重金招聘Python工程师标准>>>

shell是什么语言?shell 语言的本质

“Shell是Linux/Unix的一个外壳,你理解成衣服也行。它负责外界与Linux内核的交互,接收用户或其他应用程序的命令,然后把这些命令转化成内核能理解的语言,传给内核,内核是真正干活的,干完之后再把结果返回用户或应用程序”

----池建强 著. “MacTalk·人生元编程”。

Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式协调各个程序的运行。因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键。

shell的语言的运行场景

因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上。同时,它运行于高于系统内核的环境,能够简单地执行一些文件系统级的高级操作。

因此,之所以要使用Shell脚本是基于:

  • 简单性:Shell是一个高级语言,处于内核外层环境;通过它,你可以简洁地表达复杂的操作。

  • 可移植性:使用POSIX所定义的功能,可以做到脚本无须修改就可在不同的系统上执行。

  • 开发容易:可以在短时间内完成一个功能强大又妤用的脚本。

因此shell常见于系统维护中,文本处理也是shell的优势(能够快速地使用文本处理语言,结合管道,重定向实现需求)。

shell语言的限制

Shell脚本的命令限制和效率问题,下列情况一般不使用Shell:

  • 资源密集型的任务,尤其在需要考虑效率时(比如,排序,hash等等)。

  • 需要处理大任务的数学操作,尤其是浮点运算,精确运算,或者复杂的算术运算(这种情况一般使用C++或FORTRAN 来处理)。

  • 有跨平台(操作系统)移植需求(一般使用C 或Java)。

  • 复杂的应用,在必须使用结构化编程的时候(需要变量的类型检查,函数原型,等等)。

  • 对于影响系统全局性的关键任务应用。

  • 对于安全有很高要求的任务,比如你需要一个健壮的系统来防止入侵、破解、恶意破坏等等。

  • 项目由连串的依赖的各个部分组成。

  • 需要大规模的文件操作。

  • 需要多维数组的支持。

  • 需要数据结构的支持,比如链表或数等数据结构。

  • 需要产生或操作图形化界面 GUI。

  • 需要直接操作系统硬件。

  • 需要 I/O 或socket 接口。

  • 需要使用库或者遗留下来的老代码的接口。

  • 私人的、闭源的应用(shell 脚本把代码就放在文本文件中,全世界都能看到)。

如果你的应用符合上边的任意一条,那么就考虑一下更强大的语言吧——或许是Perl、Tcl、Python、Ruby——或者是更高层次的编译语言比如C/C++,或者是Java。即使如此,你会发现,使用shell来原型开发你的应用,在开发步骤中也是非常有用的。

转载于:https://my.oschina.net/u/658505/blog/666807

shell是什么语言?shell 语言的本质相关推荐

  1. linux中写脚本一般用语言,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

  2. 脚本语言语言脚本语言:Shell , JavaScript、VBScript、Perl、PHP、Python、Ruby、Lua

    今天一直在研究脚本语言语言之类的问题,上午正好有机会和大家共享一下. 脚本语言:Shell , JavaScript.VBScript.Perl.PHP.Python.Ruby.Lua 工作控制语言和 ...

  3. C语言多维数组本质技术推演

    C语言多维数组本质技术推演 多维数组本质技术推演 多维数组本质技术推演 int a[10];char myarray[3][5] PK int (*p)[5] myarray名称到底是什么? 多维数组 ...

  4. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

  5. Shell test命令(Shell [])详解,附带所有选项及说明

    test 是 Shell 内置命令,用来检测某个条件是否成立.test 通常和 if 语句一起使用,并且大部分 if 语句都依赖 test. test 命令有很多选项,可以进行数值.字符串和文件三个方 ...

  6. shell 中| || () {} 用法以及shell的逻辑与或非

    && 运算符: 格式 command1 && command2 &&左边的命令(命令1)返回真(即返回0,成功被执行)后,&&右边的命令 ...

  7. Linux Shell脚本 - 什么是Shell

    前言 笔者也是刚接触Linux,很多概念也是一边查资料一边摸索着理解,下面有一些专业性的术语是来源于网络资源. 一些概念笔者本人也还理解得比较模糊,看似简单的东西,深入发掘也会发现并不简单,很多概念都 ...

  8. linux shell 原理,linux下shell的工作原理

    linux下shell的工作原理 2009-12-8 10:19:53   出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...

  9. php 与shell,[转]PHP与Shell交互

    From : http://blog.csdn.net/houqd2012/article/details/8219199 最近想使用PHP与Sheel进行交互.PHP控制显示和高层的逻辑结构.She ...

  10. [shell]shell 中| || () {} 用法以及shell的逻辑与或非

    转自:https://www.jianshu.com/p/617c1ee1e46e | 运算符 管道符号,是unix一个很强大的功能,符号为一条竖线:"|". 用法: comman ...

最新文章

  1. spark-submit --files 动态加载外部资源文件
  2. 科技部:论文数量、影响因子不可与奖励奖金挂钩,网友:早就该治了
  3. 高并发下redis缓存穿透问题解决方案
  4. 机器人动力学建模实例:二连杆机械臂
  5. NeuSoft(2)添加系统调用
  6. 人工智能导论 王万良教授_学会动态丨辽宁省人工智能导论教学研讨活动在沈阳成功举办...
  7. 3、 AUTO_INCREMENT:主键自增长
  8. x64版本的OpenGL库配置
  9. The SDK platform-tools version ((23)) is too old to check APIs compiled with API 26;
  10. u8转完看不到菜单_web网页有错误,无法看到操作菜单-用友U8
  11. 虚拟服务器的好处与坏处,常见服务器虚拟化的弊端主要是什么问题?
  12. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案
  13. Oracle查看并修改最大连接数
  14. python怎么导出数据_如何用python将数据导出
  15. AtCoder Grand Contest 028题解
  16. CentOS下安装php gd库报错Error: php56w-common conflicts with php-common-5.3.3-48.el6_8.x86_64
  17. Linux用户和用户组详解
  18. Firefox 的about:config
  19. 如何配置Java环境
  20. Apipost--软件测试

热门文章

  1. 网站被挂木马病毒了,怎么办?
  2. DBN深度信念网络介绍
  3. Unity3D游戏开发之在uGUI中使用不规则精灵制作按钮
  4. Pytorch:基于转置卷积解码的卷积自编码网络
  5. 我的世界服务器修改地图名字,我的世界改存档名字怎么改
  6. PyTorch深度学习基础之Reduction归约和自动微分操作讲解及实战(附源码 超详细必看)
  7. Linux中alias永久更改命令别名
  8. 100天搞定机器学习(100-Days-Of-ML)(一)数据预处理
  9. 多域单点登录SSO系统的实现
  10. C中Ascii码对照