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.