2011년 10월 31일 월요일

[Emacs] shell-command-on-region

shell-command-on-region 함수는 이름 대로 Emacs 버퍼 상의 내용을 특정 쉘 유틸리티로 던져(파이프)서 그 출력을 새로운 버퍼에 출력해 주는 함수다.

UNIX의 철학이 섞여있는 글이 될 것 같다. 윈도우를 선호하는 사용자가 많지만 아직도 구식인 UNIX(혹은 UNIX 클론)가 왜 대단한가에 대해서 한 가지 설득이 가능할지도 모르겠다.

다음 스크린샷 같은 내용을 생각해보자.

이제부터 하려는 행위는 버퍼 상의 내용을 알파벳 혹은 숫자 순으로 정렬하려는 것이다. Emacs자체에서 정렬 함수가 지원되는지는 모르겠지만, UNIX 유틸리티인 sort를 알고 있다면 이렇게 하는 것도 가능하다.

1. 영역을 선택한다. 처음부터 끝 까지 정렬시킬 내용을 전부.
2. sort를 실행한다: M-x shell-command-on-region RET sort RET
3. 결과가 출력된다.

결과가 나왔다. 나머지는 이 결과를 구워먹든 삶아먹든 하는 일만 남은 것 같다.

간단한 예이지만, 버퍼의 내용을 이용해 UNIX 유틸리티를 조합해서 일을 처리할 수 있다는 것을 설명할 수 있다. 그리고 UNIX의 미니멀리즘(단순함?)과의 융햡이 얼마나 대단한 일을 할 수 있나는 아주 작은 예도 설명할 수 있을 것 같다.

댓글 없음 :