linux12shell编程 --> shell基础01
Posted FikL-09-19
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux12shell编程 --> shell基础01相关的知识,希望对你有一定的参考价值。
文章目录
shell基础
一 、编程与编程语言
# 前言
Shell是一门编程语言,作为学习shell的开始,需要事先搞明白:编程的目的是什么?什么是编程语言?什么是编程?
# 注:
程序员 --- > IT行业的术语 就是码农
1、编程的目的是什么?
#计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种能够被计算机识别的表达方式传递给计算机,从而达到让计算机能够像人脑/电脑一样自动执行的效果。
2、什么是编程语言?
#上面提及的能够被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工作。
3、什么是编程?
# 编程就是人把自己想让计算机做事的步骤翻译下来,可以分为两个部分
1.想清楚做事的步骤
2.用一种计算机能听懂的语言把做事的步骤翻译下来,然后存入文件
# 即程序员根据需求把自己的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。
# 强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义
4、 什么是程序
编程的结果就是程序,更准确点说,程序就是一系列代码文件
5、什么是进程
程序运行的过程就是进程,或者说是操作系统干活的过程,即操作系统拿着硬件去运行程序的过程
6、 编程的步骤?
1、先把自己想让计算机做事的步骤想清楚
2、再用一种计算机可以听懂的语言把做事的步骤翻译下来
7、简单举例 --> shell 编程
shell是语言,而学习语言的套路都是一样的,以英语学习为例,你需要学单词,然后学语法,最后写作文。
英语的单词---------->shell中的关键字
英语的语法---------->shell的语法
英语的作文---------->用shell语言写的程序
此时你心里应该有数了,学shell其实很简单,全都是在记忆一些固定的套路而已,那为何有的人会觉得shell难呢?来看一个普遍的问题,问题中包含答案。。。。。。
经常有学生问:老师,我上课都能听得懂,为啥我就是不会写程序。
我:你这不废话么!
你学完了英语的单词、语法、还有写作文的方式,你能立刻写出一篇优美的作文吗?当然不能,那么问题出在哪里呢?
你想想,你现在用汉语跟我沟通,脑子里会不会分神去琢磨某个汉字的意思,汉语的语法应该怎样?你当然不会,你脑子里想到什么,就会很自然地将它表达出来,因为你已经足够熟练,汉语的文字、单词、语法等已经深深地植入了你的意识里。学英语,学shell都是一样的道理,你以为你会了,你可能确实会了,但你远没有达到烂熟于心的地步,因此你在写程序的时候需要考虑的是关键字的用法、语法结构,而我则只需要考虑我脑子里的逻辑如何安排,逻辑走通了程序自然就表达出来了,我完全不会考虑关键字或语法什么的,它就像是我的器官一样,我不会在想吃饭的时候考虑应该用锭眼吃还是用嘴吃,这就是你跟我的差别。
那有何好的解决方法呢?答:没有。不下狠心翻来覆去练习,知识是无法根植于你的潜意识的,你也永远无法自己写程序,就跟当年郭靖学降龙十八掌一样,洪七公要他打200下,他能打1000下,屌丝到不能再屌丝的你,没有这点意志力,就别妄想咸鱼翻身了。。。。。。
附一句:我不知道成功有没有捷径,但我确定学shell没有,没有上万行代码的洗礼,你不可能真的学会shell,这就是我想对你说的。
二 、编程语言分类
1、编程的语言的发展经历
1.机器语言
# 站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;
优点:执行效率最高
缺点:二进制指令难以记忆,开发时极容易出错
开发程序的复杂度高:即便是完成一个简单的功能,需要用到的二进制指令的条数都会非常多
2.汇编语言
# 站在计算机(奴隶)的角度,简写的英文标识符(标签)取代二进制指令去编写程序,本质仍然是直接操作硬件;
优点:解决了机器语言的二进制指令难以记忆的问题,执行效率还是高
缺点:开发程序的复杂度依然很高:因为汇编语言就是用英文标签对应原来的二进制指令,好记归好记,开发的复杂度却没有降低
ps:因为上述两类语言都是在直接与计算机硬件打交道,离计算机硬件比较近,所以又统称为低级语言
3.高级语言
# 站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操作
优点:开发复杂度地,即开发效率高
缺点:速度肯定是不如低级语言,一直到今天,对速度要求极高的场景还会用到低级语言,比如操作系统的调度程序
2、高级语言
更贴近人类语言,因而造成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为
# 1. 编译型(需要编译器,相当于用谷歌翻译):如C,,go语言 执行速度快,调试麻烦
# c语言 --> nginx包 -->c语言写的
# 2. 解释型(需要解释器,相当于同声传译):如python,、执行速度慢,调试方便
# 执行效率: 机器语言 --》汇编语言 --》 高级语言 (编译型)(解释型)
# 开发效率: 机器语言 --》 汇编语言 --》高级语言
机器语言、汇编语言、高级语言示例: https://www.cnblogs.com/linhaifeng/articles/7133167.html#_label2
三 、计算机完整体系结构图
了解玩编程语言后,我们得知我们使用编程语言的目的在于与计算机对话,准确地说是命令计算机帮我们做事情,但编程语言又分类很多种,不同种类有不同的特点和难度,这对于学习者有不同的要求,比如对机器语言,要求学习者必须具备非常深厚的计算机硬件知识才可以使用它编写程序,一般等级比较低的人是没办法学会机器语言的!但我们大家伙虽然比较low,但我们也都想用一下计算机硬件,家里摆着一台机器能够帮我们做事情,就跟家里养了一个奴隶一样,谁不想呢?
所以,为了方便不同的人群都能够操作计算机硬件,有了一层一层封装的概念,如下图所示
以上是关于linux12shell编程 --> shell基础01的主要内容,如果未能解决你的问题,请参考以下文章
ubuntu12.04中用emacs进行shell编程怎么配置呢?