女朋友要和我学习shell
共 2865字,需浏览 6分钟
·
2021-10-01 07:51
看见女朋友三个字,我想都没想,直接就啪,点进来了
也不管博主写的啥,反正我看见这三个字就给个面子,进来亲切的问候一句:您礼貌吗?
女朋友像往常一样洗好了澡,换上了睡衣,身上涂了些身体乳,喷了两下香水,婀娜多姿的身材走到我面前,抓住我的脖领,说了句,跟我进屋
由于我的身体已经麻木了,也没啥感觉,双脚似机器人是的跟着就进去了,进去了之后我的眼睛盯着女朋友的水汪汪的大眼睛
她也深情的瞅着我,说了一句
船长,给我讲讲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以内的数字,统计和、最小和最大
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"
佛系求关注
船长希望有一天能够靠写作养活自己,现在还在磨练,这个时间可能会持续很久,但是,请看我漂亮的坚持
感谢大家能够做我最初的读者和传播者,请大家相信,只要你给我一份爱,我终究会还你们一页情的。
船长会持续更新技术文章,和生活中的暴躁文章,欢迎大家关注【Java贼船】,成为船长的学习小伙伴,和船长一起乘千里风、破万里浪
哦对了,后续所有的远程文章都会更新到这里
https://github.com/DayuMM2021/Java