换回 win 了,习惯了 linux 命令,用不惯 cmd 那一套,win 下使用 linux 命令的方法有哪些?不想使用 wsl ,还有其他的方法吗?

装个 git bash ?

powershell 下安装 busybox ,可以跑一些基础命令。

有个叫做 cmder 的开源软件,可以在 Windows 上执行部分 Linux 命令,也可以用来替代一部分 cmd 的功能

感觉用起来还是没有 linux 下舒服

git bash 使用的 msys2 ,还有更老的 Cygwin

为什么不想用 wsl

你上来就去除一个最优选项,这是为何?

推荐使用 msys2 + ucrt ,你甚至能通过他们来装 zed 。 但是用这个安装的 python 不太好用,其他体验还可以。

因为出了问题,你不知道是 win 还是 wsl 的问题,算了这种结合体还是不要尝试了。。

cygwin / msys2 => 把 Linux 软件重新编译后在 windows 下运行虚拟机 / wsl2 => 相对隔离,又可以通过多种方式打通的使用 Linux 二进制

Visual Studio Code + Remote SSH extension ?

一直在用 Msys2 大部分常见的命令都有了 zsh 也能用 整个目录一锅端也不需要 admin 权限安装缺点是性能肯定有影响 不过能用就凑合用了

我听人说 powershell 很好,比 sh 好,也许花半天了解一下,拥抱 powershell 试试。

不经常写 Bash 脚本的话,PowerShell 还是挺好用的吧

推荐一下 nushell ,基于 powershell 的思想,但更快,更科学和好用:1. 支持三大平台:写的脚本可以多个平台通用。2. 语法严格,有类型系统:与 bash / zsh 相比,更符合程序员的使用习惯。

#9想定位问题容易我其实觉得不如开传统虚拟机....git bash(cygwin), msys2, nushell 啥的出问题都是些让人懒得定位的问题,他无时无刻不在质问你为啥不用真的 linux...实在不想开虚机的话可以参考 ssp 这篇文章配置 nushell: sspai.com/post/88838

MobaXterm 里有 1 个 linux 子集。先安装 MobaXterm ,然后把 MobaXterm\root\slash\bin 目录加入到 windows 的 PATH 路径里,就能在 cmd 里使用常见的 linux 工具命令了,很轻量。另外微软推出了“终端”的命令软件替代 cmd.exe ,整合上面通过 path 引入 linux 工具命令,用起来还行。

另外,我不喜欢 wsl ,hyper-v 跑 linux 虚拟机更干净整洁。

我为什么不直接用 linux 呢?我用 linux 有很多年了,平时一些小问题也就忍了,直到有一天,莫名其妙崩了,而且怎么弄都弄不好,我的心态也跟着崩了,奈何已经习惯了 linux 命令。。。我现在有个思路,虚拟机装 linux ,开机自启动,关机自关闭,弄一个终端连到 linux ,尽量做到无缝化体验

git bash 、msys2

github search: gow

#19那就上虚拟化吧,多打快照多备份,只要底座没崩基本上不会出问题。而底座既然不是作为开发机折腾,出问题的概率很低。我现在基本上都是 pve 打底,唯一一个物理开发机的 linux 也是在容器里开发

#19 ylcao.top/2022/09/25/%E6%94%BE%E5%BC%83wsl%E4%BD%BF%E7%94%A8vmware%E5%90%8E%E5%8F%B0%E8%BF%90%E8%A1%8Clinux%E8%99%9A%E6%8B%9F%E6%9C%BA/这个文章就是你说的思路,还可以,你试试

为啥不接受 wsl1 呢? 对于你这个需求挺合适啊

一直使用 git bash + cmder mini ,可满足大部分需要

windows powershell 是最好的 shell要用 bash 建议老老实实用 linux 系统吧 wsl 也行吧 不建议

以前用过一个 UnxUtils

自己写一些.bat 文件转换到 bin 目录,添加到系统 path 。比如 lscall dir %*有些也可以直接 mklink ,相当于 linux 下的 ln 链接

作为多年的 Linux 用户, 前段时间切换到 Windows, 我有跟楼主一样的需求.那些强推 WSL 的其实没有 get 到楼主和我这类人的真实需求: 我们需要用常见的 Linux 命令(ls, cp, mv, rm, cat, mkdir, touch,etc), 来直接操作 Windows 系统, 而不是通过 WSL 子系统.我们都知道 WSL 很好用, 但它毕竟是子系统, 是 Linux. 哪怕你可以跨系统在 /mnt/{c,d,e}/ 路径下访问和操作 Windows 宿主系统, 但他们并不是无缝兼容的.比如, 你此时创建的文件, 它们的换行符都是 Linux 下的 LF (/n), 而不是 Windows/Dos 下的 CRLF (/r/n). 这个问题在代码文件以及 git 里会造成不必要的麻烦. 你会发现 git status 动辄显示一堆文件发生了改变, 以及你 WSL 里写的脚本因为换行符的原因无法在 Windows 上执行, 需要用 unix2dos 之类的工具来转换一下.

