当前位置: 首页 > news >正文

linux shell从入门到精通(一)——为什么要学习Linux Shell

1.编译型语言和解释型语言

  计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一种是编译(compile),另一种是解释(interpret)。两种方式只是翻译的时间不同。编译型语言写在程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,例如:Windows系统中的EXE文件,编译好后运行该文件的话就不用重新编译了,直接使用编译的结果就行。因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。Linux中的许多外部命令都是这种类型,它们的文件格式是二进制文件。
解释型语言则不同,解释型语言不需要编译,省了道工序,但在其运行程序的时候需要翻译,例如:Linux Shell语言中,专门有一个解释器能够直接执行程序(/bin/sh或者bash,zsh,csh等),每个语句都是执行的时候才翻译。这样解释型语言每执行依据就要翻译一次,效率比较低。
编译型语言与解释型语言的差异如下

  1. 许多中型、大型的程序都是编译型语言写成。例如:C/C++,Java,Fortran等。这些大型语言的源代码需要经过编译才能转化为目标代码,机器才刻度、可执行
  2. 编译型语言的优点是搞笑,缺点是难以执行上层的一些简单操作,因为编译型语言运行于机器底层。例如:在C++中就难以对某目录下的所有文件执行批量重命名。
  3. 脚本语言都是解释型语言,解释型语言在UNIX系统中很常见,例如:Shell、Perl、Python、awk、Rudy等
  4. 解释型语言的执行层面高于编译型语言,因此可以轻松地进行一些高级操作。功能强大地解释型语言王王被称为胶水语言(如python),可以迅速地利用各种工具和语言熟悉搭建想要的功能。脚本语言被广泛应用于系统管理、模型搭建等领域,但解释型语言的劣势也十分明显,执行效率低。

2.特别说明python

  这里要特别讲一下python。python是一种解释型语言,但是为了效率考虑,python也提供了编译的方法,编译之后是bytecode的形式。python也提供了和Java类似的VM来执行这样的bytecode,不同的是,因为python是一种解释型语言,所以编译不是一个强制的操作。事实上,编译是一个自动的过程。
多数情况下,你甚至不会留意到它的存在,编译成bytecode可以节省加载模块的时间,从而提高效率

3.Linux Shell编程的优势

  使用Linux Shell作为编程工具的优势在于,它运行在高于系统内核的环境,能够简单地执行一些文件系统级的高级操作。因此,迅速地搭建系统,维护需要的功能变成可能,这种特性,也使得Linux Shell的编程效率十倍、百倍的高于其它编译型语言。由于Linux众多工具的支持,往往用编译型语言需要若干天的工作,熟练的Linux Shell程序员只要几个消失就可以让程序运行地很好。Linux Shell编程地优势有以下几点:

  1. 简洁性
    Linux Shell所处地内核外层环境使得任何高级操作称为可能
  2. 开发容易
    GNU多年的千锤百炼使得UNIX/Linux的工具集变成程序员手中的利器,并很好地遵循了UNIX哲学使开发前人地积累上变得容易
  3. 便于移植
    由于POSIX接口的支持,只要你不使用一些危险特性(被部分操作系统支持,但不被POSIX接口支持),Linux Shell只要写一次,往往能无障碍地运行于众多UNIX/Linux版本上。
http://www.lryc.cn/news/594342.html

相关文章:

  • 【OD机试】池化资源共享
  • 小架构step系列20:请求和响应的扩展点
  • OPC UA, CAN, PROFINET, SOCKET, MODBUS, HTTP, S7七种物联网常用协议解释
  • 2.组合式API知识点(1)
  • 【并集查找 二分图】P6185 [NOI Online #1 提高组] 序列|省选-
  • JavaScript 对象操作、继承与模块化实现
  • 基于单片机的数字温度计设计
  • Ubuntu 部署 STUN 与 TURN 服务器
  • BLIP、InternVL Series(下)
  • 从TPACK到TPACK - AI:人工智能时代教师知识框架的重构与验证
  • 血条识别功能实现及原理
  • Mobile Neural Network (MNN) 3.2.1
  • CAN通讯理论与实践:调试和优化全讲解
  • EPLAN 电气制图(十): 继电器控制回路绘制(下)放料、放灰
  • UDP中的单播,多播,广播(代码实现)
  • 前端环境搭建---基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建
  • Linux场景常见的几种安装方式
  • VSCode使用Jupyter完整指南配置机器学习环境
  • 在服务器无网络的环境下安装 VS Code Remote-SSH 组件
  • (5)从零开发 Chrome 插件:Vue3 Chrome 插件待办事项应用
  • 数控调压BUCK电路 —— 基于TPS56637(TI)
  • Spring Cloud Gateway高危隐患
  • jmeter如何做自动化接口测试?
  • jQuery多库共存
  • http基础一
  • 游戏剧情抄袭侵权比对报告:防止“爆款”变“爆雷”
  • C 语言经典编程题实战:从基础算法到趣味问题全解析
  • Qemu-NUC980(一):SOC框架代码添加
  • LeetCode 3202.找出有效子序列的最大长度 II:取模性质(动态规划)
  • 智能制造——48页毕马威:汽车营销与研发数字化研究【附全文阅读】