एक .desktop फ़ाइल बनाएँ जो एक टर्मिनल में एक कमांड को खोलता और निष्पादित करता है


39

मैं जानना चाहूंगा कि Execएक नया टर्मिनल खोलने और उसमें एक शेल स्क्रिप्ट निष्पादित करने के लिए एक .desktop फ़ाइल की कमांड कैसे लिखें । शेल स्क्रिप्ट सभी उपयोगकर्ताओं द्वारा काम और सुलभ है। टर्मिनल से स्क्रिप्ट लॉन्च करते समय सब कुछ काम करता है, लेकिन जब यह एक .desktop फ़ाइल से स्क्रिप्ट लॉन्च करने की कोशिश नहीं करता है।

यहाँ कुछ संयोजन दिए गए हैं जिन्हें मैंने पहले ही आज़मा लिया है:

Exec=gnome-terminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=echo hello

.Desktop टर्मिनल विकल्प सही पर सेट है।

जवाबों:


46

आपकी डेस्कटॉप फ़ाइल की सामग्री दिखनी चाहिए ( पाठ संपादक का उपयोग करके .desktop फ़ाइल बनाने का तरीका देखें ):

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "bash -c 'echo hello;$SHELL'"
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Application;

या:

[Desktop Entry]
Version=1.0
Name=Test        
Comment=Test the terminal running a command inside it
Exec=bash -c 'echo hello;$SHELL'
Icon=utilities-terminal
Terminal=true 
Type=Application
Categories=Application;

पहले मामले में, Terminalफ़ील्ड को false(शायद आपकी अपेक्षाओं के विपरीत) सेट किया गया है और दूसरे मामले में सेट किया गया है true, लेकिन परिणाम दोनों मामलों में समान है।


1
पहला समाधान मेरे लिए काम करता है, इसलिए मैं इसके साथ रहता हूं। क्या आप जानते हैं कि $ SHELL क्यों होना चाहिए?
पैराडाइस्टसॉब

1
@ थिबोट हां, बिल्कुल
रादु राईडेनु

यह मेरे लिए काम करता है, हालाँकि मैं sudo के साथ एक कमांड लॉन्च करना चाहता हूं, फिर जब लॉन्चर का उपयोग किया जाता है तो यह पासवर्ड के लिए टर्मिनल आस्किंग-मी खोलता है। मैं एक कमांड कैसे लॉन्च करूं और इस व्यवहार को रोकूं?
E_Angel

1
@EliasAlves थोड़ा देर से, लेकिन इसे पढ़ने वाले किसी और के लिए: आप उन कमांड को चलाने की उम्मीद नहीं कर सकते हैं जिन्हें स्वयं को प्रमाणित करने के लिए बिना रूट विशेषाधिकार की आवश्यकता होती है। (जब तक आप स्पष्ट रूप से करने के लिए अपने सिस्टम को कॉन्फ़िगर नहीं करते हैं, जो आमतौर पर एक बुरा विचार है।)
code_dredd

मुझे लगता है कि सवाल यह है: यह सुनिश्चित करने के लिए कि टर्मिनल कैसे दिखाई देता है ताकि टर्मिनल गायब न हो जाए ताकि हम क्रेडेंशियल्स में प्रवेश कर सकें
RockScience

2
!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

उपरोक्त फ़ाइल करें। भूलना मतsudo chmod +x filename.sh


1
इस समाधान के साथ समस्या यह है, कि टर्मिनल तुरंत गायब हो जाता है और एक उपयोगकर्ता कुछ दर्ज करने में सक्षम नहीं है।
Paradiesstaub

मैं भूल गया कि इसे क्या कहा जाता है लेकिन मुझे लगता है कि टर्मिनल को बनाए रखने का एक विकल्प है। यह हो सकता हैhold
श्री ली

2

सीधे शब्दों में कहें

;$SHELL 

आपकी आज्ञाओं के अंत में।

मेरे लिए snapdकुछ भी नहीं है कि मैं रात में काम करने वाले नाश्ते को ताज़ा करने के लिए सिस्टम की पूरी बैंडविड्थ का उपयोग कर रहा हूं।

तो यह मेरे लिए एक .shफ़ाइल से जुड़ी फ़ाइल बनाने के लिए काम .desktopकरता है। फ़ाइल के
लिए सामग्री .shथी

echo <your password> | sudo -S systemctl stop snapd.service
sudo systemctl disable snapd.service;$SHELL

-S.shफ़ाइल की पहली पंक्ति में पासवर्ड भेजने के बिना कमांड अर्थ डायरेक्ट एक्जीक्यूट भेजने के STDINPUTलिए उपयोग किया जाता है sudo

.desktopफ़ाइल के लिए सामग्री थी:

[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "/scripts/disable_snap.sh"
Icon=terminal
Terminal=true
Type=Application
Categories=Application;

0

मैं यह करता हूँ। पाठ फ़ाइल की पहली पंक्ति है! # / Bin / bash

पाठ फ़ाइल की बाद की लाइनें कमांड (शेल स्क्रिप्ट) हैं।

फ़ाइल को कुछ इस रूप में सहेजें

फ़ाइल के गुणों को खोलें और प्रोग्राम के रूप में रन फ़ाइल को सक्षम करें।

अब, जब फ़ाइल को डबल क्लिक किया जाता है, तो मुझे इसे चलाने का विकल्प मिलता है।


2
यहां भी, टर्मिनल तुरंत गायब हो जाता है।
Paradiesstaub

यह मेरे लिए काम करता है कोई समस्या नहीं है। शेल स्क्रिप्ट बनाएं, पहली पंक्ति के रूप में लाइन जोड़ें! # / Bin / bash। फ़ाइल को निष्पादन योग्य के रूप में चलाने की अनुमति दें। टर्मिनल में डबल क्लिक और रन रन। यह सिर्फ काम करता है।
हैटमैन

1
क्या आप सुनिश्चित हैं कि शेल स्क्रिप्ट बंद होने के कारण टर्मिनल सिर्फ बंद नहीं हो रहा है? आपकी स्क्रिप्ट की शुरुआत में नींद 30 की है, क्या टर्मिनल 30 सेकंड तक खुला रहता है?
हैटमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.