理解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] |