Lubuntu 16.04 - Sessão Openbox
Posso usar o terminal para abrir um arquivo com registro de data e hora com gedit
:
gedit ~/$(date +%Y%m%d%H%M%S).txt
O comando também pode ser usado através de um atalho de teclado no 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>
Mas não posso fazer o mesmo através da Exec=
linha de um .desktop
arquivo.
Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'
apenas cria um arquivo chamado ~/.txt
Então, como obtenho um arquivo .desktop para fazer o que eu quero?
$()
comandos sub-shell como esse. Eu acho que você precisa chamar outro script que contém seu comando sub-shell para abrir seu arquivo.Exec=/bin/bash -c "echo $(date) > ~/out.txt"
funcionam bem. o+%Y%m%d%H%M%S
parece ser o problema. ainda mastigando.Respostas:
Infelizmente, os arquivos .desktop nem sempre chamam
$()
comandos sub-shell da maneira que gostaríamos. Uma maneira de fazer isso que encontrei seria criar outro script que contenha o comando sub-shell para abrir o arquivo assim.A
Exec
linha ficaria assim:seu arquivo de script conteria o comando para abrir seu novo arquivo:
o script também teria que ser executável:
Espero que isto ajude!
fonte
cron
que certos caracteres (%
?) Precisam ser explicados?sources.list
arquivo do apt, você não pode substituir o nome do release,$(lsb_release -sc)
pois isso também não funciona. Se você descobrir, eu adoraria ver como você conseguiu. :)+\%Y\%m\%d\%H\%M\%S
então ele deve funcionar.O problema
Um script não é necessário.
O problema não é que um
.desktop
arquivo não possa executar comandos com subshells, poisfunciona perfeitamente bem em um
.desktop
arquivo.Brincando com o comando, cheguei à conclusão de que o
%
caractere está causando o problema. Não tenho explicação para isso, e até agora não consegui encontrar informações sobre como resolver ou escapar disso.Por isso, procurei um comando para obter o tempo sem usar o personagem suspeito.
Como alternativa, use Ruby para a data e hora
Isso me levou a
Ruby
, que produz a data e hora atuais a partir do comando:Quando editamos um pouco a saída
awk
, removendo espaços e delimitadores, temos exatamente o que queremos e um comando de trabalho no.desktop
arquivo, pois não usamos%
:Nota!
Sem dúvida, o comando pode ser "encantado" um pouco, provavelmente vou editar a resposta um pouco hoje ou amanhã.
fonte
.desktop
arquivos como isso antes ...