当前位置: 首页 > 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.dtcms.com/a/288927.html

相关文章:

  • MybatisPlus-14.扩展功能-DB静态工具-练习
  • 0401聚类-机器学习-人工智能
  • VSCode中Cline无法正确读取终端的问题解决
  • Github 贪吃蛇 主页设置
  • hot100——第八周
  • 【文件IO】认识文件描述符和内核缓冲区
  • docker Neo4j
  • 【论文阅读笔记】RF-Diffusion: Radio Signal Generation via Time-Frequency Diffusion
  • Vue3虚拟滚动实战:从固定高度到动态高度,告别列表卡顿
  • 从零开始的云计算生活——番外5,使用ELK实现对应用日志的监控
  • lvs调度算法(10种)
  • 【Docker基础】Docker-compose常用命令实践(一):服务生命周期管理
  • LVS技术详解与实战
  • Python dataclass 高阶用法与技巧
  • QML 图形效果详解
  • 深入解析Ext2文件系统架构
  • AI 量化工具汇总
  • C语言:二维数组
  • 【自动驾驶黑科技】基于Frenet坐标系的车道变换轨迹规划系统实现(附完整代码)
  • OneCode+CloudWeGo 深化实践:智能发货单的 LLM 逻辑推理引擎优化
  • 30天打牢数模基础-层次聚类讲解
  • Ubuntu高频实用命令大全
  • [自用】JavaSE--集合框架(二)--Map集合体系
  • nvm、npm、pnpm、cnpm、yarn
  • `MYSQL`、`MYSQL_RES` 和 `MYSQL_FIELD`的含义与使用案例
  • RCE随笔(1)
  • Node.js worker_threads 性能提升
  • VUE2 学习笔记2 数据绑定、数据代理、MVVM
  • 习题4.4 给出4个湖从大到小的顺序
  • 交通出行大前端与 AI 融合:智能导航与出行预测