Я можу придумати три різні способи зробити це (перші два вкрадені десь з іншого місця, але я забуваю, де). Я використовую третій, який викликає скрипт оболонки з яблучного сценарію, тому що я хочу кожного разу відкривати нове вікно і тому, що це було найкоротшим.
На відміну від скрипту, вбудованого в 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. Створюйте нове вікно кожен раз за допомогою сценарію оболонки, який викликається з апплета
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) Bash псевдонім, щоб відкрити нове вікно пошуку поточного робочого каталогу у вашому терміналі
Додайте цей псевдонім у свій .bash_profile.
alias f='open -a Finder ./'
5. (BONUS) Змініть каталог у вікні вашого терміналу на шлях переднього вікна 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
}