web-dev-qa-db-ja.com

ターミナルでコマンドを開いて実行する.desktopファイルを作成します

.desktopファイルのExecコマンドを記述して新しいターミナルを開き、その中でシェルスクリプトを実行する方法を知りたい。シェルスクリプトは動作しており、すべてのユーザーがアクセスできます。ターミナルからスクリプトを起動するとすべてが機能しますが、.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端末オプションはtrueに設定されています。

37
Paradiesstaub

デスクトップファイルのコンテンツは次のようになります( テキストエディターを使用して.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(おそらくあなたの予想に反する)に設定され、2番目のケースではtrueに設定されますが、結果は両方とも同じです。

43
Radu Rădeanu
!#/bin/bash

gnome-terminal -e YOUR_COMMANDS

上記のファイルを作成します。 Sudo chmod +x filename.shを忘れないでください

2
Mr.Lee

単に追加する

;$Shell 

コマンドの最後に。

私のようにsnapdは夜のほとんどの時間にシステムの全帯域幅を使用してスナップを更新するものではありません。

そこで、これは.shファイルにリンクされた.desktopファイルを作成するのに役立ちました。
.shファイルのコンテンツは

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

-Sファイルの最初の行の.shは、STDINPUTSudoコマンドに送信するために使用され、パスワードを入力せずに直接実行することを意味します。

.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;
1
user225

私はこれをします。テキストファイルの最初の行は!#/ bin/bashです

テキストファイルの後続の行はコマンド(シェルスクリプト)です。

ファイルをsomething.shとして保存します

ファイルのプロパティを開き、実行ファイルをプログラムとして有効にします。

ファイルをダブルクリックすると、実行するオプションが表示されます。

0
hatterman