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

一、什么是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......

相关推荐
‎ദ്ദിᵔ.˛.ᵔ₎6 分钟前
linux 进程间通信
linux·网络
Ruiery13 分钟前
Linux 6.6内核 CPU 深度解析(八):percpu 变量 — 每个 CPU 一份数据,无锁访问
linux·运维·服务器
91刘仁德18 分钟前
传输层协议深度拆解:端口寻址、UDP 报文与 TCP 可靠性机制全解析
linux·网络·c++·网络协议·tcp/ip·udp·c
AIgorithmGEEK26 分钟前
[Linux]HTTP 应用层协议全解(中篇)
linux·网络·网络协议·http
玖石书30 分钟前
linux 安装uv(python虚拟环境管理)
linux·python·uv
皓月盈江1 小时前
Hexo博客Butterfly5.7.0主题网站信息:本站访客数和本站总浏览量的数据一直加载不显示的解决方法
linux·hexo·butterfly·busuanzi·vercount·本站访客数·本站总浏览量
H.莓飛1 小时前
【数据结构】堆_OJ题
linux·数据结构·算法
硅基手札1 小时前
【linux内核专栏 09】内核模块与 kbuild
linux·架构
流浪0011 小时前
Linux系统篇43——线程(八) 线程的数据不一致问题,从 ticket-- 的非原子性说起
linux·操作系统·线程·线程安全·锁
Είναι η κοπέλα2 小时前
WSL2 部署 AI 开发环境:内核级 Linux + GPU 直通
linux·运维·人工智能