때로는 .zip 또는 .jar 파일을 변경해야하므로 일반적으로 파일을로 이동하고로 /tmp
모든 파일을 추출 unzip
하고 몇 개의 파일을 편집 한 다음 파일을 다시 압축합니다. 이것은 효과가 있지만 지루할 수 있습니다. 내가 명시 적으로 호출하지 않고 편집에 압축 파일의 파일 내부를 사용할 수있는 유틸리티 또는 쉘 스크립트 있는가 unzip
과 zip
(이 명령의 주위에 그것의 경우에도 단지 래퍼)?
때로는 .zip 또는 .jar 파일을 변경해야하므로 일반적으로 파일을로 이동하고로 /tmp
모든 파일을 추출 unzip
하고 몇 개의 파일을 편집 한 다음 파일을 다시 압축합니다. 이것은 효과가 있지만 지루할 수 있습니다. 내가 명시 적으로 호출하지 않고 편집에 압축 파일의 파일 내부를 사용할 수있는 유틸리티 또는 쉘 스크립트 있는가 unzip
과 zip
(이 명령의 주위에 그것의 경우에도 단지 래퍼)?
답변:
압축을 풀기 전에 아카이브의 파일 이름을 알고 있습니까? /tmp
zip의 압축을 풀고 편집하고 새로 고치는 기능을 만들 수 있습니다 .
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 )
짧은 대답 : NO.
이 래퍼 있다면, 당신은 하는 이 명령을 호출. 어쨌든, 내가 생각할 수있는 최선의 방법은 file-roller
X 환경에있는 경우 설정에 따라 간단한 더블 클릭으로 작동 할 수있는을 사용하여 파일을 여는 것입니다 . 그런 다음 압축 파일을 두 번 클릭하여 연 다음 편집 할 수 있습니다.
$ file-roller b3.zip
편집 한 파일을 저장하면 다음 대화 상자가 나타납니다.
이를 위해 스크립트를 만들 수도 있지만 여러 파일이 포함 된 압축 아카이브를 사용하면 복잡해집니다. 그것이 당신이 필요로하는 것이라면 알려 주시면 뭔가를 요리 할 수 있습니다.
짧은 pedantic 답변; 아니. 압축에 대해 생각하면 중복성을 사용하여 내부의 파일을 줄이므로 편집하면 아카이브 내의 전체 파일 (아카이브)이 변경됩니다.
이론적이지 않고 실용적이면서도 "수동으로 압축을 풀고 압축하고 싶지는 않습니다."사용할 수있는 도구가 있습니다. Linux의 ark 는 내가 사용한 것입니다. 또한 임시 파일보다 더 많은 작업이긴하지만 fuse-zip을 사용 하여 아카이브를 마운트 할 수도 있습니다.
fuse-zip
.
zip
(쉬운 참조를위한 온라인 버전 : http://linux.die.net/man/1/zip ) 매뉴얼 페이지에 따르면 , zip
명령에는 -u
다음과 같이 설명 하는 플래그가 있습니다.
Zip 아카이브의 기존 항목이 이미 Zip 아카이브의 버전보다 최근에 수정 된 경우에만 Zip 아카이브의 기존 항목을 교체 (업데이트)하십시오.
예를 들어 standart KDE 텍스트 편집기를 사용할 수 있습니다.