light log

学んだこととか

Finderの不可視ファイル表示/非表示を切り替えるスクリプト書いた

Finderの不可視ファイル表示/非表示を切り替えるスクリプト書いた

Macではデフォルトで、ドットファイルや「ゴミ箱」、「ライブラリ」などのファイルやフォルダは非表示になっている。ドットファイルはFinderから触ることはないので、多くの場合は非表示でも困らないのだが、たまに不便になることもある。

それでこれらのファイルを表示したいと思っても、そのための設定はGUI上には用意されておらず、ターミナルでコマンドを叩く必要がある。

そのコマンドは、「mac 非表示ファイル」とかでググるとたくさん出てくるけれど、以下のようなもの。

defaults write com.apple.finder AppleShowAllFiles -bool TRUE # 表示する
defaults write com.apple.finder AppleShowAllFiles -bool FALSE # 非表示にする

自分は昔これを知ってからずっと「表示」にしていたんだけど、ドットファイルが増えてきたりするとFinderが散らかってしょうがない。そして、やはり冒頭に書いたように、少なくとも自分の場合は、多くの場合にFinderからこれらのファイルが見える必要はなかった。

基本は「非表示」にしておいて、必要なときだけ「表示」にしたい。

ということで、切り替えを簡単にできるシェルスクリプトを書いた。ただの上のコマンドのラッパのようなもの。シェルスクリプトをほとんど書いたことないので勉強も兼ねて。

toggleShowAllFiles

#!/bin/sh

show_usage()
{
  echo "usage: ${0//*\/} show | hide"
}

exec_command()
{
  command="defaults write com.apple.finder AppleShowAllFiles -bool $1"
  echo "exec: $command"
  $command
}

if [ $# -lt 1 ]
then
  show_usage
  exit 1
fi


case $1 in
  show)
    exec_command TRUE
    ;;
  hide)
    exec_command FALSE
    ;;
  *)
    show_usage
esac

show_usage()内の${0//*\/}は、このスクリプトのフルパスからディレクトリ部分を除いて、ファイル名だけにしている。正直読みにくいので、もっと可読性の高い素敵な方法があれば書き直したい。

こんな感じで使う。

# 表示
$ toggleShowAllFiles show
exec: defaults write com.apple.finder AppleShowAllFiles -bool TRUE
# 非表示
$ toggleShowAllFiles hide
exec: defaults write com.apple.finder AppleShowAllFiles -bool FALSE

そんなに頻繁に使うものでもないけど、毎回ググるよりは楽になった。

しかし、シェルスクリプトってやたらとスペースの扱いが厳密で、ちょっと戸惑った。

--

ちなみに、defaultsコマンド実行後にkillall Finderが必要ってなってる記事もあるけど、少なくともOS X 10.10 Yosemiteでは不要。そのとき開いてるFinderのウィンドウを閉じて開き直すだけでいい。

参考