emacs elisp stdout capture

emacs - Cómo capturar la salida estándar de un comando de shell en elisp?



stdout capture (2)

Quiero ejecutar un comando de shell en Emacs y capturar la salida completa en una variable. ¿Hay alguna forma de hacer esto? Por ejemplo, me gustaría poder configurar 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?


¿Cumple la orden de shell-command-to-string tu propósito?
Por ejemplo:

(shell-command-to-string "/bin/echo hello")

Espero que esto ayude.


Tengo una sugerencia hecha 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. El uso de (substring) elimina el /n que se arrastra que tiende a ocurrir cuando emacs llama a un comando de shell. Me molesta que emacs se ejecute en Windows y probablemente también ocurra en otras plataformas.