Exec में टाइमस्टैम्प = .desktop फ़ाइल की रेखा संभव है?


11

लुबंटू 16.04 - ओपनबॉक्स सत्र

मैं समय-मुद्रांकित फ़ाइल खोलने के लिए टर्मिनल का उपयोग कर सकता हूं gedit:

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

कमांड का उपयोग ओपनबॉक्स में एक कीबोर्ड शॉर्टकट के माध्यम से भी किया जा सकता है।

<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 फ़ाइल प्राप्त करने के लिए मैं क्या चाहता हूँ?


1
मुझे नहीं लगता है कि .desktop फ़ाइल $()उस तरह के सब-शेल कमांड को कॉल कर सकती है। मुझे लगता है कि आपको एक अन्य स्क्रिप्ट को कॉल करने की आवश्यकता है जिसमें आपकी फ़ाइल खोलने के लिए आपका उप-शेल कमांड है।
टेरेन्स

ज़रूर मैं ऐसा करूँगा। =)
टेरेन्स

1
HI @DKBose .desktop फाइलें उप गोले चला सकती हैं, क्योंकि Exec=/bin/bash -c "echo $(date) > ~/out.txt"ठीक चलता है। इस +%Y%m%d%H%M%Sमुद्दे को लगता है। अभी भी उस पर चबाने।
जैकब व्लिजम

मुझे लगता है कि पहली चीज़ काम नहीं करती है क्योंकि% पहले से ही .desktop फ़ाइलों में निष्पादन के लिए कमांड लाइन तर्क के रूप में उपयोग किया जाता है। यह संभव है कि वे किसी भी तरह से बच सकें, लेकिन दूसरा समाधान ठीक लगता है। मैंने इसे एक टिप्पणी के रूप में जोड़ा होगा, लेकिन यहां मेरा खाता नया है।
मिकेल कजूर

1
हाय @DKBose मेरा जवाब देखें :)
याकूब Vlijm

जवाबों:


10

दुर्भाग्य से, .desktop फाइलें हमेशा उप-शेल $()कमांड को कॉल नहीं करती हैं जिस तरह से हम उन्हें पसंद करेंगे। ऐसा करने का एक तरीका जो मुझे मिला है वह एक और स्क्रिप्ट बनाने के लिए होगा जिसमें फ़ाइल को खोलने के लिए सब-शेल कमांड शामिल है।

Execरेखा दिखाई देगा:

Exec=/path/to/script

तब आपकी स्क्रिप्ट फ़ाइल में आपकी नई फ़ाइल खोलने की कमांड होगी:

#!/bin/sh

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

स्क्रिप्ट को भी निष्पादन योग्य बनाना होगा:

chmod +x /path/to/script

उम्मीद है की यह मदद करेगा!


@JacobVlijm क्या cronकुछ वर्णों ( %?) में से एक को देखने के समान मुद्दा है ?
डीके बोस

@DKBose बहुत अच्छी तरह से हो सकता है, मैं अभी भी इसके साथ चक्कर लगा रहा हूं, और मुझे लगता है कि इसे काम करना चाहिए। अकेले सदस्यता कोई समस्या नहीं है।
जैकब व्लिजम

@JacobVlijm आप शायद सही हैं। मैंने पाया है कि मैं इन जैसे फाइलों के भीतर उप-शेल कमांड से बचना पसंद करता हूं, जैसे कि sources.listएप की फाइल में आप रिलीज नाम को बदल नहीं सकते $(lsb_release -sc)क्योंकि यह काम भी नहीं करता है। यदि आप इसका पता लगाते हैं, तो मुझे यह देखना अच्छा लगेगा कि आपने यह कैसे किया। :)
टेरेंस

हाय टेरेंस, यह काम करता है! मेरा जवाब देखिए ...
जेकब वलीजम

@JacobVlijm का उपयोग करने का प्रयास करें +\%Y\%m\%d\%H\%M\%Sतो यह काम करना चाहिए।
वीडियोनौथ

8

समस्या

एक स्क्रिप्ट आवश्यक नहीं है।

मुद्दा यह नहीं है कि .desktopफ़ाइल उप-क्रम से कमांड नहीं चला सकती है, क्योंकि

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

एक .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}')"


यहाँ छवि विवरण दर्ज करें

ध्यान दें!

इसमें कोई शक नहीं है, कमांड को थोड़ा "मंत्रमुग्ध" किया जा सकता है, मैं शायद आज या कल के जवाब को थोड़ा संपादित करूंगा।


अच्छा! यह निश्चित रूप से इसे करने का एक और तरीका है। मैं रूबी स्थापित नहीं था, लेकिन एक बार स्थापित होने के बाद, यह निश्चित रूप से काम करता है। मैं इस बात से सहमत हूं कि इससे आप जिस तरह से चाहते हैं, उसे वैसा ही पा सकते हैं। :)
टेरेन्स

@ यह एक दिलचस्प सवाल है। .desktopफाइलों में इस तरह से पहले कभी नहीं भागे ...
याकूब व्लिजम

न ही मैं। यह जानना अच्छा है, और मैंने पाया है कि इन सवालों के जवाब देना कई बार हम खुद भी सीखते हैं। :)
टेरेंस

1
@ मुझे जो पता है, उसका 99% मैंने सवालों के जवाब देने पर सीखा :)
जैकब व्लिजम

1
आपने मुझे अपने उत्तर में मेरे शब्दांकन को बदलने के लिए प्रेरित किया। मैंने अपने आप को सबसे अच्छे तरीके के बजाय एक तरह से बदल दिया। और इस तरह के अन्य बदलाव इसलिए लोगों को नहीं लगता कि यह एकमात्र तरीका है। धन्यवाद! :)
टेरेन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.