看过git bash的朋友圈才知道cmd为啥会呵呵一笑(三)

简介: 曾以为 git bash 能够完全取代 cmd ,谁知道 cmd 却投给我一个鄙视的眼神! git bash 确实能够在一定程度上替代 cmd ,但是默认安装的 git bash 命令行工具并不能彻底取代 cmd ,难怪 cmd 听说要让自己退休,会呵呵一笑了!

线索之 WSL

WSL : Windows Subsystem for Linux 的缩写,项目地址: https://github.com/mintty/wsltty

15.jpg

原文: Mintty as a terminal for WSL (Windows Subsystem for Linux).

翻译: Mintty 是为 WSL 而生的终端,WSL 是实现 Linux 系统体验的 Windows 的子系统.

由此可见,Mintty 的最终目的是打造 Windows 上的 linux 体验,本质还是 Windows 系统.

wsltty 项目没有提供更多细节供我们继续参考,但是却给我们留下一条线索,wslttymintty 同属于 mintty 组织项目.

不知道这种命名有没有什么内在联系,wsltty 去掉后面的 ttywsl ,而 wslWindows Subsystem for Linux 的缩写.

那么 mintty 去掉后面的 tty 剩下就是 min ,又是什么单词的缩写呢?

暂时不得而知,既然已经来到 mintty 的组织账号,那我们不妨顺便看一下 mintty 本身项目.

16.jpg


仅仅是简单的项目介绍,并没有额外信息,看来 WSL 这条线索到此为止了.

线索之 Cygwin

Windows 上获得 linux 的感觉. 官网: https://cygwin.com/



17.jpg


CygwinGNU 工具,在 windows 上获得 linux 的体验,但并不能运行原生 linux 程序,必须重新编译源代码才能在 windows 上运行.

现在我们知道 Cygwin 是一种功能,用来在 windows 系统上获得 linux 的感觉,其中 Cygwin 源代码中涉及到 GNU 这这个陌生名词.

线索之 MSYS

MinGW 适用于 Windows 的极简 GNU,官网: http://mingw.org/wiki/MSYS



18.jpg


原文: SYS is a collection of GNU utilities such as bash, make, gawk and grep to allow building of applications and programs which depend on traditionally UNIX tools to be present. It is intended to supplement MinGW and the deficiencies of the cmd shell.

翻译: MSYS 是一组GNU实用程序,如 bashmakegawkgrep ,可以构建依赖于传统 UNIX 工具的应用程序和程序.它旨在补充 MinGWcmd shell 的缺陷.

  • MSYSGNU工具集合,旨在补充MinGWcmd shell 的缺陷.

原文: A common misunderstanding is MSYS is "UNIX on Windows", MSYS by itself does not contain a compiler or a C library, therefore does not give the ability to magically port UNIX programs over to Windows nor does it provide any UNIX specific functionality like case-sensitive filenames. Users looking for such functionality should look to Cygwin or Microsoft's Interix instead.

翻译: 一个常见的误解是: MSYS 是 "Windows上的UNIX",MSYS 本身不包含编译器或C库,因此无法将 UNIX 程序神奇地移植到 Windows,也不提供任何 UNIX特 定功能,如大小写-敏感文件名.寻找此类功能的用户应该选择 CygwinMicrosoftInterix.

  • MSYS不是windows上的Unix,完整的解决方案应该选择CygwinInterix 等.

