我在Windows上使用"git bash
" - 通过集成的git
为bash
用于Windows。显然它使用了MINGW / MSYS支撑。 (自@VonC更新:自2015年第四季度以来uses msys2以来msysgit is obsolete。)
因此,已经安装了很多MSYS工具 - 从awk
到zcat
。但是我错过man
命令和zip
将多个文件压缩成zip文件(unzip
存在!)。
我可以从哪里安装它们?我不想安装MINGW系统的另一个副本!任何方式只是为git bash
安装添加一些预编译工具?
答案 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,
}
。
我可以跟进修复此问题的步骤:
git
下,视情况而定。/c/Program Files/7-Zip
,您可以运行命令/c/Program Files/Git/mingw64/bin
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很容易。
我刚刚做到了!在我的笔记本电脑上。
结论:Gitbash是基于Windows Path运行的,我认为您可以运行添加到Windows PATH中的任何命令。
顺便说一句,如果您尝试此操作,请不要忘记给出结果的反馈。
答案 4 :(得分:5)
我使用choco
作为Windows软件包管理器。
我使用choco
和PowerShell
安装了7zip(您必须是管理员才能使用Choco)
PS > choco install 7zip.install
打开另一个gitbash
终端并找到7z.exe
可执行文件
$ which 7z
/c/ProgramData/chocolatey/bin/7z
将7z.exe
复制到zip.exe
和voila
$ 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>
不幸的是,在我的机器上,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:
zip-3.0-bin.zip
bin
文件夹中,找到文件zip.exe
。C:\Program Files\Git\mingw64\bin
)bzip2-1.0.5-bin.zip
bin
文件夹中,找到文件bzip2.dll
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)
以下是您可以遵循的步骤。
找出你缺少的任何命令 这里我需要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。
参考链接 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) 并将此文件解压缩到一个文件夹中,并使用文件夹名称更新路径变量。 这对我有用。