ディレクトリのパスを入力として受け取り、そのディレクトリのアーカイブを作成し(単一のファイルに変換し)、そのファイルにシェバンを追加する(ファイルの内容を簡単に抽出できるようにする)簡単なプログラムを作成しました。 、指定したパスのベースディレクトリにファイルを書き込みます。
問題は、ファイルをダブルクリックしてもファイル自体が抽出されないことです。代わりに、オペレーティングシステム(私はUbuntu 11.10を使用しています)はgeditでそれを開こうとします。これは明らかに、シェバン、ランダムなジブリッシュ、およびアーカイブされたファイルの内容を示しています。
chmod +x
最初に;を使用してファイルを実行可能にしました。それでもうまくいかなかったとき、私は試しchmod 777
ました。ただし、ダブルクリックすると、shebangを使用してファイルを実行することはできません。おそらくこれは、純粋なテキストファイルではないためです。
興味深いことに、コマンドラインから直接ファイルを実行しようとすると、シェバンが読み取られ、アーカイブの内容が適切に抽出されます。したがって、私のファイル形式には何の問題もありません。ファイルをダブルクリックしたときのオペレーティングシステムの動作についてはよくわかりませんが、理解したいと思います。
コマンドラインから手動で実行する必要がある場合は、ファイルにシバンを追加しても意味がありません。利点の1つは、プログラムを開くためにプログラムを指定する必要がないことですが、それはほとんど利点ではないと思います。どんな助けでも大歓迎です。
アップデート1:
アーカイブを作成するプログラムはopmと呼ばれます。次のコマンドを使用して、ノードパッケージマネージャーからインストールできます。
npm install opm
その後、opmを使用してディレクトリをパックおよびアンパックします。たとえばtest
、ホームディレクトリに呼び出されたディレクトリがある場合、ターミナルを開き、次のコマンドを実行してパックすることができます。
opm test
test.pack
これにより、ホームディレクトリで呼び出されるディレクトリのアーカイブが作成されます。.pack
ファイルにはshebangがあります#!/usr/bin/opm
。.pack
拡張子がopmのファイルを開くと、そのファイルはアーカイブであり、opmは同じディレクトリに解凍します。
注:既存のディレクトリーtest.pack
を上書きしたくない場合は、ファイルの名前を変更してください。test
.pack
ファイルを開いたときにそれ自体が抽出されるように、ファイルにshebangを追加しました。しかし、それはうまくいかないようです。それでも、次のコマンドのいずれかを実行すると、機能します。
./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タイプに関連付けることによりapplication/opm
、OSは、デフォルトのアプリケーションを明示的に設定しなくても、デフォルトでopmProperties > Open With
を使用してアーカイブを開きます。