Mac OSXドックから実行するシェルスクリプトを設定するにはどうすればよいですか?ショートカットを作成するだけで、エディターでファイルが開くようです。編集のために開くのではなく、実行するようにどこかに設定する必要があるフラグはありますか?
「シェルスクリプトの実行」という単一の手順でAutomatorワークフローを作成できます。
次にFile > Save As
を選択し、ファイル形式を「アプリケーション」に変更します。アプリケーションを開くと、シェルスクリプトステップが実行され、コマンドが実行され、完了後に終了します。
これの利点は、本当にが簡単で、ユーザー入力(たとえば、ファイルの束を選択する)を非常に簡単に取得し、シェルスクリプトの入力に渡すことができることです(stdinに) 、または引数として)。
(Automatorは/Applications
フォルダにあります!)
ターミナルウィンドウが必要ない場合は、example.sh
をexample.sh.app/Contents/MacOS/example.sh
に移動するだけで、任意の実行可能ファイルをアプリケーションにすることができます。他のアプリケーションと同様にドックにアプリケーションを配置し、クリックするだけで実行できます。
端末ウィンドウを表示する必要がある場合、簡単な解決策はありません。おそらくApplescriptで何かをすることができますが、それはあまりきれいではありません。
OSX Mavericksの場合:
シェルスクリプトを実行可能にします。
chmod +x your-Shell-script.sh
スクリプトの名前を.app
接尾辞に変更します。
mv your-Shell-script.sh your-Shell-script.app
スクリプトの名前を.sh
サフィックスに変更します。
mv your-Shell-script.app your-Shell-script.sh
ドックのスクリプトをクリックすると、ターミナルウィンドウがポップアップしてスクリプトを実行します。
ボーナス:スクリプトの完了時にターミナルを閉じるには、exit 0
を最後に追加し、ターミナル設定を「 this SO answer 。
私はこれが古いことを知っていますが、他の人に役立つ場合に備えて:
スクリプトを実行する必要があり、Abyss Knightが言ったように実行できる結果を確認できるようにターミナルをポップアップする場合、拡張子を.commandに変更します。ダブルクリックすると、ターミナルウィンドウが開き、実行されます。
ただし、オートマトンまたはappleScriptから実行するにはこれが必要でした。これを取得して新しいターミナルを開くには、「シェルスクリプトの実行」から実行したコマンドは「myShellScript.commandを開く」で、新しいターミナルで開きました。
スクリプトが実行可能で拡張子を持たない限り、そのままDockの右側(ドキュメント側)にドラッグでき、エディターを開く代わりにクリックするとターミナルウィンドウで実行されます。
拡張子(foo.shなど)が必要な場合は、Finderのファイル情報ウィンドウに移動して、その特定のスクリプトのデフォルトアプリケーションを(TextEdit、TextMate、コンピューターに設定されているデフォルト.shファイル)をターミナルに。テキストエディタで開くのではなく、単に実行されます。繰り返しますが、Dockの右側にドラッグする必要があります。
このスレッドが役立つと思います: http://forums.macosxhints.com/archive/index.php/t-70973.html
言い換えると、拡張子を.commandに変更するか、AppleScriptを作成してシェルを実行できます。
Joeが述べたように、Shellスクリプトを作成してから、Shellスクリプトを呼び出すためのapplescriptスクリプトを作成すると、これを達成でき、非常に便利です。
お気に入りのテキストエディターでシェルスクリプトを作成します。たとえば、次のようにします。
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(これは、モノフレームワークを使用してw32実行可能ファイルを実行します)
私の例では「StartKeepass.sh」のシェルスクリプトを保存します
AppleScript Editorを開き、シェルスクリプトを呼び出します
do Shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges
do Shell script
-外部シェルコマンドを呼び出すapplescriptコマンド"sh ...."
-これは、ステップ1で作成したシェルスクリプト(フルパス)です(直接コマンドを実行することもできます。シェルスクリプトを省略して、ここでモノコマンドを実行することもできます)user name
-特定のユーザーとしてコマンドを実行するapplescriptを宣言します"<enter username here>
-"josh"を使用してユーザー名(引用符を保持)に置き換えますpassword
-パスワードをAppleScriptに宣言します"<enter password here>"
-「mypass」からパスワードに置き換えます(引用符を保持)with administrative privileges
-管理者として実行することを宣言しますアップルスクリプトをfilename.scptとして保存します。私の場合はRunKeepass.scpt
名前を付けて保存... applescriptを実行し、ファイル形式をアプリケーションに変更すると、私の場合はRunKeepass.appになります
アプリファイルをアプリフォルダーにコピーします
スクリプトエディタで:
do Shell script "/full/path/to/your/script -with 'all desired args'
"
アプリケーションバンドルとして保存します。
スクリプトの効果を得るだけであれば、これで問題ありません。 STDOUTまたはSTDERRは表示されません。