Exec zaman damgası = .desktop dosyası satırı mümkün mü?


11

Lubuntu 16.04 - Openbox oturumu

Terminali, zaman damgalı bir dosyayı açmak için kullanabilirim gedit:

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

Komut, Openbox'taki bir klavye kısayoluyla da kullanılabilir.

<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>

Ama aynısını Exec=bir .desktopdosya üzerinden yapamam .

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

sadece adlı bir dosya oluşturur ~/.txt

Peki istediğimi yapmak için bir .desktop dosyası nasıl alabilirim?


1
Ben .desktop dosya gibi alt kabuk $()komutları çağırabilir sanmıyorum . Dosyanızı açmak için alt kabuk komutunuzu içeren başka bir komut dosyasını çağırmanız gerektiğini düşünüyorum.
Terrance

Tabii bunu yapacağım. =)
Terrance

1
HI @DKBose .desktop dosyalar olabilir , çünkü alt kabukları çalıştırmak Exec=/bin/bash -c "echo $(date) > ~/out.txt"çalışır cezası. +%Y%m%d%H%M%Ssorun gibi görünüyor. hala çiğniyor.
Jacob Vlijm

İlk şeyin çalışmadığını varsayalım çünkü% zaten zaten .desktop dosyalarında exec için komut satırı argümanları olarak kullanılıyor. Onlardan bir şekilde kaçmak mümkün olabilir, ancak diğer çözüm iyi görünüyor. Bunu yorum olarak eklerdim, ancak buradaki hesabım yeni.
Mikael Kjær

1
Merhaba @DKBose cevabımı gör :)
Jacob Vlijm

Yanıtlar:


10

Ne yazık ki, .desktop dosyaları her zaman alt kabuk $()komutlarını istediğimiz şekilde çağırmaz . Bulduğum bunu yapmanın bir yolu, dosyayı böyle açmak için alt kabuk komutunu içeren başka bir komut dosyası oluşturmak olacaktır.

ExecÇizgi gibi görünecektir:

Exec=/path/to/script

komut dosyanız yeni dosyanızı açma komutunu içerir:

#!/bin/sh

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

betiğin de yürütülebilir olması gerekir:

chmod +x /path/to/script

Bu yardımcı olur umarım!


@JacobVlijm Sorun cron, belirli karakterlerin ( %?) Kaçması gerektiğinde gördüklerine benzer mi?
DK Bose

@DKBose Çok iyi olabilir, hala onunla uğraşıyorum ve işe yaraması gerektiğini düşünüyorum. Sadece deniz kabukları sorun değil.
Jacob Vlijm

@JacobVlijm Muhtemelen haklısınız. Ben böyle dosyaları içinde alt kabuk komutları önlemek gibi buldum, çok sources.listapt dosyasında olduğu $(lsb_release -sc)gibi ya da çalışmıyor gibi sürüm adını değiştiremezsiniz . Eğer çözerseniz, nasıl yaptığınızı görmek isterim. :)
Terrance

Merhaba Terrance, işe yarıyor! Cevabımı görün ...
Jacob Vlijm

@JacobVlijm kullanmayı deneyin +\%Y\%m\%d\%H\%M\%So zaman çalışması gerekir.
Videonauth

8

Sorun

Bir komut dosyası gerekli değildir.

Sorun, bir .desktopdosyanın alt kabuklarla komutları çalıştıramaması değil, çünkü

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

bir .desktopdosyada mükemmel çalışır .

Komuta ile %uğraşırken, -karakterin soruna neden olduğu sonucuna vardım . Bununla ilgili hiçbir açıklamam yok ve şimdiye kadar bunun nasıl çözüleceği veya kaçacağı hakkında bilgi bulamadım.

Bu nedenle zaman almak için bir komutun aramaya başladım olmadan şüpheli karakterini kullanarak.

Alternatif olarak, tarih ve saat için Ruby'yi kullanın

Bu beni Rubyşu andaki tarih ve saati komuttan üretir:

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

Biz çıkışı ile biraz düzenlerken awkçıkarmadan alanlarda ve sınırlayıcı,, istediğimiz sadece ne var, ve bir çalışma komutu .desktopkullandığımız vermediği için, dosyanın %:

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


resim açıklamasını buraya girin

Not!

Şüphesiz, komut biraz "büyülenebilir", muhtemelen bugün veya yarın cevabı biraz değiştireceğim.


Güzel! Bu kesinlikle başka bir yol. Ruby yüklemedim ama kurulduktan sonra bu kesinlikle işe yarıyor. Bununla uğraşmanın, istediğiniz şekilde görünmesini sağlayabileceğinize katılıyorum. :)
Terrance

@Terrance ilginç bir soru olduğu ortaya çıktı. Daha .desktopönce böyle dosyalarda bir sorunla karşılaşmadım ...
Jacob Vlijm

Ben de değil. Bilmek güzel ve bu gibi soruları cevaplamanın birçok kez kendimiz de çok şey öğrendiğimizi fark ettim. :)
Terrance

1
@Terrance Soruları yanıtlarken öğrendiğimin% 99'u :)
Jacob Vlijm

1
Cevabımdaki ifadelerimi değiştirmeme de ilham verdin. Benimkini en iyi yol yerine tek yol olarak değiştirdim. Ve bu tür diğer değişiklikler, insanlar bunun tek yol olduğunu düşünmüyor. Teşekkür ederim! :)
Terrance
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.