为什么没人开发一个windows下使用linux命令,类似于git-bash那种的软体呢?
本人前端兼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模拟环境而建立起来的软体有很多,仅列举知名的几个。
- Cygwin
- 核心基于Cygwin早期版本fork来的msys
- 不满msys开发缓慢而另起炉灶的msys2
附相关介绍拙作
silaoA:Cygwin前传:从割据到互补?zhuanlan.zhihu.comsilaoA:Cygwin系列(一):Cygwin是什么?zhuanlan.zhihu.comsilaoA:Cygwin系列(三):盘点与Cygwin相似和相反的项目?zhuanlan.zhihu.comsilaoA:微软WSL——Linux桌面版未来之光?zhuanlan.zhihu.comcyg-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 工具。这早就超出了所谓命令行软体的范畴。
推荐阅读: