Mogę wymyślić trzy różne sposoby na zrobienie tego (pierwsze dwa skradzione gdzieś indziej, ale zapominam gdzie). Korzystam z trzeciego, który wywołuje skrypt powłoki z applecript, ponieważ chcę za każdym razem otwierać nowe okno i ponieważ było ono najkrótsze.
W przeciwieństwie do skryptu wbudowanego w OS X od co najmniej 10.10, wszystkie otwierają terminal w jakimkolwiek katalogu, w którym znajduje się bieżący katalog roboczy w oknie wyszukiwarki (tzn. Nie musisz mieć wybranego folderu, aby go otworzyć).
Zawiera także kilka funkcji bash, aby uzupełnić Finder> Terminal> Okrąg Findera.
1. Użyj ponownie istniejącej karty lub utwórz nowe okno Terminal:
tell application "Finder" to set myDir to POSIX path of (insertion location as alias)
tell application "Terminal"
if (exists window 1) and not busy of window 1 then
do script "cd " & quoted form of myDir in window 1
else
do script "cd " & quoted form of myDir
end if
activate
end tell
2. Ponownie użyj istniejącej karty lub utwórz nową kartę Terminal:
tell application "Finder" to set myDir to POSIX path of (insertion location as alias)
tell application "Terminal"
if not (exists window 1) then reopen
activate
if busy of window 1 then
tell application "System Events" to keystroke "t" using command down
end if
do script "cd " & quoted form of myDir in window 1
end tell
3. Wygeneruj nowe okno za każdym razem za pomocą skryptu powłoki wywoływanego z skryptu jabłkowego
tell application "Finder"
set myDir to POSIX path of (insertion location as alias)
do shell script "open -a \"Terminal\" " & quoted form of myDir
end tell
4. (BONUS) Alias Bash, aby otworzyć nowe okno wyszukiwarki dla bieżącego katalogu roboczego w twoim terminalu
Dodaj ten alias do swojego .bash_profile.
alias f='open -a Finder ./'
5. (BONUS) Zmień katalog w oknie terminala na ścieżkę przedniego okna Findera
Dodaj tę funkcję do swojego .bash_profile.
cdf() {
target=`osascript -e 'tell application "Finder" to if (count of Finder windows) > 0 then get POSIX path of (target of front Finder window as text)'`
if [ "$target" != "" ]; then
cd "$target"; pwd
else
echo 'No Finder window found' >&2
fi
}