原文: Up to MSYS 1.0.11, all components of MSYS were distributed in one single installer you downloaded and ran. While convenient, this made it difficult to update individual components. So, all the MSYS components are now available as separate downloads managed by mingw-get (see Getting_Started (currently alpha release).

翻译: 在 MSYS 1.0.11 之前,MSYS 的所有组件都分布在您下载并运行的一个安装程序中.虽然方便,但这使得更新单个组件变得困难.因此,所有 MSYS 组件现在都可以作为 mingw-get 管理的单独下载提供(请参阅 Getting_Started(目前为 alpha 版).

  • MSYS既提供整包安装,也可以使用 mingw-get包管理功能单独下载.

现在我们知道了 MSYS 是一套工具包,旨在补充 MinGWcmd shell 的缺陷. 这里再次暴露了一个名词---MinGW ,但是我们可以猜测出 MinGW 应该和 Cygwin 一样是一种系统.

线索之 MSYS2

MSYS2Windows 的软件发行版和构建平台,官网: http://www.msys2.org/



19.jpg

原文: At its core is an independent rewrite of MSYS, based on modern Cygwin (POSIX compatibility layer) and MinGW-w64 with the aim of better interoperability with native Windows software. It provides a bash shell, Autotools, revision control systems and the like for building native Windows applications using MinGW-w64 toolchains.

翻译: 其核心是基于现代 CygwinPOSIX 兼容层)和 MinGW-w64MSYS的独立重写,旨在与本机 Windows 软件实现更好的互操作性.它提供了一个 bash shellAutotools,修订控制系统等,用于使用 MinGW-w64 工具链构建本机 Windows 应用程序.

  • MSYS2基于MSYS的重写,核心基于Cygwin ,使用MinGW-w64来构建应用程序.

目前为止,我们已经了解了 Cygwin ,MSYSMSYS2 系统,它们都是为了在 Windows 系统上获得类 Unix 操作体验,其中 MSYS2MSYS 的升级版,MSYS 基于 Cygwin

这些系统都有自己的包安装工具,注意的是 MSYS 并不像 MSYS2 那样,它只是工具集,为了MinGW 提供扩展支持.

整理线索朋友圈

目前为止,我们以 Mintty 为中心,逐步分析了解了 Cygwin , MSYSMSYS2,并且顺便了解下 WSL .

Mintty is a terminal emulator for Cygwin, MSYS or Msys2, and derived projects, and for WSL.



21.png

  • git bash 选择mintty作为默认终端,而mintty本身又是msys2cygwin的默认终端.
  • msysgnu工具集,旨在补充mingw .
  • msys2重写了 msys ,大部分基于cygwin .
  • cygwin也是gnu开源产品,让你在 windows上获得linux的感觉.

根据目前我们了解到的知识,已经大致了解了基本情况,一直频繁出现的 gnu 又是什么鬼?

新线索再次出发

GNU 操作系统,官网: http://www.gnu.org/

看到这里一切恍然大悟,原来 GNU 是自由软件运动,从而诞生了自由软件,进而有个自由操作系统.


22.jpg


前面介绍的 CygwinMSYS2 以及 MinGW 应该都是自由操作系统,只不过这些系统旨在 windows 系统上打造 linux ,从而获取到 linux 的体验.

拨开迷雾见青天

简单总结下 git bash 的朋友圈:

  • GNUGNU's Not Unix递归缩写,是自由操作系统,包括一系列的自由软件.
  • MinGWMinimalist GNU for Windows 的缩写,极简主义的 GW,基于Cygwin二次开发.
  • Cygwin是自由系统,让你在Windows上获得 linux的感觉.
  • mintty是终端模拟器,是MinGW ,MSYS2Cygwin的默认终端,与原生控制台程序交互需要借助 winpty封装调用.

现在总算弄清楚了 git bash 的朋友圈,再看一看 git bash 中他们在哪?

23.png

MinGW64MinGW32 都是 MinGW 系统,分别对应 Windows 的64位和32位操作系统.


24.png

minttyGNU 自由软件,是一种终端模拟器.

知其然下次再见

既然我们明白了 git bash 的相关知识,那么想要理解 git bash 为什么支持 linux 命令或者说为什么不支持某些 linux 命令已经有了大概印象.

下次我们将以具体的实际例子分析,为什么 git bash 不支持 tree 命令以及如何才能在 git bash 使用 tree 命令.


25.png

好了,感谢你的阅读,如果本文对你有所帮助,欢迎留言告诉我!

本文作者:雪之梦技术驿站,你在互联网的路上匆匆而来,雪之梦技术驿站助你满载而去。

声明:本文为 脚本之家专栏作者 投稿,未经允许请勿转载。






相关文章
|
1月前
|
Shell 开发工具 git
【Github】git bash将本地工程上传至github
【Github】git bash将本地工程上传至github
|
10月前
|
Shell 开发工具 git
2021年了, 如何将 Git Bash 设置为 VSCode 的终端?
2021年了, 如何将 Git Bash 设置为 VSCode 的终端?
182 0
|
11月前
|
Shell 开发工具 git
【Github】git bash将本地工程上传至github
【Github】git bash将本地工程上传至github
|
Shell Linux 开发工具
设置IDEA的 Terminal 使用 git bash
设置IDEA的 Terminal 使用 git bash
472 0
设置IDEA的 Terminal 使用 git bash
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
90 0
Git:Git Bash连接MySQL
|
Shell 开发工具 git
在 Git Bash 下设置命令行调用vscode
在Git Bash下使用命令指定一个程序打开文件的设置。今天在使用gitbash时,打开文件,每次都是终端和使用鼠标去打开文件两个状态间来回切换。感觉很不方便,要是能够用命令直接打开文件就好了。 下面设置Git Bash中使用vscode命令打开文件...
234 0
在 Git Bash 下设置命令行调用vscode
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
55 0
Git:Git Bash连接MySQL
|
关系型数据库 MySQL Shell
Git:Git Bash连接MySQL
Git:Git Bash连接MySQL
126 0
Git:Git Bash连接MySQL
|
Shell 开发工具 git
git bash各种乱码问题,已解决
git bash各种乱码问题
1119 0
|
2月前
|
监控 安全 Shell
防止员工泄密的措施:在Linux环境下使用Bash脚本实现日志监控
在Linux环境下,为防止员工泄密,本文提出使用Bash脚本进行日志监控。脚本会定期检查系统日志文件,搜索敏感关键词(如"password"、"confidential"、"secret"),并将匹配项记录到临时日志文件。当检测到可疑活动时,脚本通过curl自动将数据POST到公司内部网站进行分析处理,增强信息安全防护。
113 0