Mac OS Xでは、.shファイルをダブルクリックすると、スクリプトを実行しているターミナルウィンドウがポップアップ表示され、スクリプトを操作できます。
Ubuntuでは、スクリプトをダブルクリックすると、その効果がすぐにわかります。スクリプトが実行されます。それだけで、その方法で起動すると、コマンドラインウィンドウは開きません。もちろん、ターミナルからスクリプトを実行することはできますが、サブフォルダーに編成されたScriptsフォルダーを用意し、スクリプトをダブルクリックしてターミナルウィンドウとして起動するのは良いことです。ランチャー(.desktop
file)が、これをグローバルに適用したい。
以下のスクリプトは、_gnome-terminal
_およびbash
Shellがどのように動作するかのいくつかのアイデアをまとめて、選択されたプログラムをグラフィカル端末で実行するための右クリックメニューエントリを作成します。もちろん、これはマウスを使用したダブルクリックではありませんが、使用可能で迅速なソリューションです。右クリックしてSキーを押すと、「スクリプト」サブメニューにすばやくジャンプして、さらに高速化できます。さらに、これは選択された複数のファイルで機能し、それぞれのファイルのターミナルウィンドウを開きます。
Nautilusで開いたディレクトリにテスタースクリプト(単に "Hello World"を出力して終了する)があるとします。このスクリプトに既に実行可能な権限があると仮定しましょう。ファイルを右クリックして、スクリプト-> run_with_terminal.pyを選択します
ターミナルウィンドウが表示され、適切に出力が行われ、ユーザーがEnterキーを押して終了するまで待機します。
GitHub でも利用可能
_#!/usr/bin/env python
from os import path
from sys import argv
from subprocess import call
for item in argv[1:]:
full_path = path.abspath('./' + item)
call(['gnome-terminal','-e',
"bash -c '" + full_path + ";read'"])
_
_#!/usr/bin/env python
from os import path
from sys import argv
from subprocess import call
for item in argv[1:]:
full_path = path.abspath('./' + item)
call(['gnome-terminal','-e',
"pkexec bash -c '" + full_path + ";read'"])
_
Gnomeターミナル(Ubuntuのデフォルトターミナル)では、_-e
_フラグを使用してコマンドを実行できますが、問題はコマンドの終了を待つことです。画面に何かを印刷してすぐに終了するスクリプトまたは実行可能ファイルがある場合は、ターミナルウィンドウが点滅して消えるだけです。
基本的に、1つのコマンドのみを実行できます。一方、_bash -c 'command1;command2;command3'
_を使用する場合、これはgnome-terminalによって1つのコマンドとして扱われますが、実際にはbash
シェルの子プロセスとしていくつかを実行できます。これは新しいものではなく、 ずっと前に表示 です。
最後に、ウィンドウがすぐに終了しないように、read
を読み取るstdin
コマンドを使用します。これの基本的な使用法は、ユーザーがEnterキーを押してウィンドウを閉じることができるようにすることです(IDEでのCプログラミングのgetch()
を使用することにより、一種の適応されたトリック)
ファイルマネージャー(別名Nautilus)では、選択したファイル/フォルダーを操作するカスタムスクリプト( `〜/ .local/nautilus/scriptsに配置)を使用できます。ファイルを右クリックして、スクリプトサブメニューで適切なエントリを選択するとアクセスできます。
したがって、このすべての知識をまとめると、上記の作業スクリプトが得られます。 Pythonは単に私が選択した言語でしたが、この同じ考えはPerl、Ruby、Shellスクリプトなどのいずれかに実装できました。