工具使用 借助msys2 在windows使用巴适的bash

工具使用 借助msys2 在windows使用巴适的bash

越行勤 1,111 2021-11-03

引言

msys2 官网 :https://www.msys2.org/

对于我本人来说,不喜欢powershell,也许因为我不会使用它也懒得花时间学习或者对bash环境情有独钟,所以我一致期望在windows下能有一个bash环境,我选择的目标可以有 wsl,Cygwin,虚拟机,msys2。但是这些有的太大占空间,有的性能不好。虚拟机&wls:目前我的需求并没有那么大,况且我有服务器里面可跑着原生的linux,这里编译的程序无法直接运行在windows上。

我们看看其他选择:

特点CygwinMinGW/MSYSMSYS2
是否GNU
更多软件支持?支持绝大多数的 GNU 软件支持常用软件,git、Vim等软件需要独立支持(详细介绍见下方)支持大多数 GNU 软件
更类Linux?Cygwin在Windows中就好像Wine在Linux中实现了Bash等主要的Linux程序原生64/32bit支持
GCC编译内含MingGW32交叉编译功能,既支持依赖cygwin1.dll的程序编译,也支持独立的Windows程序编译;可以直接编译Linux下的应用程序支持独立的Windows程序编译支持独立的Windows程序编译
中文支持直接支持中文显示和输入法需要配置才能支持中文显示和输入,删除一个中文字符需要删除2次支持中文显示和输入法,中文帮助系统和中文提示(部分软件)
运行速度

注该表摘自:https://blog.zengrong.net/

显然,msys更适合我的需求----我就想在windows上使用 bash

使用msys2 打造巴适的bash环境

效果

先看一下效果,本人使用的是win11自带windows terminal并且可以可以在任意目录右键打开terminal,如果你使用的win10可以自行去安装一下,修改注册表将其添加到右键来,可以参考链接:https://blog.csdn.net/weixin_42216574/article/details/107794358

这样可以在任意位置打开bash,在bash中我们可以使用 start <路径>打开资源管理器 ,比如 start . 打开当前路基

image-20211103123942577

msys不但支持常用的bash命令,还有很多重量级编译好的软件包。

image-20211103131030008

嗯我非常喜欢。这里我安装了ohmyszh 看着也舒适多多了,当然再这里执行powershell命令也是没问题的.

这里我简单记录 重要的安装配置和一些工具的使用。

  1. 基本安装
  2. 整合在terminal中
  3. 安装 ohmyzsh
  4. 一些好用的包

基本安装

基本的软件安装 官网有教程,这里不再赘述了,传送门:https://www.msys2.org/

在安装完成之后看一下安装路径,

image-20211103161535488

这结构和unix系统结构非常相似,其实msys主要是方便程序员配置 mingw clang , 在mingw32 、mingw64 、clang64等路径下存在一个局部的类uninx文件结构,emmm这里感觉很不舒服。

发现这里有 很多exe, 这里分别代表不同环境的下的bash,例如 mingw64.exe就是 mingw64路径下的bash、msys2是全局的,当然这里的我一个都不使用。

image-20211103162606063

这里我们为了在命令行中使用基本GNU工具,将/usr/bin加入到环境变量中,这一点非常重要。

换源

和众多linux包管理器一样,为了不错的下载速度,我们必须为pacman换源具体方法如下:

这里我们使用清华源,方法摘自 https://mirrors.tuna.tsinghua.edu.cn/help/msys2/

编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64

编辑 /etc/pacman.d/mirrorlist.ucrt64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/ucrt64

编辑 /etc/pacman.d/mirrorlist.clang64 ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/clang64

编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:

Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch

然后执行 pacman -Sy 刷新软件包数据即可。

terminal 启动 bash

现在版本的terminal的设置无需通过修改josn文件来添加终端,方便了很多,大致配置如下:

image-20211103163151585

注意要使用 \usr\bin\bash.exe, 我们还可与给他设置一个默认的启动路径。

可以将该配置设置为默认。

如果你在 前面将 \usr\bin\ 加入到环境变量的话,那么你应该可以使用不少基本gnu下单工具了。如果你想去到其他盘符 可以输入 cd /c 切换到C盘,无需挂载.

这里默认的家目录不少windows的那个,而是安装目录下的 /home

ohmyzsh安装

在完成前面换源操作之后,咱们安装一些git ,输入命令

pacman -S git # 安装git

有了bash环境,那么按照zsh是必须的,但是考虑到国内不可抗拒的因素,我们需要通过gitee安装,具体步骤如下:

摘自 https://gitee.com/daotoyi/gitee-ohmyzsh

安装教程

  1. git clone git@gitee.com/daotoyi/gitee-ohmyzsh.git
  2. cd gitee-ohmyzsh
  3. sh ./install.sh

使用说明

  1. vim install #安装文件中更换了地址。
