【发布时间】:2017-09-26 09:56:59
【问题描述】:
我在 Linux 系统中有一个巨大的文件夹。在其中,我有一个包含几个 shell 脚本的 zip 存档。我需要执行这些 shell 脚本,但挑战是我没有对该文件夹的写入权限。此外,我也无法将其移动到其他目录,因为该文件的位置对其执行至关重要。它不会在任何其他目录中工作。
有什么方法可以从 zip 存档中执行 shell 脚本而不提取它?
【问题讨论】:
我在 Linux 系统中有一个巨大的文件夹。在其中,我有一个包含几个 shell 脚本的 zip 存档。我需要执行这些 shell 脚本,但挑战是我没有对该文件夹的写入权限。此外,我也无法将其移动到其他目录,因为该文件的位置对其执行至关重要。它不会在任何其他目录中工作。
有什么方法可以从 zip 存档中执行 shell 脚本而不提取它?
【问题讨论】:
您可以通过指定压缩文件后的路径来解压缩一个特定的文件:
$ unzip c.zip a.sh
Archive: c.zip
extracting: a.sh
在此命令中,a.sh 是您要运行的脚本的路径。
您可以使用-p 参数将内容打印到标准输出:
$ unzip -p c.zip a.sh
#!/bin/sh
echo "this is a.sh; it is now $(date)"
最后,您可以通过管道将其发送到 sh 以运行它:
$ unzip -p c.zip a.sh | sh
this is a.sh; it is now Tue Sep 26 11:02:28 BST 2017
请注意,相当多的 shell 脚本假定 bash,因此您可能希望将其通过管道传送到 bash 而不是 sh,具体取决于脚本。
【讨论】: