web-dev-qa-db-ja.com

OS X Dockからシェルスクリプトを実行しますか?

Mac OSXドックから実行するシェルスクリプトを設定するにはどうすればよいですか?ショートカットを作成するだけで、エディターでファイルが開くようです。編集のために開くのではなく、実行するようにどこかに設定する必要があるフラグはありますか?

153
Wilco

「シェルスクリプトの実行」という単一の手順でAutomatorワークフローを作成できます。

次にFile > Save Asを選択し、ファイル形式を「アプリケーション」に変更します。アプリケーションを開くと、シェルスクリプトステップが実行され、コマンドが実行され、完了後に終了します。

これの利点は、本当にが簡単で、ユーザー入力(たとえば、ファイルの束を選択する)を非常に簡単に取得し、シェルスクリプトの入力に渡すことができることです(stdinに) 、または引数として)。

(Automatorは/Applicationsフォルダにあります!)

Example workflow

175
dbr

ターミナルウィンドウが必要ない場合は、example.shexample.sh.app/Contents/MacOS/example.shに移動するだけで、任意の実行可能ファイルをアプリケーションにすることができます。他のアプリケーションと同様にドックにアプリケーションを配置し、クリックするだけで実行できます。

端末ウィンドウを表示する必要がある場合、簡単な解決策はありません。おそらくApplescriptで何かをすることができますが、それはあまりきれいではありません。

44
Jeremy Banks

OSX Mavericksの場合:

  1. シェルスクリプトを作成します。
  2. シェルスクリプトを実行可能にします。

    chmod +x your-Shell-script.sh
    
  3. スクリプトの名前を.app接尾辞に変更します。

    mv your-Shell-script.sh your-Shell-script.app
    
  4. スクリプトをOSXドックにドラッグします。
  5. スクリプトの名前を.shサフィックスに変更します。

    mv your-Shell-script.app your-Shell-script.sh
    
  6. Finderでファイルを右クリックし、「情報を見る」オプションをクリックします。
  7. ウィンドウの下部で、ターミナルで開くようにシェルスクリプトを設定します。

ドックのスクリプトをクリックすると、ターミナルウィンドウがポップアップしてスクリプトを実行します。

ボーナス:スクリプトの完了時にターミナルを閉じるには、exit 0を最後に追加し、ターミナル設定を「 this SO answer

21
stiemannkj1

私はこれが古いことを知っていますが、他の人に役立つ場合に備えて:

スクリプトを実行する必要があり、Abyss Knightが言ったように実行できる結果を確認できるようにターミナルをポップアップする場合、拡張子を.commandに変更します。ダブルクリックすると、ターミナルウィンドウが開き、実行されます。

ただし、オートマトンまたはappleScriptから実行するにはこれが必要でした。これを取得して新しいターミナルを開くには、「シェルスクリプトの実行」から実行したコマンドは「myShellScript.commandを開く」で、新しいターミナルで開きました。

17
Jason Tholstrup

スクリプトが実行可能で拡張子を持たない限り、そのままDockの右側(ドキュメント側)にドラッグでき、エディターを開く代わりにクリックするとターミナルウィンドウで実行されます。

拡張子(foo.shなど)が必要な場合は、Finderのファイル情報ウィンドウに移動して、その特定のスクリプトのデフォルトアプリケーションを(TextEdit、TextMate、コンピューターに設定されているデフォルト.shファイル)をターミナルに。テキストエディタで開くのではなく、単に実行されます。繰り返しますが、Dockの右側にドラッグする必要があります。

7
Jason Coco

このスレッドが役立つと思います: http://forums.macosxhints.com/archive/index.php/t-70973.html

言い換えると、拡張子を.commandに変更するか、AppleScriptを作成してシェルを実行できます。

5
willasaywhat

Joeが述べたように、Shellスクリプトを作成してから、Shellスクリプトを呼び出すためのapplescriptスクリプトを作成すると、これを達成でき、非常に便利です。

シェルスクリプト

  1. お気に入りのテキストエディターでシェルスクリプトを作成します。たとえば、次のようにします。

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (これは、モノフレームワークを使用してw32実行可能ファイルを実行します)

  2. 私の例では「StartKeepass.sh」のシェルスクリプトを保存します

Apple Script

  1. 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-管理者として実行することを宣言します

.APPを作成する

  1. アップルスクリプトをfilename.scptとして保存します。私の場合はRunKeepass.scpt

  2. 名前を付けて保存... applescriptを実行し、ファイル形式をアプリケーションに変更すると、私の場合はRunKeepass.appになります

  3. アプリファイルをアプリフォルダーにコピーします

4
CJoshDoll

スクリプトエディタで:

do Shell script "/full/path/to/your/script -with 'all desired args' "

アプリケーションバンドルとして保存します。

スクリプトの効果を得るだけであれば、これで問題ありません。 STDOUTまたはSTDERRは表示されません。

4
Joe McMahon