当前位置: 首页 > 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.xdnf.cn/news/1159561.html

相关文章:

  • MongoDB多节点集群原理 -- 复制集
  • 《杜甫传》读书笔记与经典摘要(一)
  • 人工智能之数学基础:随机实验、样本空间、随机事件
  • 【算法训练营Day15】二叉树part5
  • LVS-----TUN模式配置
  • 【LeetCode刷题指南】--反转链表,链表的中间结点,合并两个有序链表
  • 【原创】微信小程序添加TDesign组件
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • 零基础学习性能测试第三章:执行性能测试
  • Windows CMD(命令提示符)中最常用的命令汇总和实战示例
  • 30天打牢数模基础-SVM讲解
  • Python 单例模式几种实现方式
  • Dify 1.6 安装与踩坑记录(Docker 方式)
  • ZooKeeper学习专栏(二):深入 Watch 机制与会话管理
  • 【单片机外部中断实验修改动态数码管0-99】2022-5-22
  • 大语言模型:人像摄影的“达芬奇转世”?——从算法解析到光影重塑的智能摄影革命
  • Vuex 核心知识详解:Vue2Vue3 状态管理指南
  • 【设计模式C#】享元模式(用于解决多次创建对象而导致的性能问题)
  • TypeScript 中替代 Interface 的方案
  • 17.TaskExecutor与ResourceManager交互
  • 对粒子群算法的理解与实例详解
  • 系统思考:整体论
  • 5.2.4 指令执行过程
  • 基于FPGA的多级流水线加法器verilog实现,包含testbench测试文件
  • Muon小记
  • 【unitrix】 6.9 减一操作(sub_one.rs)
  • 数据结构与算法汇总
  • Twisted study notes[2]
  • Node.js worker_threads 性能提升
  • ARM 学习笔记(三)