私はnautilusやdolphinのファイルセットに対してスクリプトを実行するのが簡単なLinuxから来ていますが、OSXでこれが簡単ではないことに驚きました。
できれば、ファインダー内の一部をCtrlキーを押しながらクリックし、スクリプトを選択し、進行状況やユーザーの操作を表示するターミナルウィンドウをポップアップ表示できるようにしたいと思います。
私はnautilusやdolphinのファイルセットに対してスクリプトを実行するのが簡単なLinuxから来ていますが、OSXでこれが簡単ではないことに驚きました。
できれば、ファインダー内の一部をCtrlキーを押しながらクリックし、スクリプトを選択し、進行状況やユーザーの操作を表示するターミナルウィンドウをポップアップ表示できるようにしたいと思います。
回答:
これを行う最も簡単な組み込み方法は、項目をFinderからターミナルウィンドウにドラッグするだけです。それらをドロップすると、ターミナルは(エスケープされた)パス名を「タイプ」します。その後、シェルのコマンドライン編集を使用して、残りのコマンドを入力できます。または、先に考えている場合は、最初にコマンドを入力してからアイテムをドラッグできます。
「最初のドラッグ」バージョン:
「先を考える」バージョン:
より自動化されたソリューションがさらに必要な場合は、(他の回答が示しているように)AppleScriptまたはAutomatorを使用できます。追加の「可動部品」はソリューションに多少の複雑さを追加する可能性があるため、1つ以上の自動化ソリューションの実装の複雑さに対して、上記のプロセス(手動でありながら柔軟性)の利点を比較検討する必要があります。
自動化の可能性には次のものがあります。
.command
ファイル(通常はシェルスクリプト、オープン中のFinderでそれを実行するためのターミナル)
これを直接行う方法はないと思います。探しているもののいくつかを実行する「Automator」アプリケーションを構築できます。これは、Automatorスタックがどのようになるかを示しています。
結果をアプリケーションとして保存し、ファインダーでファイルを選択し、右クリックして「アプリケーションから開く」を選択し、アプリケーションを選択します。(アプリケーションリストの下部にある[その他...]を選択する必要がある場合があります。)
このメソッドを使用してスクリプトを操作することはできませんが、ファイルをループしてシェルスクリプトを実行できます。
サービスは、osxがこの種のことを処理する方法です。
アプリケーションメニュー(この場合は「Finder」)にはServices
、現在のアプリケーションとその現在の状態に適用されるサービスを提供するメニューオプションが(ほぼ)常にあります。通常、状態は、選択されているオブジェクトのタイプ(テキスト、ファイル/フォルダーなど)です。
これらは、システム環境設定パネルで有効化、無効化、およびキーボードショートカットを割り当てることができます。このパネルは、これら3つの最後の3つだけで意味がありKeyboard
ます。
シェルスクリプトをFinderのファイル/フォルダーに適用するサービスを作成するには:
オートマトラを起動して、新しいService
タイプのドキュメントを作成します。
files or folders
)Get Selected Finder Items
アクションがあります。Run Shell Script
次のようになります。
オートマトルは、~/Library/Services
保存時にフォルダに自動的に配置し、Application -> Services
メニューまたはコンテキスト(右クリック)メニューから(ほぼ)すぐに使用できるようにします。
私もそれをやりたいと思っていましたが、上記の解決策とは異なり、シェルスクリプトの引用されたパラメーターを作成したかったのです。これらの他の方法は問題ありませんが、実際に必要なのは「ターミナルへのcommand-vだけ」を提案するようなものですpbpaste
。
Finderの選択ごとにファイルパラメータに展開されるスクリプトで使用できるシェル関数を作成したかったのです。私は魚の殻を使用していますが、これはいくぶんうまくいくようです:
function selection
osascript -e "tell application \"Finder\" to set s to the selection as alias list" -e "repeat with f in s" -e "set contents of f to POSIX path of f" -e "end repeat" -e "set AppleScript's text item delimiters to linefeed" -e "s as string"
end
のように(再び魚の殻で)使用されconvert-video (selection)
ます。
bash関数で| tr '\n' '\0' | xargs -0 printf "%q" {}
は、そのosascriptコマンドの最後のようなもので出力を引用する必要があるかもしれません。
(注:高度なAppleScriptとシェルスクリプトについて知っていることはすべて、過去2時間で再学習しましたが、明日には忘れられます)
上記の答えに基づいて、私はこのものを構築しました
https://github.com/commonpike/DropShell
基本的に、アプリにあるシェルファイルを、ドロップされたファイルを引数として呼び出すapplescriptアプリです。必要に応じてシェルスクリプトを変更できます。
commonpikeの答えに基づいて、ドロップされたすべてのファイルを一致する名前のシェルスクリプトにリダイレクトするAppleScriptを作成しました。AppleのScriptEditor内からアプリケーションとして保存し、script.shに一致するようにscript.appに名前を変更します https://github.com/PHolker/scripts/blob/master/DropScript.scpt