Mi vengono in mente tre modi diversi per farlo (i primi due rubati da qualche altra parte ma dimentico dove). Uso il terzo, che chiama uno script di shell dallo scripting, perché voglio aprire una nuova finestra ogni volta e perché è il più breve.
A differenza dello script integrato in OS X almeno dal 10.10, tutti questi aprono il terminale in qualunque directory sia la directory di lavoro corrente nella finestra del Finder (cioè non è necessario avere una cartella selezionata per aprirlo).
Incluse anche un paio di funzioni bash per completare il cerchio Finder> Terminale> Finder.
1. Riutilizzare una scheda esistente o creare una nuova finestra Terminale:
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. Riutilizzare una scheda esistente o creare una nuova scheda Terminale:
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. Generare una nuova finestra ogni volta tramite uno script di shell chiamato da un comando apple
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 alias per aprire una nuova finestra di ricerca per la directory di lavoro corrente nel tuo terminale
Aggiungi questo alias al tuo .bash_profile.
alias f='open -a Finder ./'
5. (BONUS) Cambia la directory nella finestra del tuo terminale nel percorso della finestra del Finder anteriore
Aggiungi questa funzione al tuo .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
}