我创建了一个简单的程序,它将目录的路径作为输入,创建该目录的存档(将其转换为单个文件),向该文件添加一个 shebang(以便可以轻松提取文件的内容) ,并将文件写入指定路径的基目录。
问题是当我双击该文件时,它不会自行解压。相反,操作系统(我使用的是 Ubuntu 11.10)尝试使用 gedit 打开它。这显然显示了shebang、随机乱码和存档文件的内容。
我使文件可执行,首先使用chmod +x
; 当它仍然不起作用时,我尝试了chmod 777
。但是,当我双击它时,它仍然拒绝使用 shebang 执行文件。也许这是因为它不是纯文本文件。
有趣的是,当我尝试直接从命令行执行文件时,它会读取 shebang 并正确提取存档的内容。所以我的文件格式没有问题。当您双击文件时,我不太了解操作系统会做什么,但我很想了解。
如果您仍然需要从命令行手动执行它,那么将 shebang 添加到文件肯定是没有意义的。一个优势可能是您不需要指定打开它的程序,但我相信这几乎不是优势。任何帮助将不胜感激。
更新1:
创建存档的程序称为opm。可以使用以下命令通过节点包管理器安装它:
npm install opm
之后,您只需使用opm为您打包和解压缩目录。例如,如果我的test
主目录中有一个名为的目录,那么我可以打开一个终端并执行以下命令来打包它:
opm test
这将创建在test.pack
主目录中调用的目录的存档。该.pack
文件有 shebang #!/usr/bin/opm
。.pack
用opm打开一个带有扩展名的文件告诉它它是一个存档,并且opm将它解压缩到同一目录中。
注意:test.pack
如果您不希望文件覆盖现有test
目录,请更改文件名。
我将shebang添加到.pack
文件中,以便在我打开它时它会自行提取。但是,这似乎不起作用。不过,如果我运行以下命令之一,那么它可以工作:
./test.pack
您可以查看我的源代码并根据需要对程序进行任何修改。
更新 2:
好的,我为opm创建了以下.desktop
文件并将其存储在目录中:$HOME/.local/share/applications/
[Desktop Entry]
Type=Application
Version=1.0
Encoding=UTF-8
Name=OPM
GenericName=Object Packer and Minifier
NoDisplay=true
Comment=JavaScript Package Manager
TryExec=opm
Exec=opm %f
Terminal=false
MimeType=application/opm
现在我可以通过右键单击文件、转到窗口、选项卡并设置为默认应用程序来将.pack
文件与opm相关联。现在我可以通过简单地打开文件来解压缩它。.pack
Properties
Open With
opm.desktop
.pack
但是我想知道如何将.pack
文件与 mime 类型相关联application/opm
。目前,这些.pack
文件与application/x-java-pack200
. 我该怎么做?如果我使用不同的扩展名(例如.opm
)会更好吗?通过将打包的档案与 mime 类型相关联,操作系统是否会默认使用opmapplication/opm
打开它们,而无需显式设置默认应用程序?Properties > Open With