Linuxでコマンド打ってMac側でファイルなどを開いたりする方法

な…何を言っているのかわからねーと思うが、要はsow(Start on Windows)Mac版のようなものです。

Linux側でコマンド打つとMac側で、

  • ファイル: 規定のアプリケーションで
  • ディレクトリ: Finderで
  • URL: 規定のブラウザで

開きます。

MacのターミナルでLinuxマシンにログインしていたり、MacLinuxを並べて使っていたりする場合に便利だと思います。

自分の場合は、メールをLinuxで読み書きしているので、添付ファイルをMac側で開いたり、あとはURLをMacのブラウザで開いたりするのに重宝してます。


で、どうやってるかというとそんなたいそうなことはしておらず、Macsshでアクセスしてopenコマンドを叩いているだけです。なので、

  • LinuxからMacsshアクセスできる
  • Linuxでsambaが動いていて、Macからそのボリュームをマウントできる

のが必須条件です。

あとはこんなシェル関数で、smb_base、mac_base、mac_hostを適宜書き換えればOK。

abspath() {
  _CWD=$(pwd)
  if [ -d "$1" ]; then
    \cd $1
    echo $(pwd -P)
  elif [ -f "$1" ]; then
    \cd $(dirname $1)
    echo $(pwd -P)/$(basename $1)
  else
    echo $1
  fi
  \cd $_CWD
}

som() {
  smb_base=/home/hirose31
  mac_base=/Volumes/hirose31
  mac_host=bagel

  file='.'
  if [ $# -eq 1 ]; then
    file=$1
  fi

  if [ -e $file -o -d $file ]; then
    target="$mac_base$(abspath $file | sed -e "s@${smb_base}@@")"
  else
    target=$file
  fi
  echo $target
  ssh $mac_host "open $target"
}

sshとsambaが動けばOKなので、LinuxじゃなくてもSolarisでも*BSDでもほかのでもいけると思います。