Este foro usa cookies
Este foro utiliza cookies para almacenar su información de inicio de sesión si está registrado y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Si Ud. continúa navegando, entenderemos que acepta todas las cookies.

Se almacenará una cookie en su navegador, independientemente de la elección, para evitar que se le vuelva a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

El foro antiguo se encuentra accesible desde https://foro.gambas-es.org en modo de solo lectura.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

[SOLUCIONADO]  ¿ Cómo encontrar el comando de consola que necesito para mi aplicación ?.
#11

(24-02-2021, 22:44)jguardon escribió:  Eso plantea el problema de que si distribuyes tu aplicación, no vas a saber qué shell tienen los diferentes usuarios. Entonces tu aplicación podría fallar si especificas un shell que no exista en esa máquina.

Se me ocurre que mediante alguna variable de entorno se puede averiguar y actuar en consecuencia, escogiendo entre varias opciones en el código. 

Shell de Gambas ejecuta uno por defecto: /bin/sh

Que es un enlace a "/bin/dash"

Eso esta diciendo que dash no soporta la instrucción de arriba.  Ahora bien. Podemos averiguar como tu dices el shell que esta usando
el usuario, pero eso no quiere decir que la instrucción vaya a funcionar o no con el shell activo del usuario.

Podemos averiguar que "shells" tiene instalada la máquina con:

Bash
  1. cat /etc/shells



Eso devuelve en este equipo lo siguiente:
Cita:# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/tmux

Y si se encuentra el que queremos, supongo que podremos seleccionarlo. Angel

¿ Qué opinas ?.

Fuente de la información:

Parte II - Shells disponibles en Linux

Saludos

“Nunca confíes en un ordenador que no puedas lanzar por la ventana” – Steve Wosniak
#12

Desisto a pegar un código nuevo si el editor se lo carga... Sad

Pruebo otra vez. He activado en las preferencias del editor de Gambas que al formatear elimine los espacios vacíos.
Voy a pegar una vez el código.

GAMBAS
  1. Public Sub Main()
  2.  
  3.   Dim ashelldisponibles As String[]
  4.   Dim contenidoarchivo As String
  5.   Dim ruta As String = "/etc/shells"
  6.   Dim orden As String = " which mam{e,e32,e64} "
  7.   Dim ashelladecuados As String[]
  8.  
  9.   contenidoarchivo = File.Load(ruta)
  10.  
  11.   'Convertimos cada línea de contenidoarchivo a un array con split, delimtando con final de línea, un caracter de escape que no existe y eliminamos los espacios vacíos
  12.   'Solo nos interesa obtener los elemementos del segundo indice hasta el último indice del array. Usamos la orden Extract
  13.  
  14.   ashelldisponibles = Split(contenidoarchivo, gb.NewLine, "'", True).Extract(1, -1)
  15.   ashelladecuados = OrdenesConSalida(orden, ashelldisponibles)
  16.  
  17.  
  18. Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]
  19.  
  20.   Dim salida As String
  21.   Dim posibilidades As New String[]
  22.  
  23.   For i = 0 To adisponibles.Max
  24.     'Asignamos cada uno de los disponibles
  25.     System.Shell = adisponibles
  26. [i]    Shell adisponibles[i] & orden To salida
  27.     If Not IsNull(salida) Then
  28.       Print "La orden" & orden & "funcionará con " & adisponibles
  29. [i]      posibilidades.Add(adisponibles[i])
  30.     Endif
  31.   Next
  32.   Return posibilidades
  33.  


 
A tomar por saco el código con las cursivas..[/i][/i][/i][/i]Cry

“Nunca confíes en un ordenador que no puedas lanzar por la ventana” – Steve Wosniak
#13

Probemos una cosa graciosa..