gow

常用的 grep 之类的 gun utils 有 win 版有地方下载

入乡随俗,windows 的 Powershell 用习惯了功能比 gnu/bash 只强不弱

快照啊,自动快照、定时快照、手动快照。btrfs 和 zfs 都可以。用 Linux 的好处不就是可以定制系统,遇到什么问题都能有解决方案吗?怕系统崩就快照,还不放心可以全量/增量全盘备份。

Linux 可以很轻松地定制快照、备份策略,这些反而是 Windows 不容易做到的。Linux 可以深度定制功能特性,而 Windows 只能使用微软提供的既有功能选项。

#29 如果只是 ls, cp, mv, rm, cat, mkdir 之类的,那么 Windows PowerShell 不是都有的吗?当然 touch 似乎没有。文件路径用/也是可以的。难道大家切换到 Windows ,还是喜欢用 30 年不变的 cmd?

github.com/uutils/coreutils ,这个项目了解一下,把它在 Windows 上设置一个别名,我之前改成 cu 使用起来就可以 cu rm -rf *这种。

Windows 都能习惯,有什么不能忍的。

可以用 cmder

虚拟机装 Linux 和 wsl2 差距很小了wsl2 优点是基础环境是 WSL 自己管理的,发行版天然跑在容器里;还有 WSLg 这种转发图新应用的玩法,虚拟机相对难做到; cuda 转发、图形加速虚拟机也很难实现;启动和关闭是系统维护的,随用随开,用起来简单点。缺点的话,没法换基础镜像,也没法用官方不支持的功能

Cygwin 是一个免费和开源的软件,可以在 Windows 上运行 Linux 应用程序。它可以通过运行 setup-x86_64.exe 或 setup-x86.exe 进行安装,具体取决于您的系统架构。安装过程包括从 GUI 选择要安装的包,然后单击“安装”并等待所有内容下载。

在 win 下用终端是不得已的选择 无非是公司强迫用 win 不然坚持一下 linux 更好 在 win 下用终端难受的点就是一下用键盘一下用鼠标的状况无法全键盘操作 那操作界面本来就是鼠标友好用了顶多就是减缓焦虑 并不是异样感觉消失了gnu 的东西除了 autotools 一言难尽以外其它都很不错 虽然不太符合类 unix 哲学

看了那么多,只有你说出了我想说,却没表达出来的话。另外就算同样的命令,就算拿到 win 下怎么用怎么别扭。咋搞?换回 linux ?还是继续用 win

你说的也是我想的一点,怎么用怎么别扭

msys2 完美解决

哈哈, 和楼上的一样. 就是习惯了 linux 下的语法和常见命令了, 结果回到 windows, 只能用 powershell 和 cmd, 结果命令一敲一个报错.没办法的, windows 就是为 gui 设计的, 勉强不来. 老老实实开虚拟机.

msys2/cygwin ,其实 git for windows 就是基于 msys2 的。wsl 可以考虑 wsl1 ,这个不是虚拟机相对轻量一些。不喜欢 cmd 很正常,MS 留着这个也就为了兼容而已,不会做改进的。个别工具 win 已经自带,例如 curl 、tar 、ssh ,开箱即用。另外个人感觉涉及到数据传递时 bash/coreutils 搞下来好麻烦,pwsh 的 oop 特性处理这些会方便些,例如 json 提取数据+数值计算+运行命令这种,bash 只能传字符串,同类操作换*ix 世界就上 python 了。另外许多 Windows 平台相关操作 cli 以 pwsh 为首选,所以 pwsh 做相关自动化会容易些。

习惯了 ls, 不想用 dir于是,我创建了一个 C:/Windows/ls.bat ,里面写着 offdir不知道算不算自欺欺人,勉强凑合着用。

你说的这个不就是 wsl2 吗?🤔

直接用 pwsh 就好了呀,pwsh 已经自动帮你做了 ls 了。

不喜欢 wsl 那就 hyperv 加 Linux …但话说这和 wsl 有啥区别

touch 可以用 ni(New-Item), 或者 Set-Alias -Name touch -Value New-Item -Scope Global

  1. 换行符问题可以通过 vim/编辑器的默认设置调整解决2. git 可以设定换行符是否 as-is ,正确的模式下不会出现 git status 改变。3. wsl 可以直接右键菜单启动,直达当前操作目录也是可以的(反正我注册表就这么写的)。所以你的问题其实在于:既不熟悉 linux 也不熟悉 windows 。

#43 你可以看一下我前面发的那个,难道不符合你的需求吗

