sinonimo - elixir tutorial
Ejecutar comandos de shell en Elixir (5)
Aquí es cómo ejecutar un comando de shell simple sin argumentos:
System.cmd("whoami", [])
# => {"lukas/n", 0}
Consulte la documentación sobre el System
para obtener más información.
Quiero ejecutar un programa a través de mi código de Elixir. ¿Cuál es el método para llamar a un comando de shell a una cadena dada? ¿Hay algo que no sea específico de la plataforma?
La biblioteca "devinus / sh" es otro enfoque interesante para ejecutar comandos de shell.
No puedo enlazar directamente a la documentación relevante pero está here bajo el módulo del System
cmd(command) (function) #
Specs:
cmd(char_list) :: char_list
cmd(binary) :: binary
Execute a system command.
Executes command in a command shell of the target OS, captures the standard output of the command and returns the result as a binary.
If command is a char list, a char list is returned. Returns a binary otherwise.
Puedes echar un vistazo en el Módulo Erlang os . Por ejemplo, cmd(Command) -> string()
debe ser lo que está buscando.
System.cmd / 3 parece aceptar los argumentos del comando como una lista y no está contento cuando intenta colar los argumentos en el nombre del comando. Por ejemplo
System.cmd("ls", ["-al"]) #works, while
System.cmd("ls -al", []) #does not.
Lo que de hecho sucede debajo es System.cmd / 3 calls: os.find_executable / 1 con su primer argumento, que funciona bien para algo como ls pero devuelve false para ls -al por ejemplo.
La llamada erlang espera una lista de caracteres en lugar de un binario, por lo que necesita algo como lo siguiente:
"find /tmp -type f -size -200M |xargs rm -f" |> String.to_char_list |> :os.cmd