美文网首页
shell基础之什么是shell?

shell基础之什么是shell?

作者: 技术是神奇的 | 来源:发表于2020-06-20 11:12 被阅读0次

    真正能够控制计算机硬件(CPU、内存、显示器等)的只有操作系统内核(Kernel),出于安全、复杂、繁琐等原因,用户不能直接操作内核(也没有必要),需要另外再开发一个程序,让用户直接使用这个程序;该程序的作用就是接收用户的操作(点击图标、输入命令),并进行简单的处理,然后再传递给内核(Kernel),这样用户就能间接地使用操作系统内核了。

    图形界面和命令行就是这个另外开发的程序,就是这层“代理”,起到了用户和内核之间建立桥梁的作用,既能简化用户的操作,又能保障内核的安全。

    在Linux下,这个命令行程序叫做 Shell

    运行一个命令,大部分情况下 Shell 都是去调用内核暴露出来的接口,其实就是在使用内核,只是这个过程被 Shell 隐藏了起来,我们看不到而已。

    接口其实就是函数,使用内核就是调用函数,除了函数,没有别的途径使用内核。

    Shell 在整个 Linux 系统中的地位

    “用户”和“其它应用程序”是通过虚线连接的,因为用户启动 Linux 后直接面对的是 Shell,通过 Shell 才能运行其它的应用程序。

    shell是一种脚本语言或叫做解释器语言,不需要通过编译(compile)的方式运行,所以我们使用shell脚本必须拿到源码才能运行。

    而C、C++、java等编译型语言,必须经过编译的过程,将代码编译为可执行文件(里面都是我们看不懂的二进制文件),才能运行。编译型语言的程序,我们不需要源码,拿到可执行文件也能运行。

    Shell 的魅力就在于“开发一些实用的、自动化的小工具非常方便,速度快,是程序员的好帮手,是重复性劳动的福音”。

    除了shell,其他脚本语言还有python、perl等。

    1) Perl 语言

    Perl 比 Shell 强大很多,在 2010 年以前很流行,它的语法灵活、复杂,在实现不同的功能时可以用多种不同的方式,缺点是不易读,团队协作困难。

    Perl 脚本已经成为历史了,现在的 Linux 运维人员几乎不需要了解 Perl 了,最多可以了解一下 Perl 的安装环境。

    2) Python 语言

    Python 是近几年非常流行的语言,它不但可以用于脚本程序开发,也可以实现 Web 程序开发(知乎、豆瓣、YouTube、Instagram 都是用 Python 开发),甚至还可以实现软件的开发(大名鼎鼎的 OpenStack、SaltStack 都是 Python 语言开发)、游戏开发、大数据开发、移动端开发。

    现在越来越多的公司要求运维人员会 Python 自动化开发,Python 也成了运维人员必备的技能,每一个运维人员在熟悉了 Shell 之后,都应该再学习 Python 语言。

    Python 语言的优势在于开发复杂的运维软件、Web 页面的管理工具和 Web 业务的开发(例如 CMDB 自动化运维平台、跳板机、批量管理软件 SaltStack、云计算 OpenStack 软件)等。

    3) Shell脚本的优势在于处理偏操作系统底层的业务,例如,Linux 内部的很多应用(有的是应用的一部分)都是使用 Shell 脚本开发的,因为有 1000 多个 Linux 系统命令为它作支撑,特别是 Linux 正则表达式以及三剑客 grep、awk、sed 等命令。

    对于一些常见的系统脚本,使用 Shell 开发会更简单、更快速,例如,让软件一键自动化安装、优化,监控报警脚本,软件启动脚本,日志分析脚本等,虽然 Python 也能做到这些,但是考虑到掌握难度、开发效率、开发习惯等因素,它们可能就不如 Shell 脚本流行以及有优势了。对于一些常见的业务应用,使用 Shell 更符合 Linux 运维简单、易用、高效的三大原则。

    总结:

    Shell 是一个应用程序,它的一端连接着 Linux 内核,另一端连接着用户。Shell 是用户和 Linux 系统沟通的桥梁,我们都是通过 Shell 来管理 Linux 系统。

    尽管很渺小,但终究会伟大!

    相关文章

      网友评论

          本文标题:shell基础之什么是shell?

          本文链接:https://www.haomeiwen.com/subject/dnswxktx.html