Lubuntu 16.04 - sesión de Openbox
Puedo usar el terminal para abrir un archivo con marca de tiempo con gedit:
gedit ~/$(date +%Y%m%d%H%M%S).txt
El comando también se puede usar a través de un atajo de teclado en Openbox.
<keybind key="W-4"> # gedit time-stamped file
<action name="Execute"><command>sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'</command></action>
</keybind>
Pero no puedo hacer lo mismo a través de la Exec=línea de un .desktoparchivo.
Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'
solo crea un archivo llamado ~/.txt
Entonces, ¿cómo consigo un archivo .desktop para hacer lo que quiero?

$()comandos de sub-shell como ese. Creo que lo necesita para llamar a otro script que contiene su comando de sub-shell para abrir su archivo.Exec=/bin/bash -c "echo $(date) > ~/out.txt"funciona bien. El+%Y%m%d%H%M%Sparece ser el problema. Todavía lo estoy masticando.Respuestas:
Desafortunadamente, los archivos .desktop no siempre llaman a
$()comandos de sub-shell de la manera que nos gustaría que lo hicieran . Una forma de hacer esto que he encontrado sería crear otro script que contenga el comando sub-shell para abrir el archivo de esa manera.La
Execlínea se vería así:entonces su archivo de script contendría el comando para abrir su nuevo archivo:
el script también debería ser ejecutable:
¡Espero que esto ayude!
fuente
crondonde ciertos caracteres (%?) Necesitan ser eliminados?sources.listarchivo de apt no se puede reemplazar el nombre de la versión,$(lsb_release -sc)ya que tampoco funciona. Si lo resuelves, me encantaría ver cómo lo hiciste. :)+\%Y\%m\%d\%H\%M\%Sentonces debería funcionar.La cuestión
Un guión no es necesario.
El problema no es que un
.desktoparchivo no pueda ejecutar comandos con subcapas, ya quefunciona perfectamente bien en un
.desktoparchivo.Jugueteando con el comando, llegué a la conclusión de que el
%personaje está causando el problema. Sin embargo, no tengo ninguna explicación, y hasta ahora no pude encontrar información sobre cómo resolverlo o escapar de eso.Por lo tanto, fui a buscar un comando para obtener el tiempo sin usar el personaje sospechoso.
Alternativamente, use Ruby para la fecha y hora
Esto me lleva a
Ruby, que produce la fecha y hora actual del comando:Cuando editamos un poco la salida
awk, eliminando espacios y delimitadores, tenemos justo lo que queremos y un comando de trabajo en el.desktoparchivo, ya que no usamos%:¡Nota!
Sin duda, el comando se puede "encantar" un poco, probablemente editaré la respuesta un poco hoy o mañana.
fuente
.desktoparchivos como este antes ...