.zipまたは.jarファイルに変更を加える必要がある場合があるため、通常、ファイルを/tmpに移動し、すべてのファイルを抽出し、unzipいくつかのファイルを編集してから、ファイルを再度圧縮します。これは機能しますが、面倒な場合があります。unzipand を明示的に呼び出すことなく、zipファイル内のファイルを編集するために使用できるユーティリティまたはシェルスクリプトはありますかzip(これらのコマンドの単なるラッパーであっても)。
.zipまたは.jarファイルに変更を加える必要がある場合があるため、通常、ファイルを/tmpに移動し、すべてのファイルを抽出し、unzipいくつかのファイルを編集してから、ファイルを再度圧縮します。これは機能しますが、面倒な場合があります。unzipand を明示的に呼び出すことなく、zipファイル内のファイルを編集するために使用できるユーティリティまたはシェルスクリプトはありますかzip(これらのコマンドの単なるラッパーであっても)。
回答:
解凍する前に、アーカイブ内のファイルの名前を知っていますか?/tmpzip を解凍、編集、および更新する関数を作成できます。
zipedit(){
echo "Usage: zipedit archive.zip file.txt"
unzip "$1" "$2" -d /tmp
vi /tmp/$2 && zip -j --update "$1" "/tmp/$2"
}
それが言うように、使用法は次のとおりです。
zipedit myarchive.zip myfile.txt
これにより、名前付きファイルがアーカイブから解凍され、に保存され/tmp、編集されvi、パスに「ジャンク」されながらアーカイブに追加されます。想定して、.bash_profileに追加しますbash...
編集:以下は、アーカイブ内のサブフォルダーで動作するバージョンです...注、フォルダー名の前にスラッシュを使用しmyfolder/file.txtないでください(つまり、notを使用します/myfolder/file.txt)。アーカイブにまだ存在していないファイルを編集する場合、作成されます。また、zipファイルへの絶対パスで機能するかどうかもわかりません。相対的な最高のスティック。
zipedit(){
echo "Usage: zipedit archive.zip folder/file.txt"
curdir=$(pwd)
unzip "$1" "$2" -d /tmp
cd /tmp
vi "$2" && zip --update "$curdir/$1" "$2"
# remove this line to just keep overwriting files in /tmp
rm -f "$2" # or remove -f if you want to confirm
cd "$curdir"
}
質問ありがとう。私もおそらくこれを使用することになります!
別の編集:テストされていませんが、私はそれを読んでvim、emacs両方のjarファイルを直接編集しますか?
Vimは、zipファイル内のファイルの透過的な編集をサポートしています。実行するだけです:
vim file.zip
zipアーカイブ内のファイルのリストが表示されます。編集するものを選択し、必要なものを変更して、:xで終了します。
次のようにvim応答する場合:
変更できません。「変更可能」はオフです
..単に実行する:set modifiableか:set ma(ソース:https : //stackoverflow.com/questions/5745506/vim-modifiable-is-off)
短い答え:いいえ。
ラッパーの場合、これらのコマンドを呼び出しています。とにかく、私が考えることができる最良の方法file-rollerは、X環境を使用している場合、セットアップによっては単純なダブルクリックで機能する可能性がある場合、を使用してファイルを開くことです。次に、圧縮ファイルをダブルクリックして開き、編集することができます。
$ file-roller b3.zip
編集したファイルを保存すると、次のダイアログが表示されます。
このためのスクリプトも作成できますが、複数のファイルを含む圧縮アーカイブがある場合は複雑になります。それがあなたが必要とするものであり、私が何かを調理できるかもしれないかどうかを教えてください。

zip(簡単に参照できるオンラインバージョン:http : //linux.die.net/man/1/zip)のマニュアルページによると、zipコマンドには次のような-uフラグがあります。
既にzipアーカイブにあるバージョンよりも最近変更された場合にのみ、zipアーカイブの既存のエントリを置換(更新)します。
たとえば、標準のKDEテキストエディターを使用できます。