¿Cómo capturar la salida estándar de un comando de shell en elisp?
Quiero ejecutar un comando de shell dentro de Emacs y capturar la salida completa a una variable. ¿Hay alguna manera de hacer esto? Por ejemplo, me gustaría poder establecer hello-string
a "hello"
de la siguiente manera:
(setq hello-string (capture-stdout-of-shell-command "/bin/echo hello"))
¿Existe la función capture-stdout-of-shell-command
, y si es así, cuál es su nombre real?
2 answers
¿Cumple shell-command-to-string
su propósito?
Por ejemplo:
(shell-command-to-string "/bin/echo hello")
Espero que esto ayude.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-16 09:52:19
Tengo una sugerencia que hacer que amplía la respuesta de Ise Wisteria. Intenta usar algo como esto:
(setq my_shell_output
(substring
(shell-command-to-string "/bin/echo hello")
0 -1))
Esto debería establecer la cadena "hello"
como el valor de my_shell_output
, pero limpiamente. Usando (substring)
elimina el \n
final que suele ocurrir cuando emacs llama a un comando de shell. Me molesta en emacs que se ejecuta en Windows, y probablemente ocurre en otras plataformas también.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-29 01:52:13