리눅스를 주 운영체제로 사용하면서 불편한 것 중 하나는 hwp 파일을 여는 것이 불편하다는 점일 것이다. 아래 방법들을 주로 이용하게 될 텐데…
- 버추얼박스로 윈도우를 실행한 뒤 윈도우용 한글을 띄워서 연다. 한글 파일 하나 때문에 버추얼박스를 돌려야 하니 귀찮다.
- 네이버 오피스에 올린 다음 내용을 본다. 네이버에 접속해야 하니 귀찮다.
- 와인으로 한글 구버전을 설치한다. 매우 복잡하다.
- 한컴에서 내놓은 리눅스용 한글을 설치한다. 매우 복잡하다.
커맨드라인이 조금 익숙한 사람이라면 좀 더 간편한 방법을 사용할 수 있다. 바로 pyhwp라는 프로그램이다.
우선 설치하려면 python과 pip(python의 패키지 관리자)가 있어야 한다. 우분투라면 다음 명령어로 간단하게 설치할 수 있다.
sudo apt install python python-pip
아마 python은 기본으로 설치돼 있을 것이고, python-pip만 설치하면 될 거다.
그리고 pyhwp를 설치하려면 아래 명령어를 사용한다.
sudo pip install setuptools pycrypto pyhwp
pyhwp를 사용하기 위해 setuptools가 있어야 한다. pycrypto는 필수는 아니고 선택사항이다.
설치가 완료됐으면 hwp5odf, hwp5html, hwp5txt 명령을 사용할 수 있게 된다.
사실 bash 스크립트를 만들지 않고 hwp5odf file.hwp 형식으로 hwp를 odt로 변환한 뒤 그냥 libreoffice에서 여는 식으로 사용해도 된다. 여기부터 설명하는 bash 파일은 libreoffice로 여는 걸 좀더 쉽게 해 주는 것에 불과하다.
hwp 명령을 만들어 보자
이제 hwp5odf 명령을 이용해서 hwp filename.hwp라고 명령을 내리면 odt로 변환한 파일을 만들고 그걸 libreoffice에서 여는 bash 스크립트를 만들어 보자. 아래 스크립트를 복사해 hwp라는 이름의 파일을 만든다.
#!/bin/bash
if [ "$1" == "" ]
then
echo 'usage: hwp filename.hwp'
exit 1
fi
hwp5odt "$1"
libreoffice "$(basename -s '.hwp' "$1").odt" &
자, 저장을 한 뒤, 이 파일에 실행 권한을 준 뒤 /usr/local/bin 폴더로 옮긴다. 아래 명령어를 사용해도 되고, 그냥 파일 탐색기에서 해도 된다.
chmod a+x hwp
sudo mv hwp /usr/local/bin/
hwp라고 쳤을 때 usage: hwp filename.hwp라고 나오면 성공한 것이다. 그럼 앞으로는 hwp 파일을 열 때 hwp 파일명.hwp라고 명령을 내려 열면 된다. 그러면 파일명.odt라는 파일을 생성한 뒤, libreoffice가 그 파일을 연다.
실 사용 동영상
아래는 실사용 동영상이다. 화면 녹화가 잘 안 돼서 많이 깜빡거리긴 하는데, 대충 뭔지만 볼 수 있으면 되니까 노력을 더 들이지 않고 그냥 올렸다.
코드 설명
나름 코드를 이해할 수 있는 사람들을 위한 코드 설명이다. 일반 사용자라면 그냥 패스하라.
- 첫 줄의
#!로 시작하는 부분은 해시뱅이라고 불리는 줄인데, 이 문서의 파서를 지정해 주는 것이다. 여기서는/bin/bash를 지정한 것이다. - 둘째 줄의
if [ "$1" == "" ]는 bash의 if문이다.$1는 첫 번째 인자값을 말한다. 따옴표로 감싸 줘야 if문이 제대로 작동한다. - 셋째 줄의
then은 if문 안의 조건이 충족하면 실행할 부분을 지정하기 위해 적어 주는 키워드다. 무조건 써야 한다. - 넷째 줄의
echo로 시작하는 부분은 해당 내용을 화면에 출력하라는 명령이다. 인자값, 즉 파일명이 들어오지 않았을 때 사용법을 출력하고 끝내기 위해서 넣은 부분이다. - 다섯째 줄의
exit 1은 스크립트를 종료하라는 명령이다.1은 정상 종료되지 않았다는 뜻으로 넣어 준다. bash는 명령이 정상적으로 실행되면0을 리턴하고 그렇지 않으면 다른 값을 리턴하는 게 규칙이다. - 여섯째 줄의
fi는 if문이 끝났음을 뜻한다. - 일곱째 줄의
hwp5odt "$1"은 넘긴 파일을hwp5odt프로그램을 이용해서 odt로 변환하는 부분이다. 커맨드라인에서 내리는 명령과 같다.$1이 첫 번째 인자값으로 넘긴 문자열이라는 것만 알면 된다. 파일명에 띄어쓰기가 있을 때를 대비해 따옴표로 감싸야 한다는 것을 잊지 말자. 이 때 작은 따옴표로 감싸면 첫 번째 인자값이 아니라 그냥$1이라는 문자열을 가리키게 되므로 큰 따옴표로 감싸야 한다는 것을 기억하라. - 여덟번째 줄의
libreoffice $(basename -s '.hwp' "$1").odt &는 libreoffice로 변환한 odt 파일을 열라는 부분이다.$()로 감싼 부분은 bash로 명령을 실행한 뒤 리턴값을 집어넣어 문자열로 넣는 부분이다.basename은 파일 경로에서/로 나눈 것들 중 맨 마지막 부분을 리턴하는 명령이다.basename /home/mytory라고 넘기면mytory를 리턴한다.basename /home/mytory/file.hwp라고 명령을 내리면file.hwp를 리턴한다.basename의-s옵션은suffix의 약자로, 접미사를 떼는 옵션이다.basename -s '.hwp' /home/mytory/file.hwp라고 명령을 내리면 결과값이 될file.hwp에서.hwp를 뗀file만 리턴한다.- 그래서
$(basename -s '.hwp' "$1")부분은 결국$1에서 확장자를 제외한 파일명으로 치환된다. 만약 파일명이file.hwp였다면file이라는 문자열로 치환되는 것이다. $1이file.hwp라면 결국$()로 감싼 부분이 치환된 후에 전체 명령은hwp5odt file.odt &가 되는 것이다.&를 마지막에 붙이면 프로세스가 백그라운드에서 실행된다. 그래서 터미널이 libreoffice에 붙잡히지 않고 계속 사용할 수 있는 상태가 된다.










댓글 남기기