如何添加man和zip到" git bash"在Windows上安装

时间:2016-08-05 06:51:50

标签: windows git install git-bash mingw-w64

我在Windows上使用"git bash" - 通过集成的gitbash用于Windows。显然它使用了MINGW / MSYS支撑。 (自@VonC更新:自2015年第四季度以来uses msys2以来msysgit is obsolete

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

我可以从哪里安装它们?我不想安装MINGW系统的另一个副本!任何方式只是为git bash安装添加一些预编译工具?

16 个答案:

答案 0 :(得分:17)

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

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

答案 1 :(得分:7)

我很高兴分享我在这个问题上的经验,这是自从我和Groovy一起玩的第一天起我已经知道两年了。我的方法需要在Windows操作系统中安装0 { color => green, size => large, } 1 { color => green, size => small, } 2 { color => orange, size => small, }

我可以跟进修复此问题的步骤:

  • its official website下载并安装7z-zip。默认情况下,它安装在Windows 10中的目录git下,视情况而定。
  • 在管理员权限下运行git Bash并导航到目录/c/Program Files/7-Zip,您可以运行命令/c/Program Files/Git/mingw64/bin
  • 然后按照sdkman website中提供的说明进行操作(如果您尝试在Windows中安装ln -s /c/Program Files/7-Zip/7z.exe zip.exe我猜测。否则,请忽略此步骤。)

我很确定它可以帮到你很多。相信我!

答案 2 :(得分:7)

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

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

#!/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

答案 3 :(得分:5)

向gitbash添加7-zip很容易。

  1. 在Windows上安装7-zip。
  2. 将7-zip文件夹添加到PATH exp:C:\ Program Files \ 7-Zip
  3. 将7z.exe的副本复制为zip.exe
  4. 再次重新打开gitbash。完成!

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

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

答案 4 :(得分:5)

我使用choco作为Windows软件包管理器。

我使用chocoPowerShell安装了7zip(您必须是管理员才能使用Choco)

PS > choco install 7zip.install

打开另一个gitbash终端并找到7z.exe可执行文件

$ which 7z
/c/ProgramData/chocolatey/bin/7z

7z.exe复制到zip.exevoila

$ cp /c/ProgramData/chocolatey/bin/7z.exe /c/ProgramData/chocolatey/bin/zip.exe

答案 5 :(得分:4)

您可以通过将***foo*** <p><em><strong>foo</strong></em></p> 映射到man <command>

来模仿shell中的一小部分人员行为

不幸的是,在我的机器上,bash别名不会向位置参数添加标志,它会尝试将该标志作为命令运行并失败(<command> --help | less不起作用)。

不允许使用名为alias man="$1 --help"的函数!

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

source ~/.bashrc

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

答案 6 :(得分:2)

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

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

答案 7 :(得分:1)

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

  1. 导航到https://sourceforge.net/projects/gnuwin32/files/zip/3.0/
  2. 下载zip-3.0-bin.zip
  3. 在压缩文件的bin文件夹中,找到文件zip.exe
  4. 将文件“ zip.exe”提取到您的“ mingw64” bin文件夹中(对我来说:C:\Program Files\Git\mingw64\bin
  5. 导航到https://sourceforge.net/projects/gnuwin32/files/bzip2/1.0.5/
  6. 下载bzip2-1.0.5-bin.zip
  7. 在压缩文件的bin文件夹中,找到文件bzip2.dll
  8. bzip2.dll提取到您的“ mingw64” bin文件夹(同一文件夹-C:\Program Files\Git\mingw64\bin

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

ln -s /mingw64/bin/ziptool.exe /usr/bin/zip

答案 10 :(得分:1)

虽然关于 man 的这个问题已经得到了相当彻底的回答,但这里还没有强调一种压缩的替代方法。 @Zartc 让我注意到 内置了一个 zip 压缩实用程序:ziptool。然而,在尝试使用它时,我发现它远不及直接替换,您需要指定每个单独的文件和文件夹。所以我深入研究了文档并进行了试验,直到我有了一个 bash 函数,它可以完成所有繁重的工作,并且可以非常类似于基本的 zip -qrf name * 压缩调用:

zipWithZiptool() {
  # Docs: https://libzip.org/documentation/ziptool.html
  targetFilePath="$1"
  shift
  args=() # collect all args in an array so spaces are handled correctly
  while IFS=$'\n\r' read -r line; do
    if [[ -d "$line" ]]; then
      args+=("add_dir" "$line") # Add a single directory by name
    else
      # add_file <pathInZip> <pathToFile> <startIndex> <length>
      args+=("add_file" "$line" "$line" 0 -1)
    fi
  done <<< "$(find "$@")" # call find with every arg to return a recursive list of files and dirs
  ziptool $targetFilePath "${args[@]}" # quotation is important for handling file names with spaces
}

例如,您可以通过如下调用来压缩当前目录的内容:

zipWithZiptool "my.zip" *

答案 11 :(得分:0)

以下是您可以遵循的步骤。

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

  2. 找出你缺少的任何命令 这里我需要zip和bzip2来获取zip命令。因为zip命令依赖于bzip2.dll来运行。否则,在加载共享库时会出现错误“错误:?:无法打开共享对象文件:没有这样的文件或目录”。

  3. 解压缩下载的文件 这里我在bin文件夹中为“zip.exe”下载“zip-3.0-bin.zip”,为“bzip2.dll”下载“bzip2-1.0.5-bin.zip”。 /bin/.exe

  4. 将命令exe文件复制到git-bash文件夹中 这里我将“zip.exe”和“bzip2.dll”复制到\ Git \ usr \ bin。

  5. 参考链接 https://ranxing.wordpress.com/2016/12/13/add-zip-into-git-bash-on-windows/

答案 12 :(得分:0)

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

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

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

zip archive.zip files...

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

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

git option --help

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

答案 13 :(得分:0)

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

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

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

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

您可以说

找出每个窗口的路径
`cygpath -w /bin`

在每个相应的外壳中。

答案 14 :(得分:0)

这是我没有注意到的另一个 7-Zip 选项:

创建一个名为 zip 的脚本:

$ vi ~/bin/zip

参考7z指定 add 命令,后跟args:

#!/bin/bash
/c/Progra~1/7-Zip/7z.exe a "$@"

最后使其可执行

$ chmod ugo+x ~/bin/zip

这有助于使 ytt 构建脚本满意。

+ zip ytt-lambda-website.zip main ytt

7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive:
2 files, 29035805 bytes (28 MiB)

Creating archive: ytt-lambda-website.zip

Add new data to archive: 2 files, 29035805 bytes (28 MiB)

答案 15 :(得分:0)

这是我的经验,我无法在笔记本电脑中运行和 exe 或 .msi 文件。所以从 https://github.com/bmatzelle/gow/wiki 下载文件 > 去下载 Now and Downloaded Source Code (Zip) 并将此文件解压缩到一个文件夹中,并使用文件夹名称更新路径变量。 这对我有用。