Stempel waktu di Exec = baris file .desktop mungkin?

11

Lubuntu 16.04 - Sesi Openbox

Saya dapat menggunakan terminal untuk membuka file bertanda waktu dengan gedit:

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

Perintah juga dapat digunakan melalui pintasan keyboard di 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>

Tetapi saya tidak dapat melakukan hal yang sama melalui Exec=baris .desktopfile.

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

hanya membuat file bernama ~/.txt

Jadi bagaimana cara mendapatkan file .desktop untuk melakukan apa yang saya inginkan?

DK Bose
sumber
1
Saya tidak berpikir file .desktop dapat memanggil $()perintah sub-shell seperti itu. Saya pikir Anda memerlukannya untuk memanggil skrip lain yang berisi perintah sub-shell Anda untuk membuka file Anda.
Terrance
Tentu saya akan melakukannya. =)
Terrance
1
File HI .DKBose .desktop dapat menjalankan sub shell, karena Exec=/bin/bash -c "echo $(date) > ~/out.txt"berjalan dengan baik. yang +%Y%m%d%H%M%Stampaknya menjadi masalah. masih mengunyahnya.
Jacob Vlijm
Saya berasumsi bahwa hal pertama tidak berfungsi karena% sudah digunakan sebagai argumen baris perintah untuk exec di file .desktop Mungkin ada kemungkinan untuk menghindarinya, tetapi solusi lain tampaknya baik-baik saja. Saya ingin menambahkan ini sebagai komentar, tetapi akun saya di sini baru.
Mikael Kjær
1
Hai @DKenemukan jawaban saya :)
Jacob Vlijm

Jawaban:

10

Sayangnya, file .desktop tidak selalu memanggil $()perintah sub-shell seperti yang kita inginkan. Salah satu cara untuk melakukan ini yang saya temukan adalah dengan membuat skrip lain yang berisi perintah sub-shell untuk membuka file seperti itu.

The Execgaris akan terlihat seperti:

Exec=/path/to/script

maka file skrip Anda akan berisi perintah untuk membuka file baru Anda:

#!/bin/sh

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

skrip juga harus dapat dieksekusi:

chmod +x /path/to/script

Semoga ini membantu!

Terrance
sumber
@JacobVlijm Apakah masalah ini mirip dengan apa yang dilihat di cronmana karakter tertentu ( %?) Perlu dihapus?
DK Bose
@ DKBose Mungkin, saya masih mengutak-atiknya, dan saya pikir itu harus bekerja. Subshell saja tidak masalah.
Jacob Vlijm
@ JacobVlijm Anda mungkin benar. Saya telah menemukan bahwa saya suka menghindari perintah sub-shell di dalam file seperti ini, seperti di sources.listfile apt Anda tidak dapat mengganti nama rilis dengan $(lsb_release -sc)yang tidak berfungsi baik. Jika Anda mengetahuinya, saya ingin melihat bagaimana Anda melakukannya. :)
Terrance
Hai Terrance, berhasil! Lihat jawaban saya ...
Jacob Vlijm
@JacobVlijm coba gunakan +\%Y\%m\%d\%H\%M\%Smaka itu harus bekerja
Videonauth
8

Masalah

Sebuah skrip tidak diperlukan.

Masalahnya bukan karena .desktopfile tidak dapat menjalankan perintah dengan subkulit, karena

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

berfungsi dengan baik dalam .desktopfile.

Mengotak-atik perintah, saya sampai pada kesimpulan bahwa %-character yang menyebabkan masalah. Saya tidak punya penjelasan untuk itu, dan sejauh ini saya tidak dapat menemukan informasi tentang bagaimana menyelesaikan atau menghindarinya.

Karena itu saya pergi mencari perintah untuk mendapatkan waktu tanpa menggunakan karakter yang dicurigai.

Atau gunakan Ruby untuk tanggal & waktu

Ini menuntun saya ke Ruby, yang menghasilkan tanggal & waktu saat ini dari perintah:

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

Ketika kita mengedit output sedikit awk, menghapus spasi dan pembatas, kita hanya memiliki apa yang kita inginkan, dan perintah yang berfungsi dalam .desktopfile, karena kita tidak menggunakan %:

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


masukkan deskripsi gambar di sini

Catatan!

Tidak diragukan lagi, perintahnya bisa "dipesona" sedikit, saya mungkin akan mengedit jawabannya sedikit hari ini atau besok.

Yakub Vlijm
sumber
Bagus! Ini jelas merupakan cara lain untuk melakukannya. Saya tidak menginstal Ruby tetapi setelah diinstal, ini pasti berfungsi. Saya setuju bahwa mengutak-atik ini Anda bisa membuatnya terlihat seperti yang Anda inginkan. :)
Terrance
@Terrance ternyata menjadi pertanyaan yang menarik. Tidak pernah mengalami masalah dalam .desktopfile seperti ini sebelumnya ...
Jacob Vlijm
Aku juga tidak. Itu baik untuk diketahui, dan saya telah menemukan bahwa menjawab pertanyaan seperti ini sering kali kita belajar banyak sendiri juga. :)
Terrance
1
@Terrance 99% dari apa yang saya ketahui saya pelajari saat menjawab pertanyaan :)
Jacob Vlijm
1
Anda mengilhami saya untuk mengubah kata-kata saya dalam jawaban saya juga. Saya mengubah milik saya menjadi satu cara, bukan cara yang terbaik. Dan perubahan lain seperti itu sehingga orang tidak berpikir itu satu-satunya cara. Terima kasih! :)
Terrance