Lubuntu 16.04 - Openbox-Sitzung
Ich kann das Terminal verwenden, um eine Datei mit Zeitstempel zu öffnen mit gedit
:
gedit ~/$(date +%Y%m%d%H%M%S).txt
Der Befehl kann auch über eine Tastenkombination in Openbox verwendet werden.
<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>
Aber ich kann nicht dasselbe über die Exec=
Zeile einer .desktop
Datei tun .
Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'
erstellt einfach eine Datei namens ~/.txt
Wie kann ich eine .desktop-Datei dazu bringen, das zu tun, was ich will?
$()
Befehle aufrufen kann . Ich denke, Sie brauchen es, um ein anderes Skript aufzurufen, das Ihren Sub-Shell-Befehl zum Öffnen Ihrer Datei enthält.Exec=/bin/bash -c "echo $(date) > ~/out.txt"
. das+%Y%m%d%H%M%S
scheint das Problem zu sein. kaute immer noch darauf.Antworten:
Leider rufen .desktop-Dateien Sub-Shell-
$()
Befehle nicht immer so auf, wie wir es möchten. Eine Möglichkeit, dies zu tun, besteht darin, ein anderes Skript zu erstellen, das den Sub-Shell-Befehl enthält, um die Datei so zu öffnen.Die
Exec
Linie würde aussehen wie:dann würde Ihre Skriptdatei den Befehl zum Öffnen Ihrer neuen Datei enthalten:
Das Skript müsste auch ausführbar sein:
Hoffe das hilft!
quelle
cron
wenn bestimmte Zeichen (%
?) Esacped werden müssen?sources.list
Datei von apt, durch die Sie den Versionsnamen nicht ersetzen können,$(lsb_release -sc)
da dies auch nicht funktioniert. Wenn Sie es herausfinden, würde ich gerne sehen, wie Sie es getan haben. :)+\%Y\%m\%d\%H\%M\%S
dann sollte es funktionieren.Die Angelegenheit
Ein Skript ist nicht erforderlich.
Das Problem ist nicht, dass eine
.desktop
Datei keine Befehle mit Subshells ausführen kann, dafunktioniert einwandfrei in einer
.desktop
Datei.Ich spielte mit dem Befehl herum und kam zu dem Schluss, dass das
%
Zeichen das Problem verursacht. Ich habe jedoch keine Erklärung dafür und konnte bisher keine Informationen darüber finden, wie ich das lösen oder entkommen kann.Ich suchte daher nach einem Befehl, um die Zeit zu ermitteln, ohne den verdächtigen Charakter zu verwenden.
Alternativ können Sie Ruby für Datum und Uhrzeit verwenden
Dies führte mich zu
Ruby
dem aktuellen Datum und der aktuellen Uhrzeit aus dem Befehl:Wenn wir die Ausgabe ein wenig bearbeiten
awk
, Leerzeichen und Trennzeichen entfernen, haben wir genau das, was wir wollen, und einen Arbeitsbefehl in der.desktop
Datei, da wir nicht verwenden%
:Hinweis!
Kein Zweifel, der Befehl kann ein bisschen "verzaubert" werden, ich werde die Antwort wahrscheinlich heute oder morgen ein bisschen bearbeiten.
quelle
.desktop