如何在Windows上将man和zip添加到“ git bash”安装中

How to add man and zip to “git bash” installation on Windows

我在Windows上使用" git bash"-通过集成的bash在Windows中为git。 显然,它使用了MINGW / MSYS基础。 (来自@VonC的更新:由于msysgit自2015年第四季度起已过时,它现在使用msys2。)

因此,已经安装了许多MSYS工具-从awkzcat。 但是我错过了man命令和zip来将多个文件压缩成zip文件(unzip存在!)。

从哪里可以安装它们? 我不想安装MINGW系统的另一个副本! 是否可以将某些预编译的工具添加到git bash安装中?


可以从GoW(在Windows上为Gnu)安装zip命令。未提供man(太大)。

但是请注意,如果您只想从GoW添加zip命令,则仍然必须下载并安装整个GoW系统。然后,您可以从bin目录中删除其他命令,但是请确保将所需的dll保留在该目录中。


我很高兴分享我在这个问题上的经验,自从我与Groovy在一起的第一天以来,我已经两年没有认识了。我的方法需要在Windows OS中为Windows安装git

这些步骤用于安装7z命令行实用程序,该实用程序的行为与zip有所不同:

  • 从其官方网站下载并安装7-Zip。默认情况下,以我为例,它安装在Windows 10中的目录/c/Program Files/7-Zip下。
  • 在管理员特权下运行git Bash并导航到目录/c/Program Files/Git/mingw64/bin,您可以运行命令ln -s"/c/Program Files/7-Zip/7z.exe" 7z.exe

我很确定它可以为您带来很大帮助。相信我!


向gitbash添加7-zip很容易。

  • 在Windows上安装7-zip。
  • 将7-zip文件夹(C:\Program Files\7-Zip)添加到PATH
    gitbash exp上:export PATH=$PATH:"C:\Program Files\7-Zip"(临时)
    在Windows上,添加如下图所示的PATH(永久)
  • enter image description here

  • 将7z.exe的副本复制为zip.exe
  • 再次重新打开gitbash。完成!
  • 如果跳过第3步,您仍然可以将zip命令称为7z而不是zip

    我刚刚做到了!在我的笔记本电脑上。

    结论:Gitbash是基于Windows Path运行的,我认为您可以运行添加到Windows PATH中的任何命令。顺便说一句,如果您尝试此操作,请不要忘记给出您的结果反馈。


    git-archive,无需任何安装即可准备,可以创建zip归档文件。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    mkdir workrepo
    cd workrepo
    git init
    cp -r [target_file_or_dir] .
    git add .
    git commit -m commit
    git archive -o ../myarchive.zip @
    cd ..
    rm -rf workrepo

    以下脚本可能是可用的:
    zip.sh foo.zip target_file_or_dir

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/bash

    set -eu

    unset workdir
    onexit() {
      if [ -n ${workdir-} ]; then
        rm -rf"$workdir"
      fi
    }
    trap onexit EXIT

    workdir=$(mktemp --tmpdir -d gitzip.XXXXXX)


    cp -r"$2""$workdir"

    pushd"$workdir"
    git init
    git add .
    git commit -m"commit for zip"
    popd

    git archive --format=zip -o"$1" --remote="$workdir" HEAD


    您可以通过将man 映射到 --help | less来模仿外壳中人类行为的一小部分

    不幸的是,在我的计算机上,bash别名不会在位置参数中添加标志,它会尝试将标志作为命令运行并失败(alias man="$1 --help"不起作用)。

    并且不允许使用名为man()的函数!

    幸运的是,bash函数和别名的组合可以实现此映射。将下面的代码放入?/ .bashrc中(如果不存在,请创建一个)。不要忘记source ~/.bashrc

    1
    2
    3
    4
    5
    # man command workaround: alias can't pass flags, but can't name function man
    m() {
       "$1" --help | less
    }
    alias man="m"

    它并没有为您提供完整的手册页,但是,如果您要查找的只是命令及其标志的基本信息,那么这可能就是您所需要的。


    这是另一套稍有不同的说明,用于在Windows上为git bash安装zip:

  • 导航到https://sourceforge.net/projects/gnuwin32/files/zip/3.0/
  • 下载zip-3.0-bin.zip
  • 在压缩文件的bin文件夹中,找到文件zip.exe
  • 将文件" zip.exe"解压缩到您的" mingw64" bin文件夹中(对我来说:C:\Program Files\Git\mingw64\bin)
  • 导航到https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/
  • 下载bzip2-1.0.5-bin.zip
  • 在压缩文件的bin文件夹中,找到文件bzip2.dll
  • bzip2.dll提取到您的" mingw64" bin文件夹(同一文件夹-C:\Program Files\Git\mingw64\bin)

  • 您可以从http://gnuwin32.sourceforge.net/packages.html安装单个GNU工具,例如zip

    然后在.profile.bash_profile.bashrc等启动脚本中将"/c/Program Files (x86)/GnuWin32/bin"添加到PATH中。


    您可以按照以下步骤操作。

  • 转到以下链接
    https://sourceforge.net/projects/gnuwin32/files/

  • 找出您缺少的任何命令
    在这里,我需要zip和bzip2作为zip命令。因为zip命令依赖bzip2.dll来运行。否则,您将收到错误消息"加载共享库时出错:?:无法打开共享库文件:没有此类文件或目录"。

  • 解压下载的文件
    在这里,我要在bin文件夹中下载" zip.exe"的" zip-3.0-bin.zip"和" bzip2.dll"的" bzip2-1.0.5-bin.zip"。 /bin/.exe

  • 将命令exe文件复制到git-bash文件夹中
    在这里,我将" zip.exe"和" bzip2.dll"复制到 Git usr bin。

  • 参考链接
    Add zip into GIT Bash on Windows


    在msys2中,我通过安装man-db恢复了git help 的功能:

    1
    2
    |prompt> pacman -Syu man-db
    |prompt> git help archive

    对于zip功能,我还使用git archive(类似于yukihane的答案)。


    如果您还愿意安装CygWin,则可以将CygWin路径添加到GitBash路径,并且如果存在zip,它将起作用。例如加

    1
    2
    PATH=$PATH:/c/cygwin/bin
    export PATH

    到您的.bashrc;注意:我会将其放在所示路径的末尾,而不是开头。

    由于CygWin具有基于UI的安装程序,因此可以轻松添加或删除zip或man之类的应用程序。

    您可以通过说出每个窗口的路径

    1
    `cygpath -w /bin`

    在每个相应的外壳中。


    关于zip,可以使用以下perl脚本来打包文件:

    1
    2
    3
    4
    5
    #!/usr/bin/perl
    use IO::Compress::Zip qw(:all);
    $z = shift;
    zip [ @ARGV ] => $z or die"Cannot create zip file: $ZipError
    ";

    如果将其设置为可执行文件,将其命名为zip,然后将其放入$PATH中,则可以这样运行它:

    zip archive.zip files...

    但是它不适用于目录。无需安装任何软件,因为perl且所有必需的模块已经在Windows的Git安装中。

    关于man,至少对于git,有这样的文档被调用:

    git option --help

    它将在您的默认浏览器中打开。