우선 처음 글을 올리기에 인사 먼저 드립니다.
지금까지는 윈도우 쪽 계열 프로그램 만 해오다가… 우분투를 사용한지는 이제 한 달 정도 되어가는 것 같고…
이 게시글은 제목 그대로 한글이 깨지는 zip 화일을 노틸러스의 오른쪽 버튼 메뉴를 통해 압축을 풀기 위한 방법입니다.
이제부터 왜 이런 뻘 짓을 하게 되었는지 이야기 드리겠습니다
[color=#8000BF:1r2rfhyi] 아는 사람으로 부터 zip 으로 압축된 화일을 하나 받았습니다. [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 아무 생각 없이 노틸러스에서 압축을 푸니… 한글로 된 화일명이 깨지더군요… [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 구글링 시작…[/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 크게 두 가지의 해결책이 나옴…[/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 첫째는 문제가 발생하지 않는 unzip 예전 버전으로 되돌려놓고 사용하기 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 두번째는 어떤 분이 Perl로 작성해 놓으신 kozip을 통해 터미널을 띄워서 압축풀기. [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 예전 버전 쓰는건 맘에 안내키고… kozip을 설치했습니다. [/color:1r2rfhyi]
kozip 설치 관련 글타레 : [url:1r2rfhyi]http://ubuntu.or.kr/viewtopic.php?p=40719#p40719[/url:1r2rfhyi]
kozip 설치 관련 글타레 2 : [url:1r2rfhyi]http://ubuntu.or.kr/viewtopic.php?f=18&t=7861[/url:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 터미널 창에서 압축 풀기가 귀찮았던 저는 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 어떻게 하던 노틸러스에서 kozip을 실행시켜보기 위해… 다시 구글링 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 역시 뭔가가 나옴… 아래는 노틸러스의 사용자 컨텍스트 메뉴를 설정할 수 있는 플러그 인입니다. [/color:1r2rfhyi]
참고 사이트
[url:1r2rfhyi]http://helpdeskgeek.com/linux-tips/add-shortcuts-to-right-click-context-menu-in-ubuntu/[/url:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 다음 명령으로 설치… [b:1r2rfhyi]sudo apt-get install nautilus-actions[/b:1r2rfhyi] [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 참고 사이트에 나온 그림과 버전이 틀려서 그런지… 많이 헷갈렸음. [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 설치되면 메뉴의 [시스템]>[기본설정]>[노틸러스 동작설정] 을 통해 실행할 수 있음 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 나머지는 전부 디폴트를 했고 제가 설정한 부분은 아래 이미지 화일에 있습니다. [/color:1r2rfhyi]
[color=#FF0000:1r2rfhyi] 설정한 뒤 로그아웃 한 뒤 다시 들어와야 설정된 것이 동작됩니다. [/color:1r2rfhyi]
[color=#FF0000:1r2rfhyi] 노틸러스를 종료한 뒤 다시 실행시키면 된다는데 저는 안되더군요. -_- [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 여기까지 하고 이젠 되겠지… 하고 기대에 부푼 마음으로 해당 zip화일을 클릭한 후 오른쪽 버튼을 눌러서 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] kozip을 실행했더니… 압축풀린 화일들이 어디로 갔는지 보이지가 않더군요… [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 찾아보니 제 계정 밑으로 압축 풀려버리는 사태가 발생… [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] perl이란 언어를 생전 처음 접하는 저로써는… -_- [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 조금 버겁긴 했지만… 이리 저리 찾아보고 삽질한 덕에야… [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 해당 zip 화일을 클릭해서 오른쪽 버튼을 누른 뒤 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] "한글 압축 깨짐 화일 풀기" 라는 사용자 컨텍스트 메뉴를 실행하면 [/color:1r2rfhyi]
[color=#8000BF:1r2rfhyi] 해당 zip 화일 명으로 디렉토리를 만들어 주고… 해당 디렉토리로 압축을 푸는 동작을 볼 수 있었습니다. [/color:1r2rfhyi]
kozip을 아래 코드로 대치해주세요…
오늘 저녁에 perl을 공부하면서 이리 저리 참조해서 만든 코드라… -_-;;
실력자 분들이 보시기에 답답한 코드일 수도 있습니다.
무언가 이상하면 지적 부탁 드립니다.
그럼 이만…
고임
[code:1r2rfhyi]
#!/usr/bin/perl
use strict;
use Encode;
use Archive::Zip;
use Cwd ‘abs_path’;
use File::Basename;
my $full_path = abs_path($ARGV[0]); # 해당 화일의 풀패스를 얻어옴..
나중에 해당 zip 화일 명으로 폴더를 만들어 넣기 위해 확장자를 뺀 화일 이름을 구함
my ($fileNameOnly, $directory, $ext) = fileparse($full_path, ‘.[^.]*’);
chdir $directory ; # 경로가 계정 위치가 되는 것을 막기 위해 해당 zip화일이 있는 곳으로 경로 변경
my $zip = Archive::Zip->new();
$zip->read($ARGV[0]) == 0 or
die "$0: couldn’t read $ARGV[0]\n";
만일 zip 화일 명이 한글일 경우 이런 식으로 안하면 디렉토리 글자가 깨짐 이유는 모름 -_-;
my $ExtractFileName;
my $FileNameUTF8 = decode("utf-8",$fileNameOnly);
foreach my $mref ($zip->members)
{
my $n = decode("cp949",$mref->fileName);
print "Extracting <$n>\n";
$ExtractFileName = $FileNameUTF8 . "/" . $n; # 디렉토리 밑에다가 압축 화일을 넣기 위해 이름 설정
$zip->extractMember($mref,$ExtractFileName) == 0 or
die "$0: couldn’t extract $n\n";
}
[/code:1r2rfhyi]