Skip to content

理解DOS, cmd, bat, shell, bash

1.脚本对应环境

1.Shell环境

shell 是一个命令行脚本解释器,顾名思义就是机器外面的一层壳,通过这个窗口建立用户和Linux系统底层提供的一系列方法的交互;用于人机交互,只要是人与电脑之间交互的接口,就可以称为 shell。

表现为其作用是用户输入一条命令,shell 就立即解释执行一条。不局限于系统、语言等概念、操作方式和表现方式等。

.sh就是一种运行在Linux系统下的文件,文件中存储的shell脚本;

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。

Shell环境主要用在linux中,而linux系统对应的shell又有很多,如Bourne Shell(/usr/bin/sh或/bin/sh),又如Bourne Again Shell(/bin/bash) 由于Bourne Again Shell(/bin/bash)免费且易用,故使用较多。 对应的脚本文件后缀名为.sh注:

  • #!* 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序。如*#!/bin/sh**,#!/bin/bash,通常放于脚本文件首行。

什么是Shell脚本?

Shell脚本(英语:Shell script)是一种为 shell 编写的脚本程序,是用户使用 Unix 的桥梁,内容由一连串的shell命令组成,经由Unix Shell直译其内容后运作。

被当成是一种脚本语言来设计,其运作方式与直译语言相当,由Unix shell扮演命令行解释器的角色,在读取shell script之后,依序运行其中的shell命令,之后输出结果。利用Shell script可以进行系统管理,文件操作等。

2.bat环境

主要用于windows中,又名批处理文件,其每一行指令都是一条dos指令,对应脚本文件后缀名为**.bat或者.cmd**。

2.脚本执行

1.shell执行

  • 1.直接在bash命令窗口执行shell相关命令。
  • 2.将shell命令保存为文件,执行文件就可以运行shell命令。 **注:由于在linux中对文件的权限管理较细,故如果使用shell脚本文件,必须使其具有可执行权限,对脚本授权chmod +x ./文件名.sh #使脚本具有执行权限,执行脚本./test.sh #执行脚本./**必须加,因为当前文件没有加入到linux的path中,linux仅只有 /bin, /sbin, /usr/bin,/usr/sbin 等在 path中。

2.bat脚本执行

  • 1.直接在windows的dos窗口即cmd窗口执行bat相关命令。
  • 2.将bat命令保存为bat文件,在windows中文件权限限制没有linux中那么严格,故相关bat脚本文件可以直接双击执行或者命令行执行。

shell与Bash的区别

shell介绍

常见的 shell 解释器有 sh、bash 这两种,其他的 ksh、csh 和 zsh 等是不常见的。

Mac OS 中默认安装了以上所有类型,Windows 需要自行安装,Linux 更不用说了。就像上面说的,只要一门语言有解释器,就可以作为 shell 使用。

比如 Java 有第三方解释器 Jshell,PHP 有 PHP Shell。

如果你用过 windows,那你对 cmd 这个词一定不陌生,它是 windows shell,官方名称叫做 command interpreter。

Bash

Bash 是最常见的 shell,Mac 中默认 shell 就是 bash。

Windows下

DOS

磁盘操作系统,Windows模拟了DOS系统

bat

DOS下的命令

BAT是Windows系统上的默认命令行解释器。BAT脚本是使用Windows命令行命令编写的文本文件,用于执行简单的任务和操作。BAT脚本可以包含条件语句、循环结构、变量、函数等。

bat文件

.bat文件就是运行在windows环境下的批处理文件,其中存储了系列的batch脚本命令;

后缀名“.bat”或“.cmd”,通过cmd.exe运行

cmd

cmd.exe,Windows的shell

Mac OS下

bash、sh、zsh

zsh

很多人的 mac 中会使用 zsh 而不是 bash,一大半是因为 oh-my-zsh 这个配置集,它兼容 bash,还有自动补全等好用的功能。

zsh 的配置文件 ~/.zshrc

ksh

csh

Linux下

shell

壳,连接用户和Linux内核,命令行解释器

bash、......

总结

终端:硬件,人机交互输入输出设备。

终端模拟器:用CLI或GUI程序模拟传统终端设备。

命令行界面:软件,字符用户界面。

主机:硬件,运算处理。

shell:软件,对内核的程序输入和解释/执行器。

shell与shell脚本:通过命令行输入程序并执行叫shell。而通过程序文件输入程序并执行,这个程序文件叫shell脚本。

batch脚本与shell脚本:windows脚本与linux脚本。

shell和bat的优缺点

BAT的优点

易于学习和使用——BAT脚本是基于Windows命令行命令编写的,所以熟悉Windows命令行的人很容易学会使用BAT脚本。

可以在不同的Windows版本中运行——BAT脚本可以在不同的Windows版本中运行,因为Windows系统一直保持着对BAT脚本的兼容性。

方便调试和维护——由于BAT脚本是文本文件,可以使用任何文本编辑器进行编辑和排查错误。

BAT的缺点

功能有限——BAT脚本只能使用Windows命令行命令,无法实现一些高级功能和复杂操作。

兼容性差——BAT脚本不能在Linux和其他操作系统中运行。

Shell的优点

功能强大——与BAT脚本不同,Shell脚本可以实现复杂的操作,例如文本处理、网络编程等。

可以在不同的Unix-Like系统中运行——由于大多数Unix-Like系统都提供了默认的Shell解释器,因此可以在不同的系统之间共享脚本。

具有各种Shell解释器——Linux系统默认提供了多个Shell解释器,如Bash、KornShell和Zsh等,每个Shell解释器都有自己的特点和优势。

Shell的缺点

学习曲线较陡峭——Shell语法比较复杂,需要花费一定的时间和精力来学习。

不兼容Windows系统——由于Shell解释器只能在Unix-Like系统中运行,因此不能在Windows系统上直接运行。

BAT和Shell的应用

BAT和Shell脚本都被广泛应用于自动化执行任务和操作。以下是一些常见的用途:

  • 执行系统维护任务——例如备份文件、清理临时文件等。

  • 管理服务和进程——例如启动、停止或重启服务和进程。

  • 执行文本处理任务——例如搜索和替换文本、解析日志文件等。

  • 管理文件和目录——例如创建、删除、移动或复制文件和目录。

总之,BAT和Shell脚本是两种十分有用的批处理语言,它们可以有效地帮助自动化执行多个任务和操作,并且可以大大提高工作效率。根据应用环境和需求可以选择合适的语言来编写脚本,以达到最佳效果。

扩展学习

Interactive 和 Non-interactive

Interactive,如果你打开 terminal,在里面输入 bash 代码,回车得到输出,你就是在运行一个 Interactive shell,它的特征是可以让用户输入,然后直接把输出打到界面上;如果你运行一个包含了若干行的 shell 脚本,这些 shell 代码就运行在 Non-interactive shell 中。

常见的Linux和windows系统的CMD命令对比

windows命令行功能描述linux终端
cd切换工作目录cd
dir列出当前文件夹下所有文件ls [-lh]
type查看文件内容cat
md/mkdir创建目录mkdir
del删除文件rm
rd删除目录rm -r
copy/xcopy拷贝cp [-r]
cls清屏clear
findstr根据关键字查找grep
move/rename移动/重命名mv/rename
tasklist查找进程ps [-ef]
taskkill杀死进程kill [-9]

Released under the MIT License.