MacOS Finder で開いているディレクトリにターミナル上で移動する Bash 関数

MacOS のターミナルで、カレントディレクトリを Finder で開きたい時は、$ open . と叩けば良い。

その逆で、「Finder で開いているディレクトリに、ターミナル上で移動したい」時のコマンドを用意する。

Finder 上からそのディレクトリのターミナルを開く際は、ディレクトリを右クリックして「フォルダに新規ターミナルタブ」を選べばよいが、新規ターミナルタブも開くことなく、cd する感覚で遷移する。

function cdf() {
  local 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  # お好みで「&& ls」まで入れても良いかも
  else
    echo 'No Finder window found' >&2
  fi
}

コレを ~/.bashrc にでも書いておいて source しておく。

Finder で適当なディレクトリを開いておき、その状態でターミナルにて cdf と叩けば、そのディレクトリに cd してくれる。

osascript とかいうコマンドが Finder のパスを拾っているのだが、コレは AppleScript が叩けるコマンドらしい。