shell脚本和批处理,通常是linux和windows下进行一些简单脚本执行任务的途径。对一半用户来说,反正都是执行任务,一个是linux、unix和mac下等类unix下,一个是windows下。但是两者是有很大的不同。
1、linux shell是个linux 操作系统的用户交互层
对linux来说,应用程序想调用系统底层的资源比如内核和硬件,必须通过shell调用。
命令行是个小应用
命令行是windows下的小应用,包括后来大幅度升级的PowerShell也是。
2、linux shell是存在交互层,包括应用接口和大量的工具链,不依靠图形桌面
对linux来说是必须的,没有shell是不行的,但是可以没有图形桌面,图形桌面不过是跑在shell上的应用。
shell下个工具,包括grep,sed,awk三剑客,以及其他cat、less、find、cut、sort、tail、top等大量小工具可以组成工具链方便的执行各种任务。
比如我们要统计一个web access日志的访问量最大的10个ip:
awk '{print $1}'|sort|uniq -c|sort -nr|head -n 10
命令依赖window桌面
而命令行包括powershell在window下都依赖window桌面,是桌面上的应用,没有桌面无法运行。
3、shell是一个很强大的编程语言
shell有很多个性版本的包csh,sh, bash 和zshell功能强大,不光是命令接口还是强大编程语言。
c shell、csh
编程能力强大,基于c语言语法,比如很多unix默认都是cshell。
ban shlinux默认的shell
linux发行版默认的shell,也是大家使用最多的shell环境,引入了大量适应性的个性,比如tab自动补全等。爱死它了。
zsh新一代的shell
命令补全功能非常强大,还有命令自动纠错功能,傻子都不怕输错命令了。很多码农们的最爱
对比下个各种shell的功能矩阵对比图:
微软的命令行也在进化
微软以dos起家,以窗口环境占领PC几十年,最近估计也慢慢感受到了linux带来的压力,所以也开始怀抱开源,对于命令行也在努力改善,推出了增强版Powershell,】各种功能上,以及编程体验好多了。
在window10中 微软还通过WSL引入了对linux子系统的支持,功能也非常不错,相关信息可以看笔者的文章《WSL大量功能更新,Bash on Windows还只是微软的一个玩具?》