Lubuntu 16.04 - Openbox session
Я могу использовать терминал, чтобы открыть файл с меткой времени с помощью gedit
:
gedit ~/$(date +%Y%m%d%H%M%S).txt
Команду также можно использовать с помощью сочетания клавиш в 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>
Но я не могу сделать то же самое через строку Exec=
файла .desktop
.
Exec=sh -c 'gedit ~/$(date +%Y%m%d%H%M%S).txt'
просто создает файл с именем ~/.txt
Итак, как мне получить файл .desktop, чтобы делать то, что я хочу?
К сожалению, .desktop файлы не всегда называют подоболочку $()
команды путем, мы хотели бы их к. Один способ сделать это, что я нашел, должно было бы создать другой сценарий, который содержит команду подоболочки для открытия файла как этот.
Exec
строка была бы похожа:
Exec=/path/to/script
затем Ваш файл сценария содержал бы команду для открытия нового файла:
#!/bin/sh
gedit ~/$(date +%Y%m%d%H%M%S).txt
сценарий должен был бы также быть исполняемым файлом:
chmod +x /path/to/script
Hope это помогает!
Сценарий не необходим.
Проблема не это a .desktop
файл не может команды выполнения с подоболочками с тех пор
Exec=/bin/bash -c "echo $(date) > ~/out.txt"
работы, превосходные в a .desktop
файл.
Возясь с командой, я пришел к выводу что %
- символ вызывает проблему. У меня нет объяснения его, хотя, и до сих пор я не мог найти информацию о том, как решить или выйти из этого.
Я поэтому пошел, ища команду для получения времени, не используя подозреваемый символ.
Это приводит меня к Ruby
, который производит текущую дату и время от команды:
$ ruby -e 'puts Time.now.inspect'
2016-05-29 16:12:36 +0200
Когда мы редактируем вывод немного с awk
, удаляя пробелы и разделители, мы имеем, что мы хотим, и рабочая команда в .desktop
файл, так как мы не используем %
:
Exec=/bin/bash -c "gedit ~/$(ruby -e 'puts Time.now.inspect' | awk -F'[: -]' '{print $1$2$3$4$5$6}')"
Несомненно, команда может быть "очарована" немного, я, вероятно, отредактирую ответ немного сегодня или завтра.