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 .desktop
archivo.
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%S
parece 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
Exec
lí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
cron
donde ciertos caracteres (%
?) Necesitan ser eliminados?sources.list
archivo 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\%S
entonces debería funcionar.La cuestión
Un guión no es necesario.
El problema no es que un
.desktop
archivo no pueda ejecutar comandos con subcapas, ya quefunciona perfectamente bien en un
.desktop
archivo.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.desktop
archivo, 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
.desktop
archivos como este antes ...