女朋友要和我学习shell

大鱼仙人

共 2865字,需浏览 6分钟

 ·

2021-10-01 07:51





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


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


女朋友像往常一样洗好了澡,换上了睡衣,身上涂了些身体乳,喷了两下香水,婀娜多姿的身材走到我面前,抓住我的脖领,说了句,跟我进屋


由于我的身体已经麻木了,也没啥感觉,双脚似机器人是的跟着就进去了,进去了之后我的眼睛盯着女朋友的水汪汪的大眼睛


她也深情的瞅着我,说了一句


船长,给我讲讲shell,今晚我就上你的船


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


01

shell的由来?


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


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


... ...


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


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



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


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

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


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


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


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


02

shell是什么?


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


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


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



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


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


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


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


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


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


03

shell怎么用?



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


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


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


还有内置函数和用户自定义函数

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


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


04

编译和解释


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

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

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

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

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

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

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

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


05

shell脚本实例


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

#!/bin/bashCOUNT=1SUM=0MIN=0MAX=100while [ $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++doneecho "SUM: $SUM"echo "MIN: $MIN"echo "MAX: $MAX"


06

佛系求关注




船长希望有一天能够靠写作养活自己,现在还在磨练,这个时间可能会持续很久,但是,请看我漂亮的坚持


感谢大家能够做我最初的读者和传播者,请大家相信,只要你给我一份爱,我终究会还你们一页情的。


船长会持续更新技术文章,和生活中的暴躁文章,欢迎大家关注【Java贼船】,成为船长的学习小伙伴,和船长一起乘千里风、破万里浪


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


https://github.com/DayuMM2021/Java



浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报