用 Windows 就安心玩游戏,做正事请用 Mac 或 Linux

我即世界😅不知道多少 Windows 在做比你正的多的正事儿

常用的 Linux 工具主要是 coreutils 、findutils ,大部分工具有 windows native 版本。集成环境就不说了,前面的回答提到了。首选 GNU utilities for Win32,虽然有些年头了,基础工具大部分不需要升级,或后续加的功能用到的几率不大,个别工具( sed 、grep 、awk )后续版本加了些功能,可能用到,后面再说解决方案。有少量工具工作不正常:如 tac 管道支持不正常,sed 的 s 命令中 regexp 部分中使用引用,如果引用部分超过 7 个字符,产生不正确结果。unxutils 覆盖不到的工具:可以用以下工具集替换,优先级为倒序,原因是尽量用单文件没依赖,兼容底版本系统。1 、busybox-w32,不想每次调用都需要输入 busybox ,可以存在于环境变量 path 的任一文件夹中创建对应命令的批处理文件,如:date.bat ,内容为 %~n0 %*2 、coreutils,buxybox 的 rust 实现,不支持旧操作系统。3 、GnuWin32,工具比较全面,只有 32 位,但采取的是动态编译,不能把可执行文件单独拎出来用。4 、用 MSYS2 项目中用 MinGW 预编译的工具包,大概率有静态版:pacman -Sy mingw-w64-{x86_64,i686}-xxx5 、可以自己编译个别软件,编译工具集用 MSYS2 就可以了。如 grep 、sed 、gawk 等工具的新版本就可以用这种方法。6 、不支持直接编译的,可以在网上找别人移植版、或自己有能力就改动一些不兼容内容,不涉及底层调用的,改起来不复杂,只是个别系统函数替换。7 、找同类软件替代,得益于新语言的发展,如:rust 、golang ,设计之初就考虑到了跨平台特性,基础库的通用性,使得编写跨平台相对简单多了,催生出好多旧有工具替代品,举几个典型的:fd (find)、rg (grep)、bat (cat/less)、sd (sed),多不胜举。8 、一些其它软件附带的工具,比如比较工具,如果支持比对 pdf ,大概率就附带有 pdf2txt 之类命令,支持 office 比对,也就有可能附带有相应的转换工具。还有 ftp 类工具附带 ssh 、sftp 命令。还有其它类似软件附带编译好的命令行工具,诸如此类,这个就靠平时收集了。9 、自己实现一个,造福同类。

多大年龄了,还秀优越感,能回答就回答,不能回答也不要把狭隘和傲慢分享给别人。

非原生的,我有点想用回 linux 了

我用的 git bash

#59 那你这要求就有点高了,在 Windows 上始终可能像 Linux 那样,但说实话,稍微了解下 powershell 就会觉得现在的 powershell 是真他喵的强大

我觉得正确的姿势是, 如果已经切换到 Windows, 就不要再执念于 CLI 了. 就如同使用 Linux, 就不要太执着于 GUI. 桥归桥, 路归路, 不要缘木求鱼为难自己.

其实是因为习惯带来的执念. 当然我已经克服了.

是哦, 你会好多奇技淫巧啊, 真是牛啊, 一定在这上面享受了很多欢乐的时光吧, 您继续.

哈哈哈, 我当时建了一堆这样的文件当别名用: github.com/guoqiao/winix/blob/main/bin/

我是随时启动一个 vmware ,里面装的是 ubuntu 。固定 IP 后,使用 ssh 客户端访问

主要想干嘛呢 如果是服务器管理 我们用的是 cygwin 开 ssh

cmder 用了多年了, 内置了 git bash.也可以使用 linux 路径, 甚至 /dev/sda 之类的设备访问.缺点是中文支持不甚理想.. 默认的 "入" 终端符号都是坑.要求轻量可以考虑 busybox-w32 ,下载后将 busybox 重命名为 sh.exe . 然后单文件(仅数百 KB) 就能使用很多 linux 命令.如 grep/sed/awk/wget , 不过功能特性略有缺失.

轻度使用的话加 alias重度使用的话 nushell 走起

我和你差不多,用 scoop 装了 coreutils

github.com/skeeto/w64devkit这个基本能满足我的需求

我就没这些烦恼,可能我比较菜,系统有什么就用什么

不是……上面这堆操作弄完五分钟好吧……啥欢乐时光……

cmder ,最好的还是装个 wsl 吧

git bash 卡死了

试试 busybox for windows ,体验度比较接近 linux 吧 frippery.org/busybox/ 下载后放到 d:\busybox ,然后运行 d:\busybox\busybox --install -s d:\busybox 产生命令软链接然后把 d:\busybox 加入到 windows 的 path 里,就可以使用 linux 的常用命令了。