Я могу придумать три разных способа сделать это (первые два украдены откуда-то еще, но я забываю, где). Я использую третий, который вызывает скрипт оболочки из appleScript, потому что я хочу каждый раз открывать новое окно, и потому что оно было самым коротким.
В отличие от скрипта, встроенного в OS X начиная с версии 10.10, все они открывают терминал в любом каталоге, являющемся текущим рабочим каталогом в окне поиска (т.е. вам не нужно выбирать папку, чтобы открыть ее).
Также имеется пара функций bash для завершения круга Finder> Terminal> Finder.
1. Используйте существующую вкладку или создайте новое окно терминала:
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. Повторно используйте существующую вкладку или создайте новую вкладку «Терминал»:
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. Создайте новое окно каждый раз через скрипт оболочки, вызываемый из appleScript.
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. (БОНУС) Bash псевдоним, чтобы открыть новое окно поиска для текущего рабочего каталога в вашем терминале
Добавьте этот псевдоним в ваш .bash_profile.
alias f='open -a Finder ./'
5. (БОНУС) Измените каталог в окне вашего терминала на путь переднего окна Finder
Добавьте эту функцию в ваш .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
}