# REPO=${REPO:-mirrors/oh-my-zsh}
REPO=${REPO:-daotoyi/ohmyzsh}
REMOTE=${REMOTE:-https://gitee.com/${REPO}.git}
  1. 下载之后直接执行sh ./install.sh即可。

其他个性化的配置

我暂时没有找到如何设置默认的shell为 zsh,不过别忘了 .bashrc 文件是每次用户启动bash都会执行一边的 ,我直接在该文件设置即可

直接在/home/<usrname>/.bashrc 末尾加入 zsh

image-20211103165800751

其实使用zsh 就可以切换终端,输入cmd可以切换到 cmd, 输入bash就切换到bash,输入 powershell也就切换到shell中了.

这里告诉一个小技巧, 输入命令 :

code .

可以快捷的打开 vscode,而且打开了当前目录了哈.

修改 .zshrc 文件,可以配置主题等功能,我是的是 ZSH_THEME="bira"

image-20211103170321370

安装基本包

命令如下:

# 安装gcc clang
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-clang mingw-w64-x86_64-lld mingw-w64-x86_64-gdb mingw-w64-x86_64-make mingw-w64-x86_64-polly mingw-w64-x86_64-compiler-rt

# 安装 基本工具  wget unzip zip tar
pacman -S wget  unzip zip tar  
# 安装 非常好用的种子下载器
pacman -S mingw-w64-x86_64-aria2

注意: gcc clang aria2 被放在了 \mingw64\bin下,需要你将他也添加到 path中

vscode 配置 bash

我们虽然使用 pacman 安装了git ,但是vscode 无法识别, 没关系,经过查阅文档,发现可以点可以配置, 而且可以设置vscode的终端也为 bash. 打开vscode的 setting.json,注:如果你不知道如何打开,可以在 设置 中搜索 setting ,出现下图的按钮点击即可.

image-20211103171403479

这样我们就打开了vscode的全局设置,我的配置如下

{
    //.......
    //省略前面的配置
    //这里添加到文件末尾即可
    
	//zsh设置
    "terminal.integrated.profiles.windows": {
        "ohmyzsh": {
            "path": "D:\\Software\\SDK\\msys64\\usr\\bin\\bash.exe",  //设置为你的路径
        }
    },
    "terminal.integrated.defaultProfile.windows": "ohmyzsh",
    //git路径设置
    "git.path": "D:\\Software\\SDK\\msys64\\git-wrap.bat",			 //设置为你的路径
}

参考文档:https://code.visualstudio.com/docs/getstarted/settings

附录

这里简单记录一下,方便查阅

pacman 包管理器

常用参数:

参数
-R删除单个软件包
-Q列出已经安装的软件包
-U安装指定包
-S同步/安装

下面记录一下常用的操作对应的命令,方便后续查阅

安装

pacman -Syu                 # 同步Msys2源,并更新 
pacman -Sy                  # 仅同步源 
pacman -Su                  # 更新系统
pacman -S  <packge-name>    # 安装包
pacman -Sy <packge-name> 	# 与上面命令不同的是,该命令将在同步包数据库后再执行安装。
pacman -Sv <packge-name>    # 在显示一些操作信息后执行安装
pacman -U  <local/remote_packge-name>  # 安装包,其扩展名为 pkg.tar.gz。

卸载

pacman -R <packge-name>      # 该命令将只删除包,保留其全部已经安装的依赖关系
pacman -Rs<packge-name>      # 在删除包的同时,删除其所有没有被其他已安装软件包使用的依赖关系
pacman -Rsc <packge-name>    # 在删除包的同时,删除所有依赖这个软件包的程序
pacman -Rd <packge-name>     # 在删除包时不检查依赖。

搜索包

pacman -Ss <keyword>        # 在仓库中搜索含关键字的包。
pacman -Qs <keyword>        # 搜索已安装的包。
pacman -Qi <packge-name>    # 查看有关包的详尽信息。
pacman -Ql <packge-name>    # 列出该包的文件。

其他用法

pacman -Sw <packge-name>     # 只下载包,不安装。
pacman -Sc                   # 清理未安装的包文件,包文件位于 /var/cache/pacman/pkg/ 目录。
pacman -Scc                  # 清理所有的缓存文件。

aria2c 命令

下载

aria2c <url> -o <newname>     # 下载并重命名
aria2c <url> -d <dir>         # 下载到指定路径
aria2c -s 2 -x 2 -j 10  <url> # 使用两个线程 最大同时下载10个文件   -s 指定线程数  -x 指定最大线程数  -j 指定同时下载文件数
aria2c -c <url>               # 断点续传
aria2c <xxx.torrnet>          # 种子下载
aria2c --select-file=2-7 target.torrent  # 下载种子内2-7文件

当然使用命令行 我指示感觉非常酷炫,而且快速,如果你不喜欢,使用 IDM或者其他工具, 作为成年人我当然都要