Emacs上からのコマンド実行方法は多くありますが、Emacs Lispの関数から使うことに焦点をあてます。 基本パターン 一番単純な使い方 pwdを実行して結果を文字列で得ます。 (defun my-pwd () (interactive) (shell-command-to-string "pwd")) ;; (my-pwd) ; => "/Users/username\n" M-x my-pwdもしくはM-: (my-pwd)で実行できます。 (pwd: カレントディレクトリを返すコマンド) 非同期でコマンドを実行 Mac OSXのsayコマンドでAlexに喋ってもらいます。shell-command-to-stringで同期実行した場合はAlexが喋っている間にEmacsを動かすことができません。そこで非同期実行のasync-shell-commandを使って実行中もEmacsを動
![Emacs Lispでシェルコマンドを活用する - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1d0ba7dd675f822c122a4aab1952f54542a7ed21/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9RW1hY3MlMjBMaXNwJUUzJTgxJUE3JUUzJTgyJUI3JUUzJTgyJUE3JUUzJTgzJUFCJUUzJTgyJUIzJUUzJTgzJTlFJUUzJTgzJUIzJUUzJTgzJTg5JUUzJTgyJTkyJUU2JUI0JUJCJUU3JTk0JUE4JUUzJTgxJTk5JUUzJTgyJThCJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMzQTNDM0MmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz01NDg5Nzg2YmVjYTQ1OWU0OWJjZjlkMWI5MjU5OWE0Yg%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDBTaGluZ29GdWt1eWFtYSZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9ZjA2MDVhZDEzZDA2Y2NkZjE2ZjAyOTQ1MmYyNzg1MTI%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3D2661b551e62f9d6ac07ab1be0885458b)