我们一起来学习shell

看见女朋友三个字,我想都没想,直接就啪,点进来了

在这里插入图片描述

也不管博主写的啥,反正我看见这三个字就给个面子,进来亲切的问候一句:您礼貌吗?
在这里插入图片描述

假设我的女朋友叫小朝(跟我一起读,之一奥zhao),别问我为什么要假设

shell的由来?

小朝你的家里有电脑吧,你也使用过吧,你知道电脑Windows、Linux、Mac OS等系统吧

小朝脸红的点了点头,你不是刚给我买的Mac吗

… …

这些电脑都是带有图形界面的,我们比较常用的Mac和Windows,对于大家用起来都很方便,大家都可以直接通过点击一个软件的图标去运行一个软件,可以直接右键删除,可以一键启动

然而在计算机的早起是没有图形界面的,那个时候操作电脑是通过一个个命令来控制计算机的,这些命令很多,分为很多类型,功能很强大

在这里插入图片描述

而这个时候的电脑也只有相对来说的专业人士才可以使用,因为不像现在这么人性化

点击下方链接看西雅图活电脑博物馆

https://zhuanlan.zhihu.com/p/21895357

对于专业人士,需要一个命令启动相应的程序,而现在我们可以直接使用操作图标就可以启动一个程序,换句话说,就是图形界面和命令启动的目的是一样的,都是让用户控制计算机

而两者的运行过程也是类似的,都是查找到程序在硬盘上的安装位置,然后将这个加载到内存中去运行

然而,真正能够控制计算机硬件的只有操作系统内核Kernel,而图形界面和命令行都只是架设在用户和内核之间的一座桥梁而已

shell是什么?

由于操作系统内核是很繁琐的,普通用户直接接触内核是危险的,也是没必要的,于是就出现了一层代理,让用户可以直接操作系统,就是上面说的图形界面和命令行

这样既能屏蔽其复杂性,又能够保护计算机安全性,系统对命令进行简单处理之后传递给内核,这样用户和内核之间就多了一层代理

在Linux系统下,这层代理的命令行程序就是shell

在这里插入图片描述

用一句大家都能听懂的话叫:shell就是通过一些条件语句和循环语句,把一系列的Linux命令组合在一起,实现一些较为复杂的功能

这里如果熟悉linux命令的小伙伴应该瞬间就懂了,脑海里可能立刻就浮现出了各种cd、pwd、tail命令

shell除了能够解释用户输入的命令,将命令传给内核之外,还可以调用其它的程序,给其他程序传递参数并且获取程序的处理结果

shell本身也是可以被其它程序调用

shell本身支持的命令不多,但是它是可以调用其它的程序,每个程序就是一个命令,shell命令的数量可以无限的扩展

因此shell的功能十分强大,可以对linux进行日常管理工作,以及日常的文本、字符串的操作,文件的创建查找,大规模的软件的自动部署,监控系统性能这些

shell怎么用?

shell是一种解释性语言,就是将用户的命令集合去解释成计算机内核能够理解的语言

shell其实不是简单的叠加命令,我们其实可以在shell中编程,对于熟悉Python的人来说,shell应该是最不陌生的了,其实和java、C++在编写语法上也类似

虽然没有这些语言这么强大,但是也支持了基本的编程语法,常见的逻辑判断语句、循环语句、各种数据结构、逻辑运算和数学运算等

还有内置函数和用户自定义函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

站在这个角度,shell也是属于一种编程语言,它的解释器就是shell这个程序,就类似于Python,有Python特定的解释器

shell在工作中主要用于一些自动化的小工具,顾名思义,shell脚本,属于一个辅助性程序,不是用来开发具有复杂业务逻辑的中大型软件

编译和解释

任何代码最终都要被“翻译”成二进制的形式才能在计算机中执行。

有的编程语言,如 C/C++、Pascal、Go语言、汇编等,必须在程序运行之前将所有代码都翻译成二进制形式,也就是生成可执行文件,用户拿到的是最终生成的可执行文件,看不到源码。

这个过程叫做编译(Compile),这样的编程语言叫做编译型语言,完成编译过程的软件叫做编译器(Compiler)。

而有的编程语言,如 Shell、JavaScript、Python、PHP等,需要一边执行一边翻译,不会生成任何可执行文件,用户必须拿到源码才能运行程序。

程序运行后会即时翻译,翻译完一部分执行一部分,不用等到所有代码都翻译完。

这个过程叫做解释,这样的编程语言叫做解释型语言或者脚本语言(Script),完成解释过程的软件叫做解释器。

编译型语言的优点是执行速度快、对硬件要求低、保密性好,适合开发操作系统、大型应用程序、数据库等。

脚本语言的优点是使用灵活、部署容易、跨平台性好,非常适合Web开发以及小工具的制作。

Shell 就是一种脚本语言,我们编写完源码后不用编译,直接运行源码即可。

shell脚本实例

看一个shell的例子:连续输入五个100以内的数字,统计和、最小和最大


#!/bin/bash
COUNT=1
SUM=0
MIN=0
MAX=100
while [ $COUNT -le 5 ]; do
    read -p "请输入1-10个整数:" INT
    if [[ ! $INT =~ ^[0-9]+$ ]]; then
        echo "输入必须是整数!"
        exit 1
    elif [[ $INT -gt 100 ]]; then
        echo "输入必须是100以内!"
        exit 1
    fi
    SUM=$(($SUM+$INT))
    [ $MIN -lt $INT ] && MIN=$INT
    [ $MAX -gt $INT ] && MAX=$INT
    let COUNT++
done
echo "SUM: $SUM"
echo "MIN: $MIN"
echo "MAX: $MAX"

结束语

感谢大家能够做我最初的读者和传播者,请大家相信,只要你给我一

份爱,我终究会还你们一页情的。

欢迎大家关注我的公众号【左耳君】,探索技术,分享生活

哦对了,后续所有的文章都会更新到这里

https://github.com/DayuMM2021/Java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值