日暮途遠(Linux)

Just another WordPress.com site

システムコマンドを実行する(shell-command-to-string)

leave a comment »

参考:Emacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニア

システムのコマンドを呼び出し実行する関数は他にもありますが、引数を順序で指定しなければならなかったり、面倒だったと思います。これは引数に指定した文字列が、そのままコマンドの実行として使われるみたいです。パイプも使えていますし、試していませんが、リダイレクトもできそうです。

以下は、scratchのバッファで、関数を実行してみました。関数自体はC-x C-eで評価しているので、結果の文字列は身にバッファに出ています。コマンドの実行結果の文字列を変数にセットし、その変数はC-jで、その場で評価しているので、返却値が文字列で返されています。

Stringという関数名をみても、コマンドが返す文字列の取得を目的にした関数のはずですが、副作用でメールを送信することもできました。


;; This buffer is for notes you don't want to save, and for Lisp evaluation.
 ;; If you want to create a file, visit that file with C-x C-f,
 ;; then enter the text in that file's own buffer.

(setq file-list (shell-command-to-string  "cd tmp/magit-test; ls -al"))

file-list
 "合計 28
 drwxrwxr-x 3 ak ak 4096  6月 19 22:32 .
 drwxrwxr-x 7 ak ak 4096  6月 20 11:59 ..
 drwxrwxr-x 8 ak ak 4096  6月 19 23:59 .git
 -rw-rw-r-- 1 ak ak  231  6月 19 21:37 index.html
 -rw-rw-r-- 1 ak ak   21  6月 19 21:50 xxxxxxxxxx.txt
 -rw-rw-r-- 1 ak ak   15  6月 19 22:25 株価が下がる中mmm.txt
 -rw-rw-r-- 1 ak ak   25  6月 19 22:32 大筋一致した.txt
 "

(shell-command-to-string "cd tmp; ls -al | mail -s \"test mail\" アカウント名@gmail.com")
 

Written by 廣野秀樹

2012年6月22日 @ 8:41 午前

カテゴリー: Emacs, Emacs-Lisp

コメントを残す