本文使用Makdown编辑
通常系统中打开一个文件有好多种方法,编辑也是。例如你要打开OmniGraffle来画个图(suppose you are working on the Mac OS X)
1.可以使用命令open来启动应用:open -a OmniGraffle [FiletoEdit]
;
2.各种文件管理器,默认的Finder, 还有PathFinder, DCommander, Transmit等,只要能调用Finder的open,save的也可以,Dock;
3.当然AppleScript/JavaScript, Shell(bash,zsh)也可以;
4.Alfred, Spotlight这类搜索类的;
----Access Hidden Files or Folders
但是,有些文件和文件夹是隐藏的,Finder考虑到这个提供了『⌘+⇧+G』,这样只要你输入正确的路径就可以在finder中显示,这样可以通过点击继续任务,常用的
~/Library
,$HOME/
下的其他隐藏的文件夹都可以访问了
还有,通过defaults write ...
来配置来显示:defaults write com.apple.finder AppleShowAllFiles -bool true
来显示所以隐藏的defaults write com.apple.finder AppleShowAllFiles -bool false
了关闭
还可以直接修改文件和文件夹的flag来弄:chflags nohidden ***FileorFoldertoOperate***
But, 每次都有敲入这么多字符太麻烦,所以立马会想到用Shell的alias
alias showAll='defaults write com.apple.finder AppleShowAllFiles -bool true'
alias hideAll='defaults write com.apple.finder AppleShowAllFiles -bool false'
添加到.bash_profile, source .bash_profile,刷新Finder之后
But, 每次都有打开Terminal,尤其配置多了之后启动起来超级慢
更换iTerm 2
But, 这个配置是全局的,很多时候我只需要显示某一个或几个文件和文件夹,所以想到chflags
chflags nohidden Afile
chflags nohidden BFolder
chflags nohidden CFolder
...
...
# after
chflags hidden Afile
chflags hidden BFolder
chflags hidden CFolder
...
OK啦,但是很多时候打开Terminal,ls -la
, ls -l
, open
, vim
,发现并不需要显示或者隐藏什么
而打开Finder吧,有时候又需要显示隐藏
----
Object
所以想到Mac自带的任务流程工具 AppleScript/Automator,
写个Service添加到Folder
- 选中文件夹
- 可以选择『隐藏该文件夹』「Hide This」『显示该文件夹下所有隐藏的文件(夹)』「Show All Under」
- 允许选择多个文件夹
- 可以隐藏文件
# Add a Finder Service
下面实现一下常用的几个
- 右键任何一个文件夹,选择Services->Create Service
- 搜selected,拖Get Selected Finder Items到右边panel
- 搜shell,拖Run Shell Script到右边panel
- Shell选/bin/bash,Pass Input选 as arguments
4.1 隐藏 「hide」
for item in $@;do
# doesn't matter it is a file or a directory
echo $item
chflags hidden "$item"
done
4.2 显示文件夹下的所以隐藏项「unhide under」
for folder in $@;do
echo $folder
if test -d $folder;then
for dir in $folder/*;do
if test -d $dir;then
chflags nohidden "$dir"
cat "$dir\n" >> .aHiddenItems
fi
done
fi
done
4.3 隐藏文件夹下之前隐藏的「hide under」
for folder in $@;do
if test -d $folder;then
echo $folder
if [ -d $folder/.aHiddenItems ];then
for item in `cat $folder/.aHiddenItems`;do
chflags hidden "$item"
done
fi
fi
done
- Step和Run测试没有错误
5.『⌘+S』保存,会自动保存到~/Library/Services/下 - 现在可以用了