Najprostszym wbudowanym sposobem na to jest przeciągnięcie elementów z Findera do okna Terminalu . Kiedy upuścisz je, Terminal „wpisze” ich (ucieczkowe) nazwy ścieżek. Następnie możesz użyć edycji wiersza poleceń powłoki, aby wprowadzić resztę polecenia. Lub jeśli myślisz o przyszłości, możesz najpierw wpisać polecenie, a następnie przeciągnąć elementy.
Wersja „najpierw przeciągnij”:
- Wybierz i przeciągnij niektóre elementy Findera do okna terminala, które pokazuje monit powłoki. Terminal wstawi (ucieczkowe) nazwy ścieżek.
- Wpisz Control+ A(przejdź do początku linii; ⌃A jest ustawieniem domyślnym, ale różni się w zależności od powłoki / konfiguracji).
- Wpisz polecenie i spację (zostaną wstawione przed nazwami ścieżek).
Wersja „z myślą o przyszłości”:
- W dowolnej kolejności wykonaj obie czynności:
- W oknie terminala wpisz początkową część polecenia i spację (wszystko oprócz nazw ścieżek).
- Wybierz niektóre elementy w Finderze .
- Przeciągnij wybrane elementy z Findera do okna Terminal, w którym wpisałeś polecenie.
- Aktywuj okno Terminal i naciśnij Return.
Możesz (jak wskazały inne odpowiedzi) przejść do AppleScript lub Automator, jeśli potrzebujesz bardziej zautomatyzowanego rozwiązania. Ponieważ dodatkowe „części ruchome” mogą zwiększyć złożoność rozwiązania, będziesz musiał porównać zalety powyższego procesu (ręczny, ale elastyczny) ze złożonością wdrożenia jednego lub więcej zautomatyzowanych rozwiązań.
Niektóre możliwości automatyzacji obejmują:
- aplikacja kroplowa AppleScript
- zwykły program AppleScript uruchamiany przez wbudowane menu skryptów lub inny program uruchamiający
- pobierz nazwy ścieżek z wyboru Findera
- przepływ pracy Automator, aplikacja lub wtyczka Finder
.command
plik wykonywalny (zwykle skrypt powłoki; otwórz w Finderze, aby uruchomić go w terminalu )
- pobierz ścieżki z wyboru Findera (przez osascript )
- jakieś narzędzie innej firmy, które już zapewnia potrzebną funkcjonalność
Usługi to sposób, w jaki osx obsługuje takie rzeczy.
W menu aplikacji (w tym przypadku „Finderze”) (prawie) zawsze jest
Services
dostępna opcja menu, która zapewni usługi mające zastosowanie do bieżącej aplikacji i jej bieżącego stanu. Zazwyczaj stan określa typ wybranego obiektu (tekst, pliki / foldery itp.).Mogą być włączona, wyłączona, a przypisane skróty klawiaturowe w systemie panelu preferencji, które ma sens tylko dla ostatniego z tych trzech,
Keyboard
.Aby utworzyć usługę, która stosuje skrypt powłoki do plików / folderów w Finderze:
Uruchom automatyzator i stwórz nowy
Service
dokument typu.files or folders
)Get Selected Finder Items
akcja.Run Shell Script
Powinno to wyglądać mniej więcej tak:
Automator automatycznie umieści go w
~/Library/Services
folderze podczas zapisywania, dzięki czemu będzie on dostępny (prawie) natychmiast za pośrednictwemApplication -> Services
menu lub menu kontekstowego (kliknięcie prawym przyciskiem).źródło
Na podstawie powyższych odpowiedzi zbudowałem tę rzecz
https://github.com/commonpike/DropShell
Zasadniczo aplikacja AppleScript, która wywołuje plik powłoki znajdujący się w aplikacji z usuniętymi plikami jako argumentami. W razie potrzeby możesz zmodyfikować skrypt powłoki.
źródło
W oparciu o odpowiedź commonpike stworzyłem AppleScript, który przekierowuje wszystkie upuszczone na niego pliki, do skryptu powłoki o pasującej nazwie. Po prostu zapisz jako aplikację z poziomu ScriptEditor firmy Apple i zmień nazwę na script.app, aby dopasować do swojego script.sh https://github.com/PHolker/scripts/blob/master/DropScript.scpt
źródło
W Mac OS X preferowanym językiem skryptowym jest Applescript. Możesz utworzyć kroplę (skrypt, który zrobi coś po upuszczeniu niektórych plików na jej ikonę), umieść ikonę skryptu (którą można zapisać jako aplikację) na pulpicie oraz przeciągnij i upuść pliki, które chcesz przekazać do scenariusz.
Alternatywnie możesz użyć akcji folderu. Możliwe jest powiązanie skryptu Applescript z folderem, który będzie wykonywany za każdym razem, gdy niektóre pliki (lub katalogi) zostaną upuszczone na folder.
źródło
Też chciałem to zrobić, jednak w przeciwieństwie do powyższych rozwiązań, chciałem stworzyć cytowane parametry dla skryptu powłoki. Te inne metody są w porządku, ale w pewnym sensie przypominają sugerowanie „po prostu Command-V w terminalu”, kiedy naprawdę chcesz
pbpaste
.Chciałem stworzyć funkcję powłoki, której będę mógł używać w moich skryptach, które rozszerzyły się na parametry pliku dla każdego wyboru Findera. Używam skorupy ryby i wydaje się, że to działa trochę:
Używany (ponownie w skorupce ryby) jak
convert-video (selection)
.W funkcji bash może być konieczne zacytowanie danych wyjściowych czymś takim jak
| tr '\n' '\0' | xargs -0 printf "%q" {}
na końcu tego polecenia osascript, co nie jest pewne.(uwaga: wszystko, co wiem na temat zaawansowanego skryptów AppleScript i powłoki, którego nauczyłem się w ciągu ostatnich 2 godzin i zapomnę do jutra)
źródło