Data / ora in Exec = riga del file .desktop possibile?


11

Lubuntu 16.04 - Sessione Openbox

Posso usare il terminale per aprire un file timestamp con gedit:

gedit ~/$(date +%Y%m%d%H%M%S).txt

Il comando può anche essere utilizzato tramite una scorciatoia da tastiera in 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>

Ma non posso fare lo stesso tramite la Exec=riga di un .desktopfile.

Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'

crea solo un file chiamato ~/.txt

Quindi, come posso ottenere un file .desktop per fare quello che voglio?


1
Non credo che il file .desktop possa richiamare $()comandi della shell secondaria in questo modo. Penso che ne abbia bisogno per chiamare un altro script che contiene il comando della sotto-shell per l'apertura del file.
Terrance

Sicuro che lo farò. =)
Terrance

1
HI @DKBose I file .desktop possono eseguire sub shell, poiché Exec=/bin/bash -c "echo $(date) > ~/out.txt"funziona bene. l' +%Y%m%d%H%M%Ssembra essere il problema. ancora masticandolo.
Jacob Vlijm,

Presumo che la prima cosa non funzioni perché% è già utilizzato come argomento della riga di comando per exec nei file .desktop Potrebbe essere possibile sfuggirli in qualche modo, ma l'altra soluzione sembra a posto. Lo avrei aggiunto come commento, ma il mio account qui è nuovo.
Mikael Kjær,

1
Ciao @DKBose vedi la mia risposta :)
Jacob Vlijm,

Risposte:


10

Sfortunatamente, i file .desktop non sempre chiamano i $()comandi della shell secondaria come vorremmo. Un modo per farlo è quello di creare un altro script che contenga il comando sub-shell per aprire il file in questo modo.

La Execlinea sarebbe simile a:

Exec=/path/to/script

quindi il tuo file di script conterrà il comando per aprire il tuo nuovo file:

#!/bin/sh

gedit ~/$(date +%Y%m%d%H%M%S).txt

lo script dovrebbe anche essere eseguibile:

chmod +x /path/to/script

Spero che questo ti aiuti!


@JacobVlijm Il problema è simile a quello che si vede in croncui alcuni personaggi ( %?) Devono essere evacuati?
DK Bose,

@DKBose Potrebbe benissimo essere, ci sto ancora giocando e penso che dovrebbe funzionare. I sub-shell da soli non sono un problema.
Jacob Vlijm,

@JacobVlijm Probabilmente hai ragione. Ho scoperto che mi piace evitare i comandi della sotto-shell all'interno di file come questi, proprio come nel sources.listfile di apt non è possibile sostituire il nome di rilascio in $(lsb_release -sc)quanto non funziona neanche. Se lo capisci, mi piacerebbe vedere come hai fatto. :)
Terrance

Ciao Terrance, funziona! Vedi la mia risposta ...
Jacob Vlijm,

@JacobVlijm prova a usarlo, +\%Y\%m\%d\%H\%M\%Squindi dovrebbe funzionare.
Videonauth,

8

Il problema

Non è necessario uno script.

Il problema non è che un .desktopfile non può eseguire comandi con subshells, da allora

Exec=/bin/bash -c "echo $(date) > ~/out.txt"

funziona perfettamente bene in un .desktopfile.

Giocherellando con il comando, sono giunto alla conclusione che il %personaggio sta causando il problema. Non ho alcuna spiegazione per questo, e finora non sono riuscito a trovare informazioni su come risolverlo o evitarlo.

Quindi sono andato alla ricerca di un comando per ottenere il tempo senza usare il personaggio sospetto.

In alternativa, usa Ruby per la data e l'ora

Questo mi porta a Ruby, che produce la data e l'ora correnti dal comando:

$ ruby -e 'puts Time.now.inspect'
2016-05-29 16:12:36 +0200

Quando modifichiamo un po 'l'output awk, rimuovendo spazi e delimitatori, abbiamo proprio quello che vogliamo e un comando funzionante nel .desktopfile, poiché non usiamo %:

Exec=/bin/bash -c  "gedit ~/$(ruby -e 'puts Time.now.inspect' | awk -F'[: -]' '{print $1$2$3$4$5$6}')"


inserisci qui la descrizione dell'immagine

Nota!

Senza dubbio, il comando può essere "incantato" un po ', probabilmente modificherò un po' la risposta oggi o domani.


Bello! Questo è sicuramente un altro modo per farlo. Non avevo installato Ruby ma una volta installato, funziona sicuramente. Sono d'accordo che giocherellare con questo potrebbe far sì che appaia nel modo desiderato. :)
Terrance

@Terrance risulta essere una domanda interessante. Non ho mai avuto problemi con .desktopfile come questo prima ...
Jacob Vlijm,

Neanche io. È bene saperlo e ho scoperto che rispondendo a domande come queste molte volte impariamo molto anche noi stessi. :)
Terrance

1
@Terrance Il 99% di quello che so di aver appreso nel rispondere alle domande :)
Jacob Vlijm,

1
Mi hai ispirato a cambiare la mia formulazione anche nella mia risposta. Ho cambiato il mio in un modo invece che nel modo migliore. E altri cambiamenti simili in modo che la gente non pensi che sia l'unico modo. Grazie! :)
Terrance
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.