前端在 bash 中使用 zip 踩坑记录

各位大佬好,最近被布置了一个任务,说是要对 workflow 进行优化,期间经历了各种坑,下面记录下来,方便自己,也方便你们。

今天这个坑和在 bash 中执行压缩命令 zip 有关。这里的 bash 指的是安装 git 的时候自带的 shell 环境。

下面一起来看看我都遇到哪些抓狂的事情,以及怎么样解决的吧。

当然,各位大佬有更好的办法也可以在评论区教教我,感谢感谢!

坑1:根本就没有这个命令好吧

显然,这个阉割版的 shell 环境并没有 zip 命令。

为此,我不得不去网上下载一个,这里长话短说,参考这篇文章即可:
在 Windows 环境下的 Bash 中安装 Tree 命令 – 掘金 (juejin.cn)

然后我就直接到这个网站下载了 zip 的二进制文件:
GnuWin – Browse /zip/3.0 at SourceForge.net

前端在 bash 中使用 zip 踩坑记录

解压之后,按照引用文章中的技巧,将 zip.exe 放到对应的目录下,重启 vscode, 然后就报错了。。

前端在 bash 中使用 zip 踩坑记录

不过这都不是事,经过我不懈的努力,最后证明,是缺失了一个公共文件:bzip2.dll

幸好,这个文件在刚才的网站上也能下载:
GnuWin – Browse /bzip2/1.0.5 at SourceForge.net

前端在 bash 中使用 zip 踩坑记录

下载那个二进制文件:bzip2-1.0.5-bin.zip 下载那个大一点的,最后一个, 158.4kB

下载完之后解压,只需要将 bzip2.dll 这个文件复制到放置 zip.exe 的地方就可以了:

前端在 bash 中使用 zip 踩坑记录

如此一来,重启 VScode, 然后尝试压缩一下,非常完美!

坑2:压缩层级超乎意料

我遇到的第二个坑和压缩完毕之后的层级目录有关系。

举个例子,假如我想要压缩 test 目录成为 test.zip 压缩文件,常规来说我当然想:

zip test.zip test

但是这样做,最终压缩文件的层级就变成了:

前端在 bash 中使用 zip 踩坑记录

看见没,多了一层,也就是 test.zip 进去之后有一个 test 目录。

这不是我期望的效果,我希望 test.zip 包裹的直接就是文件。

这个问题解决起来也很简单,只需要将压缩命令改成下面即可:

cd test
zip test.zip *

前端在 bash 中使用 zip 踩坑记录

这样一来问题就解决了,但是由于使用了 cd 命令,导致脚本执行完毕之后路径变了。这不是想要的结果,所以,将上面的 shell 代码封装到一个文件中,这样执行之后也不会改变当前的路径信息:

touch zip.sh
echo 'cd test' > zip.sh
echo 'zip test.zip *' >> zip.sh
shell zip.sh

最后,在文章的结尾做一下关于 zip 的科普,知其然知其所以然才能灵活应用不是。

3. zip 命令介绍

在Shell中,zip命令是一个用于压缩文件和目录的工具,它可以将多个文件或目录打包成一个单独的.zip格式压缩文件。这个命令在Linux和Unix-like系统中广泛使用,帮助用户有效地管理和传输数据。

使用zip命令时,用户需要指定压缩文件的名称和要压缩的文件或目录。例如,
zip archive.zip file1.txt file2.txt命令会将file1.txtfile2.txt两个文件压缩成名为archive.zip的压缩文件。

如果要压缩整个目录,可以使用-r选项,如zip -r archive.zip directory/

zip命令还支持多种选项,如设置压缩级别添加密码保护等。通过灵活使用这些选项,用户可以根据实际需求定制压缩过程。

zip命令是Shell中非常实用的工具,它能够帮助用户高效地压缩文件和目录,从而节省存储空间并方便数据传输。无论是日常办公还是系统管理,掌握zip命令的使用方法都是非常有益的。

原文链接:https://juejin.cn/post/7350906935347527719 作者:垂慕容

(0)
上一篇 2024年3月28日 上午10:44
下一篇 2024年3月28日 上午10:54

相关推荐

发表回复

登录后才能评论