zoukankan      html  css  js  c++  java
  • shell复习笔记----入门知识

    1.  Unix 简史

            UNIX 最初是由贝尔实验室(Bell Telephone Laborataries)的计算机科学研究中心开发的,第一版诞生于1970年--也就是在贝尔实验室退出Multics项目不久.在 UNIX 广受欢迎的功能中,有许多便是来自Multics 操作系统.

           它有下列优势:

    • 系统由用户自行开发.他们使用这套系统来解决每天遇到的计算问题.
    • 研究人员不受拘束地进行试验,必要时也可以任意变换程序.
    • 贝尔实验室的研究人员都是计算机科学家,他们所涉及的系统不单单自己使用,也分享给同事们---这些人也是计算机科学家,因此衍生出"务实"的设计模式:程序会执行你所赋予的任务,但不会和你进行对话,也不会问你一堆"你确定吗?"之类的问题.
    • 除了精益求精,在设计和问题解决上他们不断地追求"优雅".关于"优雅"有一个贴切的定义:简单就是力量(power cloaked in simplicity).

    也因此存在如下缺陷:

    • 工具程序之间存在许多不一致的地方.
    • 组多工具程序有缺陷.
    • 有时程序并未经过彻底测试,这使他们在执行的时候一不小心就会遭到破坏.
    • 系统的文档尽管大致上内容完备,但极为简单,是的用户在学习的时候很难找到所需要的信息.

         2.软件工具的原则

    • 一次做好一件事情

             很多时候这都是最重要的原则,若程序只做一件事情,那么无论是设计,编写,调试,维护,以及生成文件都容易的多.

    • 处理文本行,不要处理二进制数据

            文本行是 UNIX 的通用格式.它可以用任何唾手可得的文本编辑器来编辑它,也可以让这些数据在网络和各种机器架构之间传输.舒勇该文本文件更有助于任何自定义工具与现存的 UNIX 程序之间的结合.

    • 使用正则表达式

           正则表达式(regular expression)是很强的文本处理机制.了解它的运作模式并加以实用可以湿度简化编写命令脚本的工作.

    • 默认使用标准输入/输出  

           在未指明指定文件名的情况下,程序默认会从它的标准输入读取数据,将数据写到它的标准输出,至于错位信息则会传送到标准错误输出.以这样的方式来编写程序可以轻松地让它们成为数据过滤器.

    • 避免喋喋不休

          软件工具的执行过程不该像"聊天"(chatty).不要将"开始处理"(starting processing),"即将完成"(almost done)或"处理完成"(finished processing)这类信息放在程序的标准输出中(至少这不该是默认状态).

         3.shell脚本的目标使用情景

         shell 脚本最长用于系统管理工作,或是用于结合现有的程序以完成小型的,特定的工作.一旦你找出完成工作的方法,把命令串在一起,放进一个独立的程序或者脚本里面,此后只需要执行该程序便能完成工作. 如果你写的程序很有用,替他人可以利用该程序当做一个黑盒来使用,它使一个可以完成工作的程序,但我们不必知道它如何完成的.

         

         4. 脚本编程语言和编译型语言的差距

           许多大中型程序都是用编译型语言写成的,例如 Paxcal,C,C++或 Java.这类程序只要从源代码(source code)转换成目标代码(object code),便能直接通过计算机来执行.编译型语言的好处是高效,缺点是:他们多半运作与底层,所处理的字节整数浮点数或者其他机器层级的对象.

           脚本编程语言通常是解释型(interpreted)的,这类程序的执行,是由解释器(interprete r)读入程序代码,并将其转换成内部的形式,再执行.注意:解释器本身是一般的编译型程序.

           使用脚本编程语言的好处是,他们多半运行在比编译型语言还高的层级,能能够情已处理文件和目录之类的对象.缺点是:他们的效率通常不如编译型语言.不过权衡之下,通常使用脚本编程还是值得的:花1个小时写成的简单脚本,同样的功能用 C 或 C++来编写实现可能需要两天,而且一般来说脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题.

     shell 似乎是各 UNIX 系统之间通用的功能,并且经过了 POSIX 的标准化,因此 shell 脚本只要"用心写"一次,即可应用在各个系统上.因此,使用 shell 脚本是基于:

    •  简单性
    • 可移植性
    • 开发容易
    永远保持新人的心态,勤奋好学,不耻下问
  • 相关阅读:
    使用v-if刷新生命周期
    vue element 上传图片 文件
    vue中既能获取事件对象又能获取参数的方法
    element-ui跨行
    云原生体系下 Serverless 弹性探索与实践
    PaddlePaddle:在 Serverless 架构上十几行代码实现 OCR 能力
    谷粒商城笔记-环境配置(2)——文件上传、java参数验证、递归,分页、事务
    java 前端技术选型(Vue.js+Element.ui)
    java实现woff字体解析,逆向反爬
    自定义dom重现函数useResume
  • 原文地址:https://www.cnblogs.com/keepFlying/p/shell.html
Copyright © 2011-2022 走看看