本人前端兼PHP程序员。因为一直用的windows系统,并且一直在用git,我很喜欢用git-bash,但是几乎不用windows的命令行(因为本人是程序员,而且因为上线测试等情况会经常使用linux,所以windows命令行的命令几乎只知道几个常见的),我就发现一个问题,git for windows本来只需要一个git的功能(当前可能还需要vim、ls之类和git相关的命令),但是git-bash却做的像一个原生的windows命令行一样这么好用?那为什么没有人开发类似的软体呢?就是在windows下运行linux常见命令的软体。

PowerShell、windows的linux子系统和虚拟机都试过,但是感觉都不如git-bash好用。


题主说笑了,git bash 就是基于 msys 开发的,而 msys 就是题主说的 「为什么没人开发一个」 的这种东西。。。并且历史上出现过不止一个这类解决方案。。。

顺带一提,聪明人早就不去装什么git bash了,装一个msys2,然后pacman包管理,想装git,想装tig,随意装。

再顺带一提,聪明人也早就不玩什么msys了,wsl真香,apt真爽。


WSL


看问题描述,需求大概是在Windows上运行GNU系列命令吧,基于UNIX模拟环境而建立起来的软体有很多,仅列举知名的几个。

  1. Cygwin
  2. 核心基于Cygwin早期版本fork来的msys
  3. 不满msys开发缓慢而另起炉灶的msys2

附相关介绍拙作

silaoA:Cygwin前传:从割据到互补?

zhuanlan.zhihu.com图标silaoA:Cygwin系列(一):Cygwin是什么?

zhuanlan.zhihu.com图标silaoA:Cygwin系列(三):盘点与Cygwin相似和相反的项目?

zhuanlan.zhihu.com图标silaoA:微软WSL——Linux桌面版未来之光?

zhuanlan.zhihu.com图标

cyg-win了解一下,别说Linux下的命令了,连库函数都带了。

现在的Windows直接嵌入了Linux内核,Ubuntu,Debian随便跑。


powershell觉得不好用的主要原因应该是.net的函数名背诵的不够流利导致的。建议题主花点时间,多背诵几个。

只要把IO先准备好了(这个powershell也替你准备了),然后嵌入C#写linq,算起什么来简直不知道方便到哪里去了,吊打各路bash,特别是当你regex和awk一起在命令行用的时候简直想自杀。


又强行被「没人」「为什么」了,git-bash 就自带了一个阉割版的 MSYS2,那换成完整版不就成了。


有个东西叫msys2

另外其实Windows下的命令行多个命令频繁相互调用好像是比linux慢那么一点点。。


已经有git-bash了为什么还要再开发一个啊?


看了问题描述,我认为题主不满足的不是 shell ,而是终端吧,如果你真的想得到一个好的体验,我推荐 WSL + zsh + ohmyzsh 获得良好的命令交互体验

同时一个快捷,美观的终端不仅可以提升效率还可以升华心情,windows 上比较实用美观的终端下面网页都有详细介绍,选择一款适合自己的,岂不乐乎

Dev on Windows with WSL?

spencerwoo.com图标

装wsl,然后你就能在powershell里用所有Linux命令了

然后装ConEmu,可以直接打powershell,也有自带的连接到WSL的功能,有tab,可以设置透明度,字体渲染爆wsl和powershell自带的终端一百条街,和Linux下几乎体验一样


????这个问题是什么时候发的?当时没有 WSL 吗?哦,问题后面说了 WSL ……

我记得其实 git-bash 是基于 cygwin/msys2 的一个环境封装吧?

原则上说来 cygwin 和 wsl 其实用起来没有本质区别,都是封装了 Linux 的环境,之后都用了虚拟的一个 rootfs 目录。只是 wsl 的那个窗口是 cmd 的不好用。我都是 wsl 开 sshd ,之后用 putty 连 ssh 用……


推荐试一下 MobaXterm,这个主要是 ssh telnet rdp 等远程协议的客户端,但是也集成了 bash busybox cygwin 等 gnu 工具,应该能满足题主的需求。

因为有 bash 和 busybox,所以大部分常用的 linux 命令都支持,比如 ls less more awk sed grep 等。文件路径也符合 linux 的习惯。比如 windows 的c盘,在 MobaXterm 里就挂在 /drives/c 路径下。

你还可以用 apt-cyg install 命令安装 git svn vim 等开发工具。

但是有一个问题,在 MobaXterm 里使用 git log 查看日志的时候,默认的 git pager 是 busybox 提供的 less, 中文显示有问题。你可以 apt-cyg install less 安转一个独立的 less.exe,然后 echo export GIT_PAGER="/bin/less.exe -RFXS" &>&> /etc/profile.d/git_env.sh 把 git pager 改成 /bin/less.exe


实在不知道你想要什么,什么「但是git-bash却做的像一个原生的windows命令行一样这么好用?」反正我是没读懂

如果想要windows下学习linux,cygwin,但不如直接远程linux伺服器了

如果想要命令行,直接powershell


有个东西叫cygwin https://www.cygwin.com/

cygwin是很多软体的集合,通过重新编译,把POSIX系统上的软体移植到Windows上。

cygwin通过一套库,实现了在Win系统下实现了POSIX系统调用的API。

有人说cygwin是阉割版的Windows下的Linux。但是cygwin也够用了,因为它设计出来的用途我觉得就是在Win下使用部分类Linux的功能而已,而不是整个Linux系统。

实际上Windows下的git bash也是跨平台编译的,使用cygwin版本的git也是一样的,而cygwin把诸多常用的工具做到一起,虽然不是完完全全的Linux(没有需求也用不著),但是比wsl轻量、打开快,而且常用的工具git、ssh、vim也都是有的。


windows使用linux命令?除了bash几个内嵌命令,其余命令都是基于软体的,比如wget,你是需要编译一个windows能够运行的wget命令。你在git bash下的所有命令,都是别人编译好了的,而不是直接从linux下拷贝过来用。你说没人开发,那git-bash是什么?你是觉得git bash哪里不好用害死啥的


最近几周安装了Windows下Linux子系统,类似于软体了。很多Linux特有软体都可以在上头运行。只是缺少Linux系统的视觉美感


你使用的命令只有极少数是命令行软体(终端 Shell)内建的。

其实它们都是独立的程序。是一个个 App 而非 Shell 自带的参数。

也就是说,想让 Windows 命令行执行 Linux 下的命令,得重新实现大量的常用 CLI 工具。这早就超出了所谓命令行软体的范畴。


推荐阅读:
相关文章