GAMBAS
  1. Public Sub Main()
  2.  
  3.   Dim ashelldisponibles As String[]
  4.   Dim contenidoarchivo As String
  5.   Dim ruta As String = "/etc/shells"
  6.   Dim orden As String = " which mam{e,e32,e64} "
  7.   Dim ashelladecuados As String[]
  8.  
  9.   contenidoarchivo = File.Load(ruta)
  10.  
  11.   'Convertimos cada línea de contenidoarchivo a un array con split, delimitando con final de línea, un caracter de escape que no existe y eliminamos los espacios vacíos
  12.   'Solo nos interesa obtener los elemementos del segundo indice hasta el último indice del array. Usamos la orden Extract
  13.  
  14.   ashelldisponibles = Split(contenidoarchivo, gb.NewLine, "'", True).Extract(1, -1)
  15.   ashelladecuados = OrdenesConSalida(orden, ashelldisponibles)
  16.  
  17.  
  18. Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]
  19.  
  20.   Dim salida As String
  21.   Dim posibilidades As New String[]
  22.  
  23.   For j = 0 To adisponibles.Max
  24.     'Asignamos cada uno de los disponibles
  25.     System.Shell = adisponibles[j]
  26.     Shell adisponibles[j] & orden To salida
  27.     If Not IsNull(salida) Then
  28.       Print "La orden" & orden & "funcionará con " & adisponibles[j]
  29.       posibilidades.Add(adisponibles[j])
  30.     Endif
  31.   Next
  32.   Return posibilidades
  33.  



ostias que no le gusta al editor de la comunidad que tenga que "i" entre corchetes!!!..madre mía!.
Fijaros que he cambiado la i por la j y ya no lo hace!. Lo interpreta como etiqueta para cursivas.

Por los derechos de la variable i en los arrays!.  

Saludos

“Nunca confíes en un ordenador que no puedas lanzar por la ventana” – Steve Wosniak
#14

Pues no sé cómo lo haces, pero a mi me sale bien. Desde donde copias el código? desde el IDE? Quizás la razón sea que lo pegas en el editor del foro de texto enriquecido, yo lo hago pulsando el botón 'Fuente HTML' que no interpreta etiquetas. Luego seleccionas el código y das a la gamba naranja para poner el lenguaje y sale todo bien (aunque si editas el mensaje, se vuelve a joder...).

GAMBAS
  1. Public Function OrdenesConSalida(orden As String, adisponibles As String[]) As String[]
  2.  
  3. Dim salida As String
  4. Dim posibilidades As New String[]
  5.  
  6. For i = 0 To adisponibles.Max
  7. 'Asignamos cada uno de los disponibles
  8. System.Shell = adisponibles[i]
  9. Shell adisponibles[i] & orden To salida
  10. If Not IsNull(salida) Then
  11. Print "La orden" & orden & "funcionará con " & adisponibles[i]
  12. posibilidades.Add(adisponibles[i])
  13. Return posibilidades
  14.  



Saludos

Por favor, usa el corrector ortográfico antes de pulsar el botón 'Enviar'
#15

(26-02-2021, 21:58)jguardon escribió:  Pues no sé cómo lo haces, pero a mi me sale bien. Desde donde copias el código? desde el IDE? Quizás la razón sea que lo pegas en el editor del foro de texto enriquecido, yo lo hago pulsando el botón 'Fuente HTML' que no interpreta etiquetas. Luego seleccionas el código y das a la gamba naranja para poner el lenguaje y sale todo bien (aunque si editas el mensaje, se vuelve a joder...).

Desde el propio editor de Gambas, seleccionar y copiar. Luego en el editor de la comunidad, el botón de la gamba roja, escribo gambas
y entre las dos etiquetas que aparecen, pego el código del código fuente.  Y vista previa.

No conocía esa forma de hacerlo, en parte parece más cómodo.

Ya nos contarás. Gracias.

Saludos

“Nunca confíes en un ordenador que no puedas lanzar por la ventana” – Steve Wosniak


Posibles temas similares…
Tema / Autor Respuestas Vistas Último mensaje

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)