很详细的系列Shell基础— Shell简介
一、Shell的由来
我们比较熟悉Windows系统的图形化界面,对于图形界面来说,用户点击某个图标就能启动某个程序。在此之前我们一直在使用Linux系统的命令行模式学习,对于命令行来说,用户输入一个命令就能启动某个程序。这两者的基本过程都是类似的,都需要查找程序在硬盘上的安装位置,然后将它们加载到内存运行。
然而,真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),图形界面和命令行只是架设在用户和内核之间的一座桥梁。
由于安全、复杂、繁琐等原因,用户不能直接接触内核(也没有必要),所以就需要另外再开发一个程序,使该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核,同时内核执行完成的结果,也经过该程序的处理,返回给用户。如此一来,用户和内核之间就多了一层“代理”,这层“代理”既简化了用户的操作,也保护了内核。
用户界面和命令行就是我们所说的这个另外开发的程序,就是这层“代理”,在Linux下的这个命令行程序就叫做Shell。
Shell所处的位置如下图所示:
总结:
Shell的英文含义是“壳”。
Shell是一个命令解释器,它在操作系统的最外层,负责直接与用户对话,把用户的输入解释给操作系统,并处理各种各样的操作系统的输出结果,返回给用户。换句话说,shell是为用户与机器之间搭建成的一个桥梁,让我们能够通过Shell来对计算机进行操作和交互,从而达到让计算机为我们服务的目的。
Shell独立于内核,内核是Linux系统的心脏,从开机自检就驻扎在计算机内存中,直到计算机关闭为止。用户的应用程序存储在计算机硬盘上,仅当需要时才被调入内存。Shell是一种应用程序,当用户登陆Linux系统时,Shell就会被调用到内存执行。
二、shell的两种执行指令方式
1、第一种方式:交互式(Interactive)
是用户直接在shell界面(终端界面)上执行Shell命令,由于Shell界面的关系,大家都习惯一行行的书写,很少写出成套的程序来一起执行,所以也称命令行。(换句话说我们操作的终端就是一个Shell)
2、第二种方式:批处理(Batch)
是用户事先编写一个Shell脚本文件,内含Shell脚本,而后使用Shell程序执行该脚本,这种方式,我们习惯称为Shell编程。(简单的理解脚本就是一堆命令的集合。)
三、什么是Shell脚本?
Shell脚本就是把命令、变量和流程控制语句等有机的结合起来。
Shell脚本擅长处理纯文本类型的数据,而Linux系统中,几乎所有的配置文件,日志,都是纯文本类型文件。
四、Shell 是一种脚本语言
任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。
有的编程语言,如 C/C++、Java、Go语言等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,是看不到源码的。
这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。
而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。
这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。
编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。
脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合Web开发以及小工具的制作。
Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。
对Shell的一些认知
Shell脚本是给自己或者团队内部用的,主要是实现功能,效率可以次之(甚至不考虑)。
Shell脚本思路越简单,脚本就有可能很长、很难看。
Shell语言不是很难,但是要求对Linux系统的熟悉程度比较高。
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
① 2000多本Python电子书(主流和经典的书籍应该都有了)
② Python标准库资料(最全中文版)
③ 项目源码(四五十个有趣且经典的练手项目及源码)
④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)
⑤ Python学习路线图(告别不入流的学习)
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料在下方链接如下
相关文章
- 软硬件融合技术内幕 基础篇 (12) —— 时间老人,你从哪里来?
- linux shell 进去 uefi,怎么进入EFI Shell及怎么为UEFI截图「建议收藏」
- 时间老去,Ruby不死,Ruby语言基础入门教程之Ruby3全平台开发环境搭建
- 一:计算机基础入门及介绍[通俗易懂]
- STL库基础学习
- Shell脚本编程_shell简单脚本
- 数字逻辑基础:原码、反码、补码
- Linux Shell基础篇三 - 内置命令
- Linux Shell基础篇二 - 变量
- MySQL数据库基础学习(一)
- 软件测试|Python基础之面向对象(三)
- C++基础——C++面向对象之重载与多态基础总结(函数重载、运算符重载、多态的使用)
- Linux基础详解大数据
- Linux下执行Shell脚本的技巧(linux执行shell脚本)
- 走进Linux世界:命令行与Shell脚本编程指南(linux命令行与shell脚本编程大全)
- Linux逆向远程连接:反弹Shell技术(linux反弹shell)
- Linux基础编程:快速入门与实践(linux基础编程)
- 数据库操作Shell脚本与Oracle数据库实现自动操作(shell与oracle)
- Linux教程:如何开启Shell命令行界面(linux开启shell)
- Linux登录Shell:开拓新世界的大门(linux登录shell)
- 命令提升效率:学习Linux的常用Shell命令(linux常用shell)
- Linux Shell循环:简单而有效的自动化利器(linux shell循环)
- linux之美——Shell带来的新体验(linux的 shell)
- 2015年MySQL查询从基础到进阶(2015mysql查询)
- MySQL的命令行工具MySQL Shell介绍(mysql_shell)
- 第二章PHP入门基础之php代码写法
- zendoptimizer在wamp的基础上安装图文教程