Linux shell编程学习笔记1:关于shell的前世今生

2023-09-21 14:33:19

一、什么是Shell?


Shell英文单词的原意是“外壳”,在计算机领域专指在操作系统(Operating System)外层,提供用户界面(User Interface)的程序,主要负责将用户的命令(Command)转化为操作系统可识别的指令(Instruction)。

二、Unix shell


Unix诞生于1969年,是最早提供shell,从而将操作系统和用户界面分开的操作系统之一。

Unix中常用的 shell 有:
sh(Bourne shell):1977年由 AT&T 公司的 Steve Bourne开发,是Unix系统中最早的shell之一。 Bourne shell是一种功能强大的脚本语言,可以用于编写各种系统管理任务和自动化脚本。 

bash(Bourne Again Shell):是Brian Fox 于 1988 年为 GNU 项目开发的 Bourne shell 免费版本。 Bash 与原始版本类似,但增加了命令行编辑等功能。

csh(C Shell):由柏克莱大学的 Bill Joy 设计,这个 shell 的语法有点类似C语言,因而得名为 C shell 。 

tcsh(enhanced C Shell):是 csh 的增强版,使用 vanilla C 语法模型的 C Shell。加入了命令补全功能,提供了更加强大的语法支持。 

ksh(Korn Shell):由贝尔实验室的David Korn在二十世纪八十年代早期编写。它完全向上兼容 Bourne shell 并包含了 C shell 的很多特性。

zsh(Z Shell):是Bash的一个替代品,提供了许多新功能和改进。 Bash、Ksh 和 Tcsh 的许多有用功能都已合并到 Zsh 中并添加到它们之上。

三、DOS shell

DOS是微软公司于1981年为IBM个人电脑开发的操作系统。微软DOS(MS-DOS)的基本文件有三个:MSDOS.SYS,IO.SYS和COMMAND.COM, (如果是PC-DOS,则为IBMDOS.COM,IBMBIO.COM和COMMAND.COM)。其中COMMAND.COM是DOS最早的Shell。

这个shell从了很多unix shell学习借鉴的许多东西,比如输入输出重定向等等 。

1988 年 6 月,微软发布的DOS 4.0 开始提供DOS Shell ,这是是一个GUI界面的文件管理程序。

四、Windows shell

从1985 年开始,微软陆续推出了Windows 1.0-3.x,在DOS的基础上提供直观的图形用户界面和鼠标操作。

十年磨一剑,从1995年发布的Windows 95开始,Windows 提供了GUI界面的shell——explorer.exe(资源管理器),但是源自DOS的命令提示符风格的shell——命令提示符(COMMAND.COM或者CMD.EXE)仍然传承了下来,但与unix shell或linux shell相比,在功能上还是相形见绌的。

所以,微软从 Windows 7 SP1 和 Windows Server 2008 R2 SP1 开始提供 Windows PowerShell。PowerShell 是一种命令行 shell 和脚本语言一体化工具,由命令行 shell、脚本语言和配置管理框架组成,可以 在 Windows、Linux 和 macOS 上运行。

五、Linux shell

Linux 是类Unix操作系统,诞生于 20 世纪 90 年代初。Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。

作为一个类Unix,Linux上的 shell 与Unix上的shell一脉相承,sh、bash、csh、tcsh……

更多推荐

【SpringCloud微服务全家桶学习笔记-服务注册zookeeper/consul】

SpringCloud微服务全家桶学习笔记Eureka服务注册gitee码云仓库9.其他服务注册框架(1)zookeeper安装与使用zookeeper需安装在虚拟机上,建议使用CentOS,安装地址如下:zookeeper镜像源选择第一个进入后下载tar包(第二个为源码文件,想研究源码可下载第二个)下载完成后使用xf

如果模块请求http改为了https,测试方案应该如何制定和修改?

当模块从HTTP切换到HTTPS时,需要制定相应的测试方案来验证系统的功能和安全性。以下是一些建议的测试内容和步骤:功能测试:a.确保模块能够正确地重定向到HTTPS端口。b.验证通过HTTPS访问模块时,是否能够正常加载和展示页面内容。c.检查模块的各种功能和业务逻辑是否能够正常工作。安全性测试:a.验证HTTPS证

小试GraphQL

之前做的需求,基本都是REST风格,以github提供的api为例,比较二者差异。试用GraphQL,找寻其独到之处RESTREST[1]一个URI代表一种资源通过HTTP动词对资源进行操作以创建一个仓库[2]为例GET[3],PATCH[4]和DELETE[5]类似GraphQLGraphQL的endpoint只有一

【ZLM】花屏现象记录

目录事后小结现象tcpdump看下包的情况移了两个摄像头到10.60.100.196事后小结花屏的现象,主要看链路时延的稳定性。如果ping-s2000ip,>2ms已经带宽2000*8*2/0.002s=16Mbps,说明带宽不够,应该接近100Mbps左右。你可以用5000的报文再测试一次。同时你可以试下与自己电脑

【数据结构复习之路】线性表(严蔚敏版)万字详解&主打基础

专栏:数据结构复习之路数据结构的三要数:逻辑结构、数据的运算、存储结构(物理结构)。我接下来要介绍的线性表,顾名思义也将从这三个大方向进行阐述:一、线性表的定义——逻辑结构线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列,其中n为表长,当n=0时,线性表是一个空表。若用L命名线性表,则其一般表示为:⚠️线性

使用Python绘制多个股票的K线图

K线图是金融领域常用的技术分析工具,可以洞察地展示股票的开盘价、收盘价、最高价和最低价等信息。在投资决策中,对多个股票的走势进行对比分析是非常重要的。随着金融市场的发展,投资者对于多种股票的对比分析需求越来越高。传统的方式是通过查看多种股票的历史数据并手动对比图表,但这种方式效率低下很容易出错。随着互联网和数据分析技术

LVS+Haproxy

LVS+Haproxy一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、Haproxy的优点1.6、常见的Web集群调度器二、Haproxy部署实例四、日志定义优化一、Haproxy简介Haproxy是一个使用C

【学习笔记】C#基础 - 由C/C++衍生出来的面向对象的编程语言

一、程序结构1、基本语法usingSystem;//C#程序第一条语句都是usingSystem;//using关键字(可多个):在程序中包含命名空间namespaceRectangleApplication//namespace声明(可多个):包含一系列的类{classRectangle//class声明(可多个):

【个人笔记本】本地化部署 类chatgpt模型 详细流程

不推荐小白,环境配置比较复杂全部流程下载原始模型:Chinese-LLaMA-Alpaca-2linux部署llamacpp环境使用llamacpp将Chinese-LLaMA-Alpaca-2模型转换为gguf模型windows部署TextgenerationwebUI环境使用TextgenerationwebUI加

docker容器管理-实操命令

本单元主要是在docker镜像管理下进一步的培训学习文档。docker镜像管理-实操_忍冬行者的博客-CSDN博客四.容器管理1.运行一个容器dockercontainerrun--namec1-itnginx:latest/bin/sh2.后台运行一个容器dockercontainerrun--namec1-it-d

注入常考面试题总结

1.如何突破注入时字符被转义?宽字符注入、hex编码绕过(尝试利用ANSI字符代码变体来达到目的比如"号对应chr(34)是否成功取决于他本身程序是否也做了过滤.)Chr(34),由ASCII码生成字符,34就是双引号的ASCII码,Chr(34)等价于字符"(双引号)2.如何找出网站路径1.通过报错'和随便打点字母2

热文推荐