2011년 5월 4일 수요일

[Emacs] 쉘 커맨드 결과 가져오기

Emacs에서 간혹 쉘에서 실행한 결과 내용을 가져오고 싶을 때가 있다. 이 경우 물론 shell-mode등으로 실행시켜서 결과를 가져와도 되긴 하지만...

(shell-command-to-string "bash -c \"ls ~/.emacs.d\"")
이 예는 shell-command-to-string이라는 함수를 이용해 bash를 통해서 쉘 커맨드를 실행시키는 예이다. 하지만 이 함수는 문자열을 리턴시키는 함수인 관계로, 이걸 실행시키면 미니버퍼에 ls ~/.emacs.d를 실행시킨 결과가 잠시 나타나는 것 뿐 다른 현상을 나타나지 않는다.

물론 버퍼에 직접 써 넣을 수도 있다. 현재 버퍼에 내용을 추가하는 insert 함수를 함께 쓰면 가능하다.
(insert (shell-command-to-string "bash -c \"ls ~/.emacs.d\""))
scratch버퍼에 위 라인을 적고 커서를 라인 끝으로 이동시켜서 C-x C-e를 통해 실행시키면 다음 스크린샷 처럼 이 라인 끝 부분부터 결과물이 붙어버린다.
그런데 실제로 이런 식으로 사용할 일은 별로 없을 것 같다.

대신 이런 함수는 외부 유틸리티를 이용하는 elisp 스크립트를 작성할 때 큰 도움이 될 것 같다. 단지 그것 뿐... -_-

댓글 없음 :