2010년 5월 22일 토요일

유니코드 압축해제 in Linux

1. 압축 파일용 패키지 설치

어느 분이 멋진 펄 스크립트를 하나 올려주셨다. 이 스크립트를 설치하기 위해서는 추가적인 패키지를 하나 설치해야 한다.

$sudo apt-get install libarchive-zip-perl

이름을 보아하니, 펄에서 zip 파일을 다룰 수 있도록 하는 것인 듯 하다.

2. 스크립트 작성

이제, 준비가 끝났으니 스크립트를 작성해 보자.

$sudo vi /usr/local/bin/kozip

vi 편집기에서 아래와 같이 입력한다. 입력하기 전에 먼저 a 키나 i 키를 눌러 입력한 문자를 삽입하는 모드로 변경한 다음 입력해야 한다.

#!/usr/bin/perl
use strict;
use Encode;
use Archive::Zip;
my $zip = Archive::Zip->new();
$zip->read($ARGV[0]) == 0 or
die "$0: couldn't read $ARGV[0]\n";
foreach my $mref ($zip->members) {
my $n = decode("cp949",$mref->fileName);
print "Extracting $n\n";
$zip->extractMember($mref,$n) == 0 or
die "$0: couldn't extract $n\n";
}

입력이 모두 끝났으면 esc 키를 누르고 ZZ(shift누른 상태에서 z키 두 번)눌러서 저장한다.\

3. 실행준비

이제 kozip 이라는 스크립트를 실행하기 위해 준비해보자.

$sudo chmod 755 /usr/local/bin/kozip

준비 끝. 한글이름 파일이 깨져나오는 압축 파일은 kozip [압축파일] 이라고 입력하면 압축을 제대로 풀 수 있다.



일본어의 압축해제.

#!/usr/bin/perl
use strict;
use Encode;
use Archive::Zip;
my $zip = Archive::Zip->new();
$zip->read($ARGV[0]) == 0 or
die "$0: couldn't read $ARGV[0]\n";
foreach my $mref ($zip->members) {
my $n = decode("shiftjis",$mref->fileName);
print "Extracting $n\n";
$zip->extractMember($mref,$n) == 0 or
die "$0: couldn't extract $n\n";
}

sublime close without confirmation

  Close without confirm   Yes, you can just write a plugin to set the view as scratch and close it. Then create a keybinding